Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
abramov_s_a_lekcii_o_slozhnosti_algoritmov.doc
Скачиваний:
136
Добавлен:
11.05.2015
Размер:
2.74 Mб
Скачать

§ 3. Асимптотические оценки (два примера)

25

8

а)

P

5

2

P

P

8

б)

P

5

2

P

P

P1 P1

Рис. 2. a) Точки, упорядоченные по величине угла АР1ОР, £ = 1,2,..., п; б) вер­шина Р4 — первая вдавленная вершина в последовательности Р2,Р3, ...,^8.

Вдавленные вершины можно обнаружить просмотром точек Р2,Р3, ...,Рп,Р1: переходя от вершины Pt к вершине Pi+1, i = 2,3, ... ...,п 1, можно сразу проверять, принадлежит ли Pt треугольнику Pi_1OPi+1, а при переходе от Рп к Р1 проверять, принадлежит ли Рп треугольнику Рп_1ОР1. Если да, то Pt или соответственно Рп, удаляет­ся, но после этого надо проверить, не окажется ли теперь вдавленной предыдущая из неудаленных вершин, — на рис. 2б видно, что после удаления Р4 вершина Р3 становится вдавленной. Возможно, что удале­ние одной вдавленной вершины повлечет удаление нескольких уже рассмотренных вершин, но вершина Р1 никогда не будет удалена. При i < п 1 после Pi+1 мы рассматриваем Pi+2

и вновь пытаемся

освободиться от вдавленных вершин с меньшими номерами и т.д. Последний шаг — переход от Pn к P1 и завершающая попытка осво­бодиться от вдавленных вершин.

Затраты этапа построения точек P и O ограничены значением c1n, где c1 — некоторая константа.

Если используется сортировка, сложность которой по числу срав­нений есть r(n), то в алгоритме Грэхема может потребоваться не бо­лее c2r(n) операций для сортировки точек по величине угла, констан­та c2 отражает затраты на сравнение двух углов и сравнение рассто­яний от O до двух данных точек.

Покажем, что описанный процесс удаления вдавленных вершин потребует затрат, не превосходящих по величине c3n, где c3 —некото­рая константа (в частности, учитывающая затраты на проверку при­надлежности точки треугольнику). В самом деле, если переход от Pi к Pi+1 сопровождается проверкой вдавленности некоторого числа vi

26 Глава 1. Сложности алгоритмов как функции числовых аргументов

вершин, то число удаленных при этом вершин равно vi 1. Но об-

n

щее число удаленных вершин меньше n. Поэтому ^(vi - 1) <n, и, как следствие,

n J] vi < 2n. (3.1)

Это означает, что сложность TG(n) алгоритма Грэхема по общему числу арифметических операций и сравнений не превосходит c'r(n) + + c"n, где c' и c" суть некоторые положительные константы. Слож­ность любой сортировки массивов длины n по числу сравнений не может быть меньше n/2, так как каждый элемент должен пройти хо­тя бы одно сравнение и в каждом сравнении участвуют два элемента. Имеем

TG(n) s= c'r{n) + c"n = r{n) c' + c"r nnт) «S r{n)(c' + 2c"),

откуда TG(n) = O{r{n)). При этом у нас нет пока достаточных основа­ний для утверждения, что Tс{n) = 6(r(n)), потому что нет, например, оснований утверждать, что после выбора P и O может действитель­но потребоваться r{n) сравнений обсуждаемого типа (ведь мы можем еще выполнять арифметические операции; почему бы не предполо­жить, что, прибегая к ним, можно существенно снизить число срав­нений при сортировке), и мы пока можем утверждать только то, что TG(n) = fi(n); эту тему мы отложим до § 29.

После того как точки упорядочены по величине угла, информа­цию об их координатах можно представить в виде двунаправленно­го списка, и тогда удаление вдавленных вершин не будет связано с какими-либо перемещениями координат точек, и, подходя формаль­но, можно было бы затраты на перемещения в процессе удаления вдавленных вершин считать равными нулю. При менее формальном подходе эти затраты можно считать ограниченными сверху значени­ем cn, где c—некоторая константа: переход от массива к двунаправ­ленному списку и, равным образом, в силу (3.1), работа со ссылками во время удаления вдавленных вершин потребуют затрат, ограничен­ных величинами такого вида. В свою очередь, сложность любой сор­тировки по числу перемещений элементов не может быть меньше чем n/2 (так как не исключено, например, что изначальный поря­док элементов является обратным к требуемому). Отсюда сложность алгоритма Грэхема по числу перемещений не превосходит произве­дения некоторой константы и сложности используемой сортировки по числу перемещений. Аналогично, для сложности по общему чис-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]