Изменения

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

Visibility graph и motion planning

623 байта добавлено, 22:57, 5 февраля 2015
Нет описания правки
Данный алгоритм работает за <tex> O(n \log n) </tex> и за линейное количество памяти и идеально подходит для нахождения какого-нибудь пути между конечными вершинами. Но иногда нужно найти кратчайший путь, и этот алгоритм не подходит, хоть и дает хорошее приближение.
На сегодняшний день, точные решения в лучшем случае работают за <tex> O(n^2) </tex> времени и памяти (здесь и далее <tex> n </tex> {{---}} количество всех вершин).
Теперь рассмотрим точное решение с помощью построения графа видимости. После его построения, как и в случае с трапецоидной картой, путь ищется стандартными алгоритмами.
{{Определение
|definition =
'''visibility graph''' {{---}} графГоворят, вершины которого {{---}} вершины полигонов. Между вершинами что вершина <tex> u </tex> и <texi> v видна </texi> существует ребро, если (англ. mutually visible) из <tex> u v </tex> <i> видна </i>(mutually visible) , если отрезок <tex> v uv </tex>не пересекает ни одного препятствия.
}}
{{Определение
|definition =
'''visibility graph''' {{---}} граф, вершины которого {{---}} вершины полигонов. Между вершинами <tex> u </tex> и <tex> v </tex> существует ребро, если из <tex> u </tex> видна <tex> v </tex>.
}}
 
В худшем случае в таком графе может быть <tex> O(n^2) </tex> ребер. Однако по некоторым ребрам кратчайший путь точно не пройдет, и такие ребра из графа можно удалить.
{{Лемма
}}
По доказанным леммам любое ребро кратчайшего пути содержится в графе, таким образом для нахождения кратчайшего пути осталось найти кратчайший путь в этом графе от <tex> S </tex> до <tex> T </tex>. Рассмотрим алгоритмы построения графа видимости.
=== Построение visibility графа ===
222
правки

Навигация