Знаходження k-найкоротшого шляху між двома вузлами


9

Враховуючи зважений диграф та вагову функцію, , можна нормально використовувати алгоритм Діккстра для отримання найкоротшого шляху. Мене цікавить, як отримати шлях найкоротший, -коротший і так далі.G=V,Ed(u,v)2nd3rd

Запитання:

Чи існує ефективний алгоритм для отримання i-го найкоротшого шляху між двома вузлами у зваженому графі?

Чи є ефективний алгоритм для отримання k-самого короткого шляху між двома вузлами у зваженому графі?

Відповідь на будь-яку з них в порядку, хоча мені цікаво, чи можна відповісти на друге питання ефективніше, ніж вимагає відповіді на перше питання.k


2
Пошук Google за "k найкоротшими шляхами" виявляє ряд посилань, які описують алгоритми цієї проблеми. Також є стаття у Вікіпедії саме на цю тему: en.wikipedia.org/wiki/K_shortest_path_routing
DW

@DW Складіть відповідь із коротким підсумком?
Рафаель

Відповіді:


5

У задачі найкоротшим шляхом ми хочемо знайти шлях, що з'єднує задану вершинну пару з мінімальною загальною довжиною. Еппштейн [1] має алгоритм, що працює в час, щоб знайти найкоротші шляхи (що дозволяють цикли) між парою вершин у диграфі. Завдяки техніці роботи, ви також можете знайти весь шлях коротший, ніж деякий заданий поріг, за ті самі часові межі. На цю тему існує велика література, документ Еппштейна включає багато посилань та дискусій.kkO(m+nlogn+k)k

Якщо ви забороняєте цикли, ви можете подивитися алгоритм Hershberger та ін. [2].


[1] Еппштейн, Девід. "Знаходження k найкоротших шляхів." Журнал SIAM з обчислень 28.2 (1998): 652-673. [ CiteSeerX ]

[2] Хершбергер, Джон, Метью Максель і Субхаш Сурі. "Знаходження k найкоротших простих шляхів. Новий алгоритм та його реалізація." Угоди ACM за алгоритмами (TALG) 3.4 (2007): 45. [ CiteSeerX ]

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.