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

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

Препарата Ф., Шеймос М. Вычислительная геометрия: Введение. Под редакцией Ю. М. Банковского — М.: Мир, 1989. — 478 c.
ISBN 5-03-001041-6
Скачать (прямая ссылка): vichgeometr.pdf
Предыдущая << 1 .. 112 113 114 115 116 117 < 118 > 119 120 121 122 123 124 .. 180 >> Следующая


ченный результат. И, как обычно, для ответа на этот вопрос обратимся к одномерному случаю. В этом случае задача сводится к поиску на прямой пары последовательных точек, максимально удаленных друг от друга (МАКСИМАЛЬНЫЙ ПРОМЕЖУТОК), так как в одномерном случае окружность вырождается в отрезок. Нижняя оценка Q(N\ogN) времени решения этой задачи, полученная Мэнбером и Томпа [Manber, Тотра (1982)] для модели линейных деревьев решений, недавно была расширена Ли и By [Lee, Wu (1986)] на более общую математическую модель вычислений. (Их результат основывается на сведении задачи МАКСИМАЛЬНЫЙ ПРОМЕЖУТОК к задаче ОДНОРОДНЫЙ ПРОМЕЖУТОК, рассматриваемой как задача-прототип.) Это контрастирует со следующим самым неожиданным результатом, полученным Гонза-лесом [Gonzales (1975)]: если изменить модель вычислений,

ствуя таким образом, можно найти все точки пересечения Vor(S) с CH(S).

Рис. 6.21. Пример обхода диаграммы Vor(S) при определении пересечений Vor(S) с conv(S).

При таком обходе каждый посещаемый отрезок диаграммы Vor(S) проходится не более двух раз. Так как, согласно свойству 2, каждое ребро имеет не более двух таких отрезков, то каждое ребро проверяется самое большее четыре раза, и, следовательно, пересечение диаграммы Vor(S) с оболочкой CH(S) вычисляется за время О (Л/)1).

Здесь может появиться желание узнать, насколько оптимален полу-

') Описанный подход связан с аналогичным результатом, полученным Туссэном [Toussaint (1983b)].

6.4. Промежутки и покрытия

319

то задачу можно решить даже за линейное время. Изменение заключается в добавлении к стандартному набору функций функции вычисления целой части « [ J» (которая не является аналитической). Здесь мы приводим этот выдающийся алгоритм Гонзалеса:

ргосеаигеМАКСИМАЛЬНЫЙ-ПРОМЕЖУТОК

Входные данные: N действительных чисел : /V] (числа не упорядочены)

Выходные данные: MAXGAP — длина наибольшего

промежутка между последовательной парой чисел упорядоченного множества

begin MIN :=minX[t];

МАХ:=тах*И; ')

(* разбить интервал между точками MIN и МАХ на N—1 равных отрезков. Массивы HIGH и LOW используются для хранения соответственно наибольшего и наименьшего значений на отрезках *) for i := 1 until N — 1 do begin COUNT[i]:=0;

LOM[i] := HIQH[i] := Л end; (* установлены начальные значения параметров отрезков *) (* распределение точек по отрезкам *) for i := 1 until N — 1 do

begin BUCKET := 1 + l(N - 1) X (X[i\ -MIN)/(MAX-MIN)J;

COUNT[BUCKET] := COUNT [BUCKET] + 1; LOW[BUCKET] := min(Vfl, LOW[BUCKET]); 2) HIGH[BUCKET] := max (X[i], HIGH[BUCKET]); 2)

end;

(* Заметим, что ЛГ —2 точек распределены по N— I отрезкам, и, следовательно, один из отрезков должен быть пустым. Это значит, что наибольший промежуток не может помещаться между двумя точками, попавшими в один и тот же отрезок. Теперь достаточно выполнить однократный просмотр отрезков *) MAXGAP := 0; LEFT := HIGH[1];

') MIN и MAX присваиваются значения соответственно минимального и максимального элементов массива X. — Прим. перев. ') Здесь считается, что min (*, Л) = max (*, Л) = х.

320

Гл. 6. Близость: варианты и обобщения

for i := 2 until N — 1 do if (COUNT[i] ф 0) then

begin THISGAP := LOW[(] - LEFT; MAXGAP := max(THISGAP, MAXGAP); LEFT := НЮНИ end

end.

Этот алгоритм несколько проливает свет на вычислительную мощность функции выделения целой части. Учитывая кажущееся сходство задач МАКСИМАЛЬНЫЙ ПРОМЕЖУТОК и БЛИЖАЙШАЯ ПАРА в одномерном случае, существование алгоритма с линейной сложностью представляет выдающийся результат. К сожалению, по-видимому, невозможно обобщить этот результат на случай двумерного пространства.

6.5. Замечания и комментарии

Хотя евклидово минимальное остовное дерево множества точек на плоскости может быть построено за оптимальное время, построение ЕМОД в пространствах более высокой размерности, вообще говоря, остается открытой задачей. Используя геометрическую природу задачи, Яо [Yao (1982)] разработал алгоритм построения ЕМОД множества из N точек в d-мерном пространстве за время Т (N, d) = О (N2-a<-d) • ¦ (\ogN)l~aW), где a (d) = 2~'d+1), имеющий оценку 0(N(logN)]'b) для d — Ъ (этот метод тесно связан с алгоритмом Яо для определения диаметра множества точек (см. разд. 4.3)).

С диаграммой Вороного тесно связана задача построения скелета многоугольника, являющегося предметом довольно большого числа исследований, относящихся к распознаванию образов, так как он довольно хорошо отражает «форму» многоугольника. Скелет простого многоугольника Р — это множество а его внутренних точек таких, что каждая точка pea равноудалена по крайней мере от двух точек на границе Р. В связи с этим скелет многоугольника также называют срединными осями [Duda, Hart (1973)]. Образование скелета многоугольника можно наглядно представить, наблюдая процесс «выгорания» многоугольника. Представьте, что по всей границе многоугольника одновременно загорается огонь. Если предположить, что огонь распространяется с постоянной скоростью, то точки, в которых происходит встреча фронтов распространения огня, образуют скелет многоугольника (этот процесс ассоциируется с пожаром в прерии). В другой интерпретации скелет — это подграф планарной карты, образованной областями близости
Предыдущая << 1 .. 112 113 114 115 116 117 < 118 > 119 120 121 122 123 124 .. 180 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed