Поиск кратчайших путей в дорожных сетях: от теории к...

39
Алгоритм Дейкстры Виталий Осипов Слайды основаны на лекциях, читавшихся в летнем семестре на факультете информатики KIT. http://i11www.iti.uni-karlsruhe.de/teaching/sommer2015/routenplanung/index

Transcript of Поиск кратчайших путей в дорожных сетях: от теории к...

Page 1: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Алгоритм ДейкстрыВиталий Осипов

Слайды основаны на лекциях, читавшихся в летнем семестре на факультете информатики KIT.http://i11www.iti.uni-karlsruhe.de/teaching/sommer2015/routenplanung/index

Page 2: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Постановка задачи

› Дано– Граф c весовой функцией

› Задача– Вычислить – Вычислить кратчайший --Путь

Page 3: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Постановка задачиСвойства

› Ацикличность– Кратчайшие пути не содержат

циклов› Остовность

– Объединение всех кратчайших путей из s является DAG, а именно деревом

› Наследственность – Все подпути кратчайшего пути

являются кратчайшими путями› Расстояние

– Расстояние возрастает от корня к листьям

Page 4: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› Сложность зависит от входного графа– Веса неотрицательны– Циклы с отрицательным общим весом– Простой путь – путь без повторяющихся вершин

› Варианты задачи– Веса неотрицательны: Алгоритм Дейкстры ( )– Веса могут быть отрицательными, но нет

отрицательных циклов: Алгоритм Беллмана-Форда ( )– Веса могут быть отрицательными, поиск кратчайшего

простого пути: NP сложна (сведение от задачи нахождения самого длинного пути)

Расчет кратчайшего пути

Page 5: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Расчет кратчайшего пути

› Задача нахождения самого длинного пути› Дано

– Направленный, взвешенный граф с весовой функцией – Число – Вершины

› Найти– Существует ли простой --путь длинны

› Задача NP сложна (Гэри Джонсон 79)

Page 6: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Расчет кратчайшего путиАлгоритм Дейкстры

Page 7: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Расчет кратчайшего путиАлгоритм Дейкстры

› Дано Граф , начальная вершина › Идея: Поиск в по мере увеличение расстояния

от

Page 8: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Расчет кратчайшего путиРелаксация ребер

Page 9: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› Релаксация ребер

› Посещенные вершины (visited) – те, которые были добавлены в очередь

› Обработанные вершины – те, которые были добавлены в очередь и вновь удалены из нее

Расчет кратчайшего путиРелаксация ребер

Page 10: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Алгоритм ДейкстрыВремя выполнения

Page 11: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Алгоритм ДейкстрыВремя выполнения

𝑇 𝑑𝑖𝑗𝑘𝑠𝑡𝑟𝑎=𝑇 𝑖𝑛𝑖𝑡+𝑛 ∙𝑇 𝑑𝑒𝑙𝑒𝑡𝑒𝑀𝑖𝑛+𝑚 ∙𝑇𝑑𝑒𝑐𝑟𝑒𝑎𝑠𝑒𝐾𝑒𝑦 +𝑛 ∙𝑇 𝑖𝑛𝑠𝑒𝑟𝑡

Page 12: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Алгоритм ДейкстрыВремя выполнения

› 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

Оптимизация Алгоритма ДейкстрыОбласть поиска

Page 14: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыРанний выход

› Наблюдение– Алгоритм Дейкстры просматривает весь граф– , Много ненужной информации особенно когда и рядом друг с другом

› Идея– Остановить поиск как только удалена из очереди– Область поиска сужается до обработанных вершин к

моменту удаления › Корректность

– d[v] не меняется с момента удаления из очереди

Page 15: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыРанний выход

Page 16: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыРанний выход

Page 17: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыМетки времени

› , Что может быть узким местом если запросы на ?одном и том же графе

Page 18: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыМетки времени

Page 19: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыМетки времени

Page 20: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыМетки времени

› Задача– Много запросов на одном и том же графе– Инициализация при каждом запросе

› Идея– Для каждой вершины хранить метку времени run[v]– Использовать счетчик запросов– С помощью счетчика можно определить посещалась

ли вершина в ходе обработки текущего запроса

