Триангуляция многоугольника - Polygon triangulation

Триангуляция многоугольника.

В вычислительная геометрия, триангуляция многоугольника является разложением многоугольная область (простой многоугольник ) п в набор треугольники,[1] т.е. найти набор треугольников с попарно непересекающимися внутренностями, у которых союз является п.

Триангуляции можно рассматривать как частные случаи плоские прямолинейные графики. Когда нет отверстий или добавленных точек, формируются триангуляции. максимальные внешнепланарные графы.

Триангуляция многоугольника без лишних вершин

Со временем был предложен ряд алгоритмов для триангуляции многоугольника.

Особые случаи

42 возможных триангуляции для выпуклый семиугольник (7-сторонний выпуклый многоугольник). Это число дается 5-м Каталонский номер.

Триангулировать любые выпуклый многоугольник в линейное время в веерная триангуляция, добавив диагонали от одной вершины ко всем остальным вершинам.

Общее количество способов триангуляции выпуклой п-угольник непересекающимися диагоналями является (п−2) nd Каталонский номер, что равно , решение найдено Леонард Эйлер.[2]

А монотонный многоугольник можно триангулировать за линейное время с помощью любого алгоритма А. Фурнье и Д.Ю. Montuno,[3] или алгоритм Годфрид Туссен.[4]

Метод стрижки ушей

Многоугольное ухо

Один из способов триангуляции простого многоугольника основан на теорема о двух ушах, как тот факт, что любой простой многоугольник с не менее чем 4 вершинами без отверстий имеет не менее двух 'уши ', которые представляют собой треугольники, две стороны которых являются краями многоугольника, а третья полностью находится внутри него.[5] Затем алгоритм состоит из поиска такого уха, удаления его из многоугольника (что приводит к новому многоугольнику, который все еще соответствует условиям) и повторения, пока не останется только один треугольник.

Этот алгоритм легко реализовать, но он работает медленнее, чем некоторые другие алгоритмы, и работает только с полигонами без отверстий. Реализация, которая хранит отдельные списки выпуклых и вогнутых вершин, будет работать в O (п2) время. Этот метод известен как стрижка ушей и иногда стрижка ушей. Эффективный алгоритм отрезания ушей был открыт Хоссамом Эль-Джинди, Хейзел Эверетт и Годфрид Туссен.[6]

Триангуляция монотонного многоугольника

Разбиение многоугольника на монотонные многоугольники

Простой многоугольник монотонен относительно линии L, если любая линия ортогональна L не более двух раз пересекает многоугольник. Монотонный многоугольник можно разбить на два монотонных цепи. Многоугольник, монотонный относительно оси y, называется у-монотонный. Монотонный многоугольник с п вершины можно триангулировать в O (п) время. Предполагая, что данный многоугольник является y-монотонным, жадный алгоритм начинается с обхода одной цепочки многоугольника сверху вниз, добавляя диагонали, когда это возможно.[1] Нетрудно убедиться, что алгоритм применим к любому монотонному многоугольнику.

Триангуляция немонотонного многоугольника

Если многоугольник не монотонный, его можно разбить на монотонные подполигоны в O (п журнал п) время, используя линейный подход Алгоритм не требует, чтобы многоугольник был простым, поэтому его можно применять к многоугольникам с отверстиями. Как правило, этот алгоритм может триангулировать планарное подразделение с помощью п вершины в O (п журнал п) время используя O (п) Космос.[1]

Двойственный график триангуляции

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

Вычислительная сложность

До 1988 г. простой многоугольник можно триангулировать быстрее, чем O (п журнал п) время было открытой проблемой в вычислительной геометрии.[1] Потом, Тарджан и Ван Вик (1988) обнаружил O (п журнал журнал п)-временной алгоритм триангуляции,[7] позже упрощено Киркпатрик, Клаве и Тарджан (1992).[8] Несколько улучшенных методов со сложностью O (п журнал* п) (практически неотличимый от линейное время ) последовал.[9][10][11]

Бернар Шазель в 1991 году показал, что любой простой многоугольник можно триангулировать за линейное время, хотя предложенный алгоритм очень сложен.[12] Также известен более простой рандомизированный алгоритм с линейным ожидаемым временем.[13]

Алгоритм разложения Зейделя и метод триангуляции Шазеля подробно обсуждаются в Ли и Клетт (2011).[14]

В временная сложность триангуляции п-вершинный многоугольник с участием дыры имеет Ω (п журнал п) нижняя граница, в алгебраическом дерево вычислений модели вычислений.[1] Можно вычислить количество различных триангуляций простого многоугольника за полиномиальное время, используя динамическое программирование, и (на основе этого алгоритма подсчета) для генерации равномерно случайный триангуляции за полиномиальное время.[15] Однако подсчет триангуляции многоугольника с отверстиями # P-complete, что делает маловероятным, что это можно сделать за полиномиальное время.[16]

