Изменения

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

Visibility graph и motion planning

9 байт добавлено, 21:36, 4 мая 2014
м
Lee’s Algorithm. O(n ^ 2 \log n)
==== Lee’s Algorithm. <tex> O(n ^ 2 \log n) </tex> ====
{|
|
[[Файл:Zam.png|300px|thumb|left|Заметание плоскости вращающимся лучом]]
[[Файл:Zamrefr1.png|250px|thumb|right|Обновление статуса заметающего луча]]
[[Файл:Zamrefr2.png|250px|thumb|right|Обновление статуса заметающего луча]]
[[Файл:Zamrefr3.png|250px|thumb|right|Обновление статуса заметающего луча]]
Однако можно это сделать за <tex> O(n ^ 2 \log n) </tex>. Нам нужно решить следующую задачу: на плоскости дано множество отрезков (рёбер препятствий) и точка <tex> v </tex>. Найти все концы отрезков, видимые из точки <tex> v </tex>.
return answer
</pre>
Вершин у нас <tex> n </tex>, для каждой вершины мы выполяеем следующие шаги: сортировка (<tex> O(n \log n) </tex>), проверка пересечения (<tex> O(1) </tex>), обновление статуса (суммарно выполняется за <tex> O(n \log n) </tex>, так как мы имеем <tex> O(n) </tex> ребер и каждое ребро мы добавляем и удаляем один раз (вставка происходит за <tex> O(\log n) </tex>, удаление можно сделать за <tex> O(1) </tex>, например, для каждой вершины сохраняя позицию входящих в нее отрезков)). Итого получаеем <tex> O(n) * O(n \log n) = O(n^2 \log n) </tex>. Что и требовалось доказать.|[[Файл:Zamrefr1.png|250px|thumb|right|Обновление статуса заметающего луча]][[Файл:Zamrefr2.png|250px|thumb|right|Обновление статуса заметающего луча]][[Файл:Zamrefr3.png|250px|thumb|right|Обновление статуса заметающего луча]]|}
==== Overmars and Welzl’s Algorithm <tex> O(n ^ 2) </tex> ====
222
правки

Навигация