Должен ли алгоритм Дейкстры проверять все вершины? - PullRequest
0 голосов
/ 08 июня 2018

Мне недавно пришлось взглянуть на алгоритм Дейкстры, и это доказательство.

Доказательство алгоритма заканчивается во всех источниках, которые я смог найти с равенством количества всех вершин и количества всех посещенных вершин (например, R = V или S = ​​V).Более того, цикл while этого алгоритма завершается, когда Q (инициируемый как все вершины графа) становится пустым, поэтому необходимо посетить все вершины.

Я не понимаю, почему это так.Не существует графиков, где алгоритм не должен посещать все вершины, например: Начальная вершина связана с вершиной «найти» непосредственно с весом 1 и с другими вершинами с весом 10.

Надеюсь, выполучите проблему, которая у меня здесь.

Редактировать: Это псевдокод, который я использовал из Cormen:

enter image description here

1 Ответ

0 голосов
/ 08 июня 2018

Алгоритм Дейкстры в форме по умолчанию вычисляет кратчайшее расстояние от начального узла до всех подключенных узлов.Даже в этой форме он не посещает все узлы: необходимо проверять только вершины подключенного компонента.

Для кратчайшего пути между двумя узлами существует более эффективная версия, которая останавливается, когда все возможные маршруты длиннеечем самый короткий найденный до сих пор.Эта версия не всегда посещает все узлы подключенного подграфа.

...