Влияние на кратчайшие пути после удаления ребер

Был предоставлен ввод ориентированного графа, и я нашел кратчайшие пути к конкретному узлу «T», используя как асинхронный, так и синхронный алгоритм Беллмана-Форда. Я пытался выяснить влияние на кратчайшие пути после удаления некоторых ребер. В своем подходе я пытался пометить расстояния в начальных узлах удаленных ребер как бесконечность и пытался применить асинхронный метод Беллмана-Форда, но я застревал в этой точке, потому что другие узлы не обновляли свое значение, поскольку у них уже есть самое короткое минимальное значение пути.

Может ли кто-нибудь помочь мне найти способ найти новые кратчайшие пути без повторного запуска полного алгоритма на новом графике?


person LearningToCode    schedule 04.11.2015    source источник


Ответы (1)


Тебе нельзя. И простое объяснение можно найти в самом алгоритме Беллмана-Форда:

Если V - это набор узлов. Минимальный путь от начального узла к любому другому узлу будет проходить максимум | V | узлов (| V | -1 ребра). Это причина, по которой вы расслабляете края на | V | -1 раз, так что «информация» от всех узлов будет распространяться к источнику.

Если вы уже применили алгоритм Беллмана-Форда на графике, вы можете начать ослаблять всех соседей удаленного узла и распространять изменения на их соседей до пути, который не использовал удаленный узел (пока не будут сделаны обновления). Осознавая отрицательный цикл.

person mihai.ciorobea    schedule 04.11.2015