Связанные проблемы

Смотрите также

использованная литература

  1. ^ а б c d е Марк де Берг, Марк ван Кревельд, Марк Овермарс, и Отфрид Шварцкопф (2000), Вычислительная геометрия (2-е изд. Перераб.), Springer-Verlag, ISBN  3-540-65620-0CS1 maint: несколько имен: список авторов (ссылка на сайт) Глава 3: Триангуляция многоугольника: стр.45–61.
  2. ^ Пиковер, Клиффорд А., Книга по математике, Стерлинг, 2009: с. 184.
  3. ^ Фурнье, А.; Монтуно, Д. Ю. (1984), "Триангуляция простых многоугольников и эквивалентные задачи", Транзакции ACM на графике, 3 (2): 153–174, Дои:10.1145/357337.357341, ISSN  0730-0301, S2CID  33344266
  4. ^ Туссен, Годфрид Т. (1984) "Новый линейный алгоритм триангуляции монотонных многоугольников," Письма с распознаванием образов, 2 (Март): 155–158.
  5. ^ Мейстерс, Г. Х. "У полигонов есть уши. »American Mathematical Monthly 82 (1975). 648–651.
  6. ^ ElGindy, H .; Everett, H .; Туссен, Г. Т. (1993). «Нарезка уха методом обрезки и поиска». Письма с распознаванием образов. 14 (9): 719–722. Дои:10.1016 / 0167-8655 (93) 90141-у.
  7. ^ Тарджан, Роберт Э.; Ван Вик, Кристофер Дж. (1988), "An O (п журнал журнал п) -временной алгоритм триангуляции простого многоугольника », SIAM Журнал по вычислениям, 17 (1): 143–178, CiteSeerX  10.1.1.186.5949, Дои:10.1137/0217010, Г-Н  0925194.
  8. ^ Киркпатрик, Дэвид Г.; Клаве, Мария М.; Тарджан, Роберт Э. (1992), "Триангуляция многоугольника в O (п журнал журнал п) время с простыми структурами данных », Дискретная и вычислительная геометрия, 7 (4): 329–346, Дои:10.1007 / BF02187846, Г-Н  1148949.
  9. ^ Кларксон, Кеннет Л.; Тарьян, Роберт; ван Вик, Кристофер Дж. (1989), "Быстрый алгоритм Лас-Вегаса для триангуляции простого многоугольника", Дискретная и вычислительная геометрия, 4 (5): 423–432, Дои:10.1007 / BF02187741.
  10. ^ Зайдель, Раймунд (1991), «Простой и быстрый инкрементальный рандомизированный алгоритм для вычисления трапецеидальных разложений и триангуляции многоугольников», Вычислительная геометрия: теория и приложения, 1: 51–64, Дои:10.1016/0925-7721(91)90012-4
  11. ^ Кларксон, Кеннет Л.; Коул, Ричард; Тарджан, Роберт Э. (1992), «Рандомизированные параллельные алгоритмы для трапецеидальных диаграмм», Международный журнал вычислительной геометрии и приложений, 2 (2): 117–133, Дои:10.1142 / S0218195992000081, Г-Н  1168952.
  12. ^ Шазель, Бернар (1991), "Триангуляция простого многоугольника в линейное время", Дискретная и вычислительная геометрия, 6 (3): 485–524, Дои:10.1007 / BF02574703, ISSN  0179-5376
  13. ^ Амато, Нэнси М.; Гудрич, Майкл Т.; Рамос, Эдгар А. (2001), «Рандомизированный алгоритм триангуляции простого многоугольника за линейное время», Дискретная и вычислительная геометрия, 26 (2): 245–265, Дои:10.1007 / s00454-001-0027-х, ISSN  0179-5376
  14. ^ Ли, Фаджи; Клетт, Рейнхард (2011), Евклидовы кратчайшие пути, Springer, Дои:10.1007/978-1-4471-2256-2, ISBN  978-1-4471-2255-5.
  15. ^ Эпштейн, Питер; Мешок, Йорг-Рюдигер (1994), "Генерация случайных триангуляций", Транзакции ACM по моделированию и компьютерному моделированию, 4 (3): 267–278, Дои:10.1145/189443.189446, S2CID  14039662
  16. ^ Эппштейн, Дэвид (2019), «Подсчет многоугольников - сложная задача», Proc. 35-й Int. Symp. Вычислительная геометрия, Leibniz International Proceedings in Informatics (LIPIcs), Schloss Dagstuhl, стр. 33: 1–33: 17, arXiv:1903.04737, Дои:10.4230 / LIPIcs.SoCG.2019.33, S2CID  75136891

внешние ссылки