Page 21: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Оптимизация Алгоритма ДейкстрыМетки времени

Page 22: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поиск

› : Наблюдение Кратчайший путь можно найти:используя– ( ) Обычный алгоритм Дейкстры прямой поиск из– Алгоритм Дейкстры на графе, полученном

изменением направления всех ребер на противоположное из t(обратный поиск)

Page 23: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› : :Идея Скомбинируем оба поиска– « » Чередующийся прямой и обратный поиск– Закончить поиск как только оба поиска «достаточно

далеко продвинулись»– Объединить пути найденные обоими поисками

Дейкстра: двунаправленный поиск

Page 24: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поиск

› Запрос– Чередуем итерации прямого и обратного поиска– : Прямой релаксируем исходящие ребра– : Обратный релаксируем входящие ребра

Page 25: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поиск

› Проблема– Нужна информация об исходящих и входящих ребрах– Граф (почти) ненаправленный

Page 26: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› Входной граф и вершины .› Для пусть развернутый граф, где

› Прямым поиском называется Дейкстра из на – Очередь , вектор расстояний

› Обратным поиском называется Дейкстра из на – Очередь , вектор расстояний

Дейкстра: двунаправленный поискОпределения

Page 27: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискАлгоритм

› / Чередование итерация прямого обратногопоиска

› Вычисляем текущее расстояние и текущую промежуточную вершину

› При релаксации ребра обновляем min{} и промежуточную вершину

› По окончании поиска содержит и – кратчайший путь

› Когда можно прервать поиск?

Page 28: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискСтратегия окончания поиска (1)

› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной

› Лежит ли на кратчайшем пути?

Page 29: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискСтратегия окончания поиска (1)

› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной

› Стратегия (1) вычисляет корректно– Б.о.о. – Ясно, что – Пусть обработанные вершины прямого/обратного

поиска соответственно– Пусть покажем либо

Page 30: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной

› Пусть покажем либо › Пусть тогда

Дейкстра: двунаправленный поискСтратегия окончания поиска (1)

Page 31: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› (1)Стратегия– Закончить поиск как только существует вершина m, которая в обоих поисках является обработанной

› Пусть покажем либо › Пусть тогда

Дейкстра: двунаправленный поискСтратегия окончания поиска (1)

Page 32: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискСтратегия окончания поиска (2)

› (2)Стратегия– Закончить поиск как только

› Стратегия (2) вычисляет корректно– Б.о.о. – Ясно, что

Page 33: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› (2)Стратегия– Закончить поиск как только

› Стратегия (2) вычисляет корректно› Пусть по окончанию поиска

– Тогда существует --Путь короче – На существует такое, что и – Т.е. и уже обработанные вершины (б.о.о. до ) – При релаксации путь P был был найден и

актуализирована› Таким образом,

Дейкстра: двунаправленный поискСтратегия окончания поиска (2)

Page 34: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискСтратегия чередования итераций

› Возможные стратегии– Принципиально все возможно– Чередование шагов прямого и обратного поиска– Продолжать поиск с меньшим количеством вершин в

очереди– Продолжать поиск с меньшим минимальным элементом в очереди– Параллельное вычисление прямого и обратного 2 поиска на х ядрах

Page 35: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискПример области поиска Дейкстра

Page 36: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискПример области поиска двунаправленного Дейкстра

Page 37: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

Дейкстра: двунаправленный поискЗамечания

› Пусть область поиска является кругом радиуса r› › Параллельное вычисление 4ускорение

Page 38: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

ДейкстраРанг

› Проблема– Рандомизированные запросы малоинформативны– ?Дисперсия– ? На каких расстояниях достигается ускорение Длинных или коротких

› Идея– Относительно начальной вершины Дейкстра определяет линейный порядок– Обозначим порядок вершины относительно s– 1000 Выберем начальных вершин и проанализируем время выполнения запроса для нахождения вершин ранга

Page 39: Поиск кратчайших путей в дорожных сетях: от теории к реализации, осень 2016: Лекция 3

› Выбросы для близкихзапросов

› Ускорение всегда 2около› Дисперсия выше чем для

Дейкстры› Много быстрых

запросов

Дейкстра: двунаправленный поискРанг