Лучший порядок прохождения алгоритма Беллмана-Форда для достижения минимального числа итераций? - PullRequest
2 голосов
/ 02 июня 2010

Каков наилучший порядок обхода ребер в алгоритме Беллмана-Форда, чтобы достичь минимального количества итераций, которые необходимы?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Если график ациклический, лучше всего обходить вершины в топологическом порядке. Это означает, что необходима только одна итерация алгоритма.

Для циклических графов без отрицательных ребер вы можете использовать общий алгоритм кратчайшего пути, как описано в этом файле PDF ( sssp.pdf ) с очередью Fifo, это может посещать меньше вершин, чем стандартный алгоритм Беллмана-Форда который зацикливается на вершинах, а затем ребер. На практике подход очереди Fifo часто быстрее, чем использование очереди приоритетов (Dijkstra), как упоминалось в этом ответе ( Существуют ли более быстрые алгоритмы, чем Dijkstra? ). Однако недостатком этого подхода является то, что в отличие от стандартного алгоритма Беллмана-Форда этот алгоритм не завершится, если граф имеет отрицательные циклы.

0 голосов
/ 20 января 2017

Мы не можем обобщить лучший порядок обхода, так что нет. количество итераций минимально, так как наилучший порядок обхода будет варьироваться от графика к графу, но да, вы получите кратчайшие пути из одного источника в большинстве | V | -1 итераций. Ни один граф не потребовал бы больше чем | V | -1 итераций, и если после итераций | V | -1 расстояние еще больше уменьшается, это означает, что граф содержит цикл с отрицательным фронтом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...