Изменения

Перейти к: навигация, поиск

Упрощение полигональной цепи

14 байт добавлено, 14:37, 13 мая 2012
Обзор ускорения работы алгоритма Дугласа-Пекера
Для построения выпуклой оболочки используется [http://www.ams.sunysb.edu/~jsbm/courses/545/melkman.pdf алгоритм Мелкмана], который работает для двумерной полигональной цепи без самопересечений за <tex>O(n)</tex>, строя все промежуточные выпуклые оболочки, которые пригодятся в дальнейшем.
Построив выпуклую оболочку, После построения выпуклой оболочки используется бинарный поиск для нахождения наиболее удаленной вершины за <tex>O(\log n)</tex>. Затем, если потребуется, действия повторятся рекурсивно, как и в оригинальном алгоритме, но заново строить оболочки не имеет смысла, так как промежуточные уже были построены. Использовав их, можно разбить текущую оболочку на две за <tex>O(\log n)</tex>.
В итоге получается, что в худшем случае <tex>O(n)</tex> разбиений за <tex>O(\log n)</tex> и поиск за <tex>O(\log n)</tex>, что дает <tex>O(n\log n)</tex>.
Анонимный участник

Навигация