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

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

Препарата Ф., Шеймос М. Вычислительная геометрия: Введение. Под редакцией Ю. М. Банковского — М.: Мир, 1989. — 478 c.
ISBN 5-03-001041-6
Скачать (прямая ссылка): vichgeometr.pdf
Предыдущая << 1 .. 120 121 122 123 124 125 < 126 > 127 128 129 130 131 132 .. 180 >> Следующая


. Пересечение двух звездны:

340

Гл. 7. Пересечения

Алгоритм решения этой задачи был бы весьма полезен для приложений типа трассировки или размещения, описанных в разд. 7.1.3. Прежде чем взяться за решение задачи С.2.1, опишем дополнительно ее важные приложения.

7.2.3.1. Приложения

Задача С.2.2 (ПРОВЕРКА ПЕРЕСЕЧЕНИЯ МНОГОУГОЛЬНИКОВ). Даны два простых многоугольника Р и Q с М и N вершинами соответственно. Пересекаются ли они?

G' с: Р Гааиицы не пересекаются

Рис. 7.12. Р сг Q, или QaP, или же есть пара пересекающихся ребер.

Как указано в разд. 7.2.1 для выпуклых многоугольников, если Р и Q пересекаются, то или Р содержит Q, или Q содержит Р, или некоторое ребро Р пересекает одно из ребер Q (рис. 7.12).

Поскольку Р и Q оба просты, то при любом пересечении их ребер эти ребра будут принадлежать разным многоугольникам. Обозначим через Т(N) время, необходимое для решения задачи С.2.1. Тогда можно определить факт пересечения ребер Р и Q за T(N-\-M) операций. И если пересечений не найдено, то останется только проверить Р cr Q или Q с= Р.

Если Р лежит внутри Q, то все вершины Р лежат внутри Q, поэтому можно один раз применить проверку принадлежности точки за время O(N) (по теореме 2.1), используя любую вершину Р. Если эта вершина лежит вне Q, то можно тем же самым способом установить, верно ли, что QczP, за время О(М). Отсюда имеем следующую теорему:

Теорема 7.5. Пересечение простых многоугольников преобразуется за линейное время к проверке пересечения прямолинейных отрезков:

ПРОВЕРКА ПЕРЕСЕЧЕНИЯ МНОГОУГОЛЬНИКОВ ocN ПРОВЕРКА ПЕРЕСЕЧЕНИЯ ПРЯМОЛИНЕЙНЫХ ОТРЕЗКОВ

7.2. Плоские приложения

341

Мы уже видели, что сложность алгоритмов, работающих с многоугольниками, может зависеть от того, известна или нет простота этих многоугольников. Например, выпуклую оболочку для простого многоугольника можно найти за время в(М) (теорема 4.12), в то время как Q(N\ogN) является нижней границей для непростых многоугольников. Поэтому было бы полезно иметь алгоритм проверки простоты.

Задача С.2.3 (ПРОВЕРКА ПРОСТОТЫ МНОГОУГОЛЬНИКА). Дан многоугольник. Прост ли он?

Простой и непростые многоугольники показаны на рис. 7.13. Поскольку многоугольник прост тогда и только тогда, когда

Рис. 7.13. Простой и непростые многоугольники.

никакая пара его ребер не пересекается, то немедленно имеем, что:

ПРОВЕРКА ПРОСТОТЫ МНОГОУГОЛЬНИКА ос„ ПРОВЕРКА ПЕРЕСЕЧЕНИЯ ПРЯМОЛИНЕЙНЫХ ОТРЕЗКОВ

7.2.3.2. Алгоритмы пересечения отрезков

Предположим, что заданы N интервалов на действительной оси и необходимо узнать, не перекрываются ли какие-нибудь два из них. Ответ можно получить за время 0(N2), проверив все пары интервалов, но тут же на ум приходит намного лучший алгоритм, основанный на сортировке. Если упорядочить 2N концевых точек этих интервалов и обозначить их как левые (Л) или правые (П), то эти интервалы не перекрываются тогда и только тогда, когда концы их образуют чередующуюся последовательность: Л, П, Л, П, П, Л, П (рис. 7.14). Эту проверку можно провести за 0(N\ogN) времени.

Хотелось бы ответить на два вопроса: можно ли улучшить этот алгоритм и обобщается ли он на случай двух измерений?

Чтобы получить нижнюю оценку, продемонстрируем соответствие между задачей о наложении интервалов и известным фундаментальным вопросом из теории множеств: ПРОВЕРКОЙ УНИКАЛЬНОСТИ ЭЛЕМЕНТОВ (даны N действительных чисел; все ли они различны? (разд. 5.2)). Ранее было показано,

Простой

Непростые

342

Гл. 7 Пересечения

что эта задача легко разрешима за время 0(N\ogN) методом сортировки, и, хотя нет простого способа показать, что сортировка необходима, тем не менее известно (из результатов Добкина и Липтона [Dobkin, Lipton (1976)] и Бен-Ора [Веп-Ог (1983)]), что необходимо затратить O(NlogN) времени в

~~Л ft л ti л л л гГ

Л и Л чередуются- Нет наложений

Л Л П Л П П Л Л Л Л Л Л

Л и Л не чередуются Рис. 7.14. Определение наложений интервалов.

модели вычислений типа дерева решений (следствие 5.1). Теперь покажем, что

УНИКАЛЬНОСТЬ ЭЛЕМЕНТОВ ос„ НАЛОЖЕНИЕ ИНТЕРВАЛОВ

Заданный набор из N действительных чисел {х,} можно преобразовать в набор из iN интервалов {[х,, а;] } за линейное время. Эти интервалы перекрываются тогда и только тогда, когда исходные числа не уникальны, и это доказывает следующую теорему:

Теорема 7.6. Для того чтобы определить, перекрываются ли N интервалов, необходимо и достаточно Q(N\ogN) сравнений, при условии что можно использовать лишь алгебраические функции на входе.

Насколько строгим является это ограничение на алгебраические функции? С одной стороны, оно запрещает использовать функцию «целая часть», которая, как было показано в разд. 6.4, является очень мощной операцией. (Напомним, что использование этой функции позволило Гонзалесу [Gonzales (1975)] решить задачу MAXGAP за Q(N) времени.) Методы, которые позволили бы доказать теорему 7.6 с использованием функции «целая часть», не известны, однако можно предположить, что ее добавление вряд ли повлияет на нижнюю оценку, тем более что теорема 7.6 приложима к случаю любого числа измерений. В частности, для проверки пересечения N отрезков на плоскости необходимо Q(N log N) операций.
Предыдущая << 1 .. 120 121 122 123 124 125 < 126 > 127 128 129 130 131 132 .. 180 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed