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

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

Препарата Ф., Шеймос М. Вычислительная геометрия: Введение. Под редакцией Ю. М. Банковского — М.: Мир, 1989. — 478 c.
ISBN 5-03-001041-6
Скачать (прямая ссылка): vichgeometr.pdf
Предыдущая << 1 .. 91 92 93 94 95 96 < 97 > 98 99 100 101 102 103 .. 180 >> Следующая


(2) Не теряя общности, предположим, что множества S[ и S2 разделены вертикальной прямой ш, и пусть С—-компонента множества a(Si,S2). Будем двигаться по С, начав движение из некоторой точки q ребра компоненты С в направлении уменьшения «/-координаты до тех пор, пока не достигнем вершины диаграммы уь в которой С поворачивает вверх (рис. 5.24(a)). Ребро У[У2 перпендикулярно отрезку рхр2 и делит его пополам, а ребро V\v3 перпендикулярно отрезку р\р3 и также делит его пополам. Так как y(v3) > y{vx) и y(v2) > y(vx), то х(р3)^ ^ x(Pi) ^ х(р2). Однако, учитывая форму С, точки р2 и рз принадлежат одному и тому же множеству (либо Si, либо S2).

Рз

262 Гл. 5. Близость: основные алгоритмы

Возникающая ситуация противоречит предположению о разделимости Si и S2 вертикальной прямой. Значит, вершина, подобная Vi, не может существовать, а С является монотонной относительно вертикальной прямой. Отсюда следует, что компонента С является цепью.

Предположим теперь, что a(SbS2) содержит по крайней мере две монотонные относительно вертикальной прямой цепи Ci и С2. Произвольная горизонтальная прямая / пересекает каждую из цепей Ci и С2 в единственной точке (в силу монотонности С] и С2). Предположим, что точка пересечения прямой / с С] находится левее точки пересечения I с С2 (рис. 5.24(b)). Тогда в S существуют три точки ри р2 и рз такие, что x(pi)< х(р2) < х{р3). При этом pi и р3 принадлежат одному и тому же множеству разбиения {Si,S2}, что противоречит предположению о разделимости этих двух множеств вертикальной прямой. Поэтому o(Si,S2) содержит лишь одну компоненту, являющуюся монотонной цепью.

В том случае, когда множества Si и S2 являются линейно разделимыми, единственную цепь, содержащуюся в o(Si,S2), будем обозначать а. Если отделяющая прямая m является вертикальной, то можно недвусмысленно говорить о том, что о разбивает плоскость на левую пь и правую nR части. Имеет место следующее важное свойство.

Теорема 5.14. Если множества Si и S2 линейно разделимы вертикальной прямой и при этом Si находится слева от S2, то диаграмма Вороного Vor (5) представляет собой объединение Vor (Si) Л Я? и Vor(S2)fljV).

Доказательство. Все точки множества S, расположенные справа от а, принадлежат S2. Кроме того, все ребра диаграммы Vor(S), расположенные справа от о, разделяют многоугольники V(i) и V(j), где обе точки р; и р,- принадлежат S2. Отсюда следует, что каждое ребро диаграммы Vor(S), попадающее в ля, либо совпадает с некоторым ребром Vor(S2), либо является его частью. Аналогичные утверждения справедливы

И ДЛЯ Jtz..

Предыдущая теорема дает ответ на вопрос о том, какая связь имеется между Vor (Si), Vor(S2) и Vor(S). А именно если множества Si и S2 линейно разделимы (а это полностью в нашей власти и может быть реализовано на шаге 1 алгоритма), то теорема дает метод, позволяющий выполнить объединение Vor (Si) и Vor(S2). Пересмотренный вариант алгоритма приведен ниже.

[) Диаграмма Вороного Vor(S) представляет собой объединение Vor(S,) П ял, Vor(S2) П пЛ и а. — Прим. перев.

5.5. Решение задач о близости методом локусов

263

procedure ДИАГРАММА-ВОРОНОГО Шаг 1. Разделить множество S на два приблизительно равных подмножества Si и S2, использовав для этого медиану по х-ко-ординате.

Шаг 2. Рекурсивно построить Vor(Si) и Vor(S2). Шаг 3'. Построить ломаную а, разделяющую Si и S2. Шаг 3". Удалить все ребра диаграммы Vor(S2), расположенные слева от а, и все ребра Vor(Si), расположенные справа от о. В результате получаем Vor(S) — диаграмму Вороного для множества в целом.

(а)

V

(Ь)

Рис. 5.25. Диаграмма Вороного левого (а) и правого (Ь) множеств.

Очевидно, что успешное выполнение этой процедуры зависит от того, насколько быстро мы сможем построить о, так как шаг 3" не вызывает затруднений. Для наглядности на рис. 5.25(a) и 5.25(b) отдельно показаны Vor(Si) и Vor(S2) соответственно, а на рис. 5.26 они представлены вместе с а.

Если говорить о времени обработки, то начальное разбиение множества S с использованием медианы по х-координате

Гл. 5. Близость: основные алгоритмы

может быть выполнено за время O(N) с помощью стандартного алгоритма поиска медианы. Кроме того, шаг 3" может быть выполнен за время 0(|Si| + |S2|) = O(N). Остается лишь найти эффективный способ построения разделяющей цепи а.

Рис. 5.26. Наложение Vor(S,), Vor(S2) и ст.

Рассмотрим теперь решение этой задачи [Shamos, Ноеу (1975), Lee (1978), (1980а)].

5.5.2.1. Построение разделяющей цепи

Первый шаг в построении разделяющей цепи о заключается в определении двух ее лучей. Заметим, что каждый луч цепи о перпендикулярен опорному отрезку (каждый своему) к CH(Si) и CH(S2) и делит его пополам. Отметим также, что так как по предположению Si и S2 линейно разделимы, то имеются в точности два опорных отрезка к CH(Si) и CH(S2) (тем самым подтверждается, что o(Si,S2) состоит лишь из одной цепи о). Если теперь (по индукции) предположить, что уже построены эти две выпуклые оболочки, то два опорных отрезка, которые мы обозначим h и t2, строятся (самое большее) за линейное время (см. разд. 3.3.5) после чего легко определяются лучи цепи а (рис. 5.27). Заметим, что в качестве побочного результата мы получаем также CH(S), обеспечивая тем самым наличие выпуклых оболочек, необходимых для шага индукции.
Предыдущая << 1 .. 91 92 93 94 95 96 < 97 > 98 99 100 101 102 103 .. 180 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed