Сложный алгоритм триангуляции Делоне.


16

В книге Марка де Берга и др. «Вычислительная геометрия: алгоритмы и приложения» описан очень простой алгоритм грубой силы для вычисления триангуляций Делоне. Алгоритм использует понятие недопустимых ребер - ребер, которые могут отсутствовать в допустимой триангуляции Делоне и должны быть заменены некоторыми другими ребрами. На каждом шаге алгоритм просто находит эти недопустимые ребра и выполняет необходимые смещения (называемые переворотами ребер ) до тех пор, пока не будет недопустимых ребер.

Алгоритм юридической триангуляции ( T )

Вход . Некоторые триангуляции T точечного множества P .
Выход . Законный триангуляция P .

в то время как T содержит недопустимое ребро pipj
do
Пусть pipjpk и pipjpl - два треугольника, смежные с pipj .
Удалите pipj из T и вместо этого добавьте pkpl .
вернуть T .

Я слышал, что этот алгоритм работает в O(n2) раз в худшем случае; однако мне не ясно, является ли это утверждение правильным или нет. Если да, как можно доказать эту верхнюю границу?


5
В форме, которую вы указали выше, это займет времени. Однако, используя стек, это можно сделать за O ( n 2 ) раз. Вы можете посмотреть последнюю страницу в этих примечаниях к лекции . Основной аргумент состоит в том, что может быть не более смещений ребер. O(n3)O(n2)(n2)
rizwanhudda

2
@rizwanhudda: Почему бы не сделать это ответом?
Рафаэль

Ответы:


8

Триангуляцию Делоне можно рассматривать как нижнюю выпуклую оболочку 2-го набора точек, поднятую к параболоиду. Таким образом, если вы берете 2d набор точек и назначьте каждую точку г координата г я = х 2 я + у 2 1 , то проекция нижней выпуклой оболочки в й у -плоскости дает вам триангуляцию Делоне.(xi,yi)zzi=xi2+y12xy

С этой точки зрения, что значит для ребра быть незаконным? Прежде всего, для каждой триангуляции T мы можем использовать параболические карту , чтобы получить 3d поверхности (триангулированную) , что проекты , вплоть до Т . Конечно, эта поверхность не обязательно является выпуклой, если она будет выпуклой, T будет триангуляцией Делоне. Проще говоря, ребро ( p i , p j ) является препятствием для выпуклости поверхности, вогнутым ребром. Отражая этот край, мы меняем положение на поднятой поверхности только локально. Итак, давайте посмотрим на 4 балла(pi,pj)TTT(pi,pj) . В 3d они образуют тетраэдр, который проецируется вниз на четырехугольник. Поскольку два треугольника p i p j p k и p i p j p l определяют вогнутый край ( p i , p j ) , треугольники p k p l p i и p k p l p j определяют выпуклый край (pi,pj,pk,plpipjpkpipjpl(pi,pj)pkplpipkplpj . Следовательно, отражение неправильного края соответствует замене вогнутого края выпуклым краем при подъеме. Обратите внимание, что этот переворот может превратить другие выпуклые края в вогнутые края.(pl,pk)

3D Flip interpretation Примечание: изображение не является геометрически правильным и должно рассматриваться только как эскиз.

Пусть - триангуляция после переворота. Поднял поверхность Т ' «содержит» поверхность Т . Под этим я подразумеваю, что если вы наблюдаете две поверхности с плоскости x y, вы видите только треугольники с поверхности T (или треугольники, которые находятся на обеих поверхностях). Можно также сказать, что поверхность T охватывает больше объема. Кроме того, край ( p i , p j ) теперь лежит «за» поднятой поверхностью, индуцированной T при просмотре с плоскости x y .TTTxyTT(pi,pj)Txy

Во время переворота мы получаем последовательность поверхностей со строго увеличивающимся объемом. Таким образом, ребро лежит «за» всеми этими поверхностями. Следовательно, он никогда не может появиться снова в процессе переворачивания. Поскольку есть только n, выберите 2 возможных ребра, мы имеем не более O ( n 2 ) сальто.(pi,pj)nO(n2)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.