Научная литература
booksshare.net -> Добавить материал -> Математика -> Препарата Ф. -> "Вычислительная геометрия: Введение" -> 74

Вычислительная геометрия: Введение - Препарата Ф.

Препарата Ф., Шеймос М. Вычислительная геометрия: Введение. Под редакцией Ю. М. Банковского — М.: Мир, 1989. — 478 c.
ISBN 5-03-001041-6
Скачать (прямая ссылка): vichgeometr.pdf
Предыдущая << 1 .. 68 69 70 71 72 73 < 74 > 75 76 77 78 79 80 .. 180 >> Следующая


фильтр (?/|У)Д,{р: p^U и p<V). Ясно, что шаг «слияния» в методе «разделяй и властвуй» сводится к вычислению множества фильтр(тах(5[) |max(S2)). Таким образом, получаем следующий простой алгоритм:

4.1. Расширения и варианты

199

function МАКСИМУMbI2(S,rf) begin if (151=1) then return 5

else begin(5i,S2) :== разбиение S пополам no xd;

Mx := МАКСИМУМЫ2(5,, d);

M2 := МАКСИМУМЫ2(52>^);

return M2 (J фильтр (M{ j M2)

end

end.

Если обозначить через 7^(|5|) время обработки процедуры МАКСИМУМЫ2(5), а через /Vi(|Si|, \S2\) время, необходимое для вычисления множества фильтр(5i|52) '), то сразу получаем следующее рекуррентное соотношение (здесь предполагается, что N — четное число):

Td (N) < 2Td (NJ2) + Fd_t {N12, N/2) + О (N), (4.8)

где О (N) —время, используемое на разбиение множества 5 на равные части Si и S2.

Очевидно, что основные затруднения в рассматриваемом методе связаны с вычислением множества, названного нами фильтром. Предположим снова, что U и У —два множества точек в Еа, определенные как это сделано выше, и \U\ = и, a \ V\ = = v. Воспользуемся еще раз методом «разделяй и властвуй». Разделим V пополам по xd~i на (Vi, V2) и обозначим через xd-i наибольшее значение координаты xd-i точек из V\. Величина Xd-i разбивает U на (U\, U2). Рис. 4.6 иллюстрирует эту ситуацию. На этом рисунке показаны проекции множеств U и V на плоскость (xd, хы). Заметим, что \Vi\aiv/2 и \V2\=av/2, в то время как \Ui\ — пг и \02\ = и — пг, где пг— некоторое целое число. При таком разбиении множеств исходная задача вычисления множества фильтр (U\ V) заменяется четырьмя подзадачами вычисления множеств фильтр (l)\ \ V\), фильтр {U\ \ V2), фильтр(U21 V\) и фильтр(U2\V2). Отметим, однако, что множество фильтр(U2\Vi) вычисляется тривиально, так как для каждой р е U2 и q <= Vi имеем xd(p) <; xd(q) и xd-i(p) > xd-i(q). Кроме того, каждый элемент из V2 доминирует над каждым элементом из Ui по координатам Xd и Xd-i, так что подзадача вычисления множества фильтр (Ui | V2) имеет в действительности размерность d — 2. Две оставшиеся подзадачи по-прежнему имеют размерность d—1, но относятся к множествам с меньшим числом элементов. Наглядно процесс вычисления можно

') Следует объяснить индексы, использованные в записи: Т( ) и F(,). Множество 5 — это множество точек в Е". Однако, так как каждая точка множества 52 доминирует над каждой точкой множества St по координате Xd, то вычисление множества фильтр (S,|S2) является фактически (d — 1)-мерной задачей.

200 Гл. 4. Выпуклые оболочки: расширения и приложения

представить как прохождение путей, порождаемых двойной рекурсией: по размерам обрабатываемых множеств и по размерности. Первая заканчивается, когда мощность одного из двух множеств пары становится маленькой (равной единице), вторая завершается, когда размерность становится настолько маленькой, что применим прямой эффективный метод (это имеет место

и V

Рис. 4.6. Вычисление множества фильтр(U| V) методом «разделяй и властвуй» (путем сведения к трем более простым подзадачам).

при размерности, равной 3, когда можно воспользоваться модификацией метода заметания по измерению, описанного ранее). Более формально алгоритм описывает следующая функция (заметим, что в алгоритме МАК.СИМУМЫ2 множество фильтр (М i\M2) вычисляется в результате обращения к ФИЛЬТР (Мь М2; d-1)):

function ФИЛЬТР^,V; d) begin if (d = 3) then A := ФИЛЬТР2(?/, V);

if (V = {q}) then A:={p: p^U и p<q}\ if (U = {p}) then

begin if for each q ^V: p <?q then A := {p} else A := 0

end

else begin (V, ,V2) '¦— разбиение V пополам no xd; xd = max {xd (p): pel/,}; {Uy,U2) := части, на которыеxd разбивает U; А :=ФИЛЬТР(с/2,1/2; d) U (ФИЛЬТР(с/,, Vu- d)[\<b\\nhlV{Ui,V2\d- 1))

end; return A

end.

4.1. Расширения и варианты

201

Осталось описать процедуру ФИЛЫР2. Эта процедура использует метод заметания и аналогична процедуре МАКСИМУМЫ! для d = 2. Точки множества U U V просматриваются в порядке уменьшения координаты х2 и помещаются в очередь Q. Если текущая точка р принадлежит V, то М изменяется, в противном случае р либо добавляется к М (как максимальный элемент), либо исключается из рассмотрения. Таким образом, имеем function ФИЛЬТР2(с/,1/) begin Q := упорядочить U\jV в порядке убывания координаты xd; М:=0; х\:=0;

while (Q Ф 0) do begin p<=Q;

if (xx (p) > jcI) then

begin if (pe[/) then M :==M[){p} (¦является максимальным элементом*) else x\:=xx(p)

end

end; return M

end.

Для анализа работы алгоритма обозначим через Fd(u, v) время обработки процедуры ФИЛЬТР(U, V; d). Анализ процедуры ФИЛБТР2 непосредственно дает F2(u, v) = О(и + v) (при условии что U и V предварительно упорядочены по значению координаты х2). В общем случае, анализируя процедуру ФИЛЬТР, получаем следующее рекуррентное соотношение:

Fd (и, v) < Fd (от, v/2) + Fd (и - от, v/2) + Fd_y (m, v/2), (4.9)

где m — некоторое целое число 0 ^ m и. Довольно утомительные вычисления ') с учетом оценки для F2 показывают, что максимальное значение правой части соотношения есть 0((и + w)log«(log v)d~3). С учетом этого неравенство (4.8) принимает вид
Предыдущая << 1 .. 68 69 70 71 72 73 < 74 > 75 76 77 78 79 80 .. 180 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed