Поиск кратчайших путей в дорожных сетях: от теории к...
Transcript of Поиск кратчайших путей в дорожных сетях: от теории к...
![Page 1: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/1.jpg)
Алгоритм ДейкстрыВиталий Осипов
Слайды основаны на лекциях, читавшихся в летнем семестре на факультете информатики KIT.http://i11www.iti.uni-karlsruhe.de/teaching/sommer2015/routenplanung/index
![Page 2: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/2.jpg)
Постановка задачи
› Дано– Граф c весовой функцией
› Задача– Вычислить – Вычислить кратчайший --Путь
![Page 3: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/3.jpg)
Постановка задачиСвойства
› Ацикличность– Кратчайшие пути не содержат
циклов› Остовность
– Объединение всех кратчайших путей из s является DAG, а именно деревом
› Наследственность – Все подпути кратчайшего пути
являются кратчайшими путями› Расстояние
– Расстояние возрастает от корня к листьям
![Page 4: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/4.jpg)
› Сложность зависит от входного графа– Веса неотрицательны– Циклы с отрицательным общим весом– Простой путь – путь без повторяющихся вершин
› Варианты задачи– Веса неотрицательны: Алгоритм Дейкстры ( )– Веса могут быть отрицательными, но нет
отрицательных циклов: Алгоритм Беллмана-Форда ( )– Веса могут быть отрицательными, поиск кратчайшего
простого пути: NP сложна (сведение от задачи нахождения самого длинного пути)
Расчет кратчайшего пути
![Page 5: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/5.jpg)
Расчет кратчайшего пути
› Задача нахождения самого длинного пути› Дано
– Направленный, взвешенный граф с весовой функцией – Число – Вершины
› Найти– Существует ли простой --путь длинны
› Задача NP сложна (Гэри Джонсон 79)
![Page 6: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/6.jpg)
Расчет кратчайшего путиАлгоритм Дейкстры
![Page 7: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/7.jpg)
Расчет кратчайшего путиАлгоритм Дейкстры
› Дано Граф , начальная вершина › Идея: Поиск в по мере увеличение расстояния
от
![Page 8: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/8.jpg)
Расчет кратчайшего путиРелаксация ребер
![Page 9: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/9.jpg)
› Релаксация ребер
› Посещенные вершины (visited) – те, которые были добавлены в очередь
› Обработанные вершины – те, которые были добавлены в очередь и вновь удалены из нее
Расчет кратчайшего путиРелаксация ребер
![Page 10: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/10.jpg)
Алгоритм ДейкстрыВремя выполнения
![Page 11: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/11.jpg)
Алгоритм ДейкстрыВремя выполнения
𝑇 𝑑𝑖𝑗𝑘𝑠𝑡𝑟𝑎=𝑇 𝑖𝑛𝑖𝑡+𝑛 ∙𝑇 𝑑𝑒𝑙𝑒𝑡𝑒𝑀𝑖𝑛+𝑚 ∙𝑇𝑑𝑒𝑐𝑟𝑒𝑎𝑠𝑒𝐾𝑒𝑦 +𝑛 ∙𝑇 𝑖𝑛𝑠𝑒𝑟𝑡
![Page 12: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/12.jpg)
Алгоритм ДейкстрыВремя выполнения
› k-арная куча: Дерево со степенью ветвистости (макс) k
› Граф: 18М вершин, 42М ребер– Дейкстра ~ 1.5 s– CPU циклов ~ 30 ms– BFS 1.2 s дело не в куче
› Доступ к памяти является узким местом
k Запрос [s]
2 1.834
3 1.595
4 1.507
5 1.525
8 1.561
![Page 13: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/13.jpg)
Оптимизация Алгоритма ДейкстрыОбласть поиска
![Page 14: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/14.jpg)
Оптимизация Алгоритма ДейкстрыРанний выход
› Наблюдение– Алгоритм Дейкстры просматривает весь граф– , Много ненужной информации особенно когда и рядом друг с другом
› Идея– Остановить поиск как только удалена из очереди– Область поиска сужается до обработанных вершин к
моменту удаления › Корректность
– d[v] не меняется с момента удаления из очереди
![Page 15: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/15.jpg)
Оптимизация Алгоритма ДейкстрыРанний выход
![Page 16: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/16.jpg)
Оптимизация Алгоритма ДейкстрыРанний выход
![Page 17: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/17.jpg)
Оптимизация Алгоритма ДейкстрыМетки времени
› , Что может быть узким местом если запросы на ?одном и том же графе
![Page 18: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/18.jpg)
Оптимизация Алгоритма ДейкстрыМетки времени
![Page 19: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/19.jpg)
Оптимизация Алгоритма ДейкстрыМетки времени
![Page 20: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/20.jpg)
Оптимизация Алгоритма ДейкстрыМетки времени
› Задача– Много запросов на одном и том же графе– Инициализация при каждом запросе
› Идея– Для каждой вершины хранить метку времени run[v]– Использовать счетчик запросов– С помощью счетчика можно определить посещалась
ли вершина в ходе обработки текущего запроса
![Page 21: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/21.jpg)
Оптимизация Алгоритма ДейкстрыМетки времени
![Page 22: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/22.jpg)
Дейкстра: двунаправленный поиск
› : Наблюдение Кратчайший путь можно найти:используя– ( ) Обычный алгоритм Дейкстры прямой поиск из– Алгоритм Дейкстры на графе, полученном
изменением направления всех ребер на противоположное из t(обратный поиск)
![Page 23: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/23.jpg)
› : :Идея Скомбинируем оба поиска– « » Чередующийся прямой и обратный поиск– Закончить поиск как только оба поиска «достаточно
далеко продвинулись»– Объединить пути найденные обоими поисками
Дейкстра: двунаправленный поиск
![Page 24: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/24.jpg)
Дейкстра: двунаправленный поиск
› Запрос– Чередуем итерации прямого и обратного поиска– : Прямой релаксируем исходящие ребра– : Обратный релаксируем входящие ребра
![Page 25: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/25.jpg)
Дейкстра: двунаправленный поиск
› Проблема– Нужна информация об исходящих и входящих ребрах– Граф (почти) ненаправленный
![Page 26: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/26.jpg)
› Входной граф и вершины .› Для пусть развернутый граф, где
› Прямым поиском называется Дейкстра из на – Очередь , вектор расстояний
› Обратным поиском называется Дейкстра из на – Очередь , вектор расстояний
Дейкстра: двунаправленный поискОпределения
![Page 27: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/27.jpg)
Дейкстра: двунаправленный поискАлгоритм
› / Чередование итерация прямого обратногопоиска
› Вычисляем текущее расстояние и текущую промежуточную вершину
› При релаксации ребра обновляем min{} и промежуточную вершину
› По окончании поиска содержит и – кратчайший путь
› Когда можно прервать поиск?
![Page 28: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/28.jpg)
Дейкстра: двунаправленный поискСтратегия окончания поиска (1)
› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной
› Лежит ли на кратчайшем пути?
![Page 29: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/29.jpg)
Дейкстра: двунаправленный поискСтратегия окончания поиска (1)
› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной
› Стратегия (1) вычисляет корректно– Б.о.о. – Ясно, что – Пусть обработанные вершины прямого/обратного
поиска соответственно– Пусть покажем либо
![Page 30: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/30.jpg)
› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной
› Пусть покажем либо › Пусть тогда
Дейкстра: двунаправленный поискСтратегия окончания поиска (1)
![Page 31: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/31.jpg)
› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной
› Пусть покажем либо › Пусть тогда
Дейкстра: двунаправленный поискСтратегия окончания поиска (1)
![Page 32: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/32.jpg)
Дейкстра: двунаправленный поискСтратегия окончания поиска (2)
› (2)Стратегия– Закончить поиск как только
› Стратегия (2) вычисляет корректно– Б.о.о. – Ясно, что
![Page 33: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/33.jpg)
› (2)Стратегия– Закончить поиск как только
› Стратегия (2) вычисляет корректно› Пусть по окончанию поиска
– Тогда существует --Путь короче – На существует такое, что и – Т.е. и уже обработанные вершины (б.о.о. до ) – При релаксации путь P был был найден и
актуализирована› Таким образом,
Дейкстра: двунаправленный поискСтратегия окончания поиска (2)
![Page 34: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/34.jpg)
Дейкстра: двунаправленный поискСтратегия чередования итераций
› Возможные стратегии– Принципиально все возможно– Чередование шагов прямого и обратного поиска– Продолжать поиск с меньшим количеством вершин в
очереди– Продолжать поиск с меньшим минимальным элементом в очереди– Параллельное вычисление прямого и обратного 2 поиска на х ядрах
![Page 35: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/35.jpg)
Дейкстра: двунаправленный поискПример области поиска Дейкстра
![Page 36: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/36.jpg)
Дейкстра: двунаправленный поискПример области поиска двунаправленного Дейкстра
![Page 37: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/37.jpg)
Дейкстра: двунаправленный поискЗамечания
› Пусть область поиска является кругом радиуса r› › Параллельное вычисление 4ускорение
![Page 38: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/38.jpg)
ДейкстраРанг
› Проблема– Рандомизированные запросы малоинформативны– ?Дисперсия– ? На каких расстояниях достигается ускорение Длинных или коротких
› Идея– Относительно начальной вершины Дейкстра определяет линейный порядок– Обозначим порядок вершины относительно s– 1000 Выберем начальных вершин и проанализируем время выполнения запроса для нахождения вершин ранга
![Page 39: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3](https://reader031.fdocument.pub/reader031/viewer/2022022203/5874e8931a28ab917a8b52d5/html5/thumbnails/39.jpg)
› Выбросы для близкихзапросов
› Ускорение всегда 2около› Дисперсия выше чем для
Дейкстры› Много быстрых
запросов
Дейкстра: двунаправленный поискРанг