2016-05-16 3 views
0

Учитывая график, который имеет отрицательные веса, но мы знаем наверняка это не имеет никакого отрицательного цикла:Можем ли мы использовать Dijkstra в этом случае?

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

Правильно ли это, если у нас нет отрицательных циклов? Если у нас есть отрицательные циклы, мы не сможем использовать этот алгоритм, так как ему нужно будет пересмотреть узлы Dijkstra, отмеченные как завершенные.

ответ

5

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

Таким образом, вы не можете применять Дийкстра, даже если нет отрицательного кругового цикла.

+0

Спасибо за ответ! Если я оставлю негативы весом, но точно знаю, что не будет отрицательного цикла, будет ли Дейкстра работать? – MATH000

+0

@ MATH000 проверьте эту ссылку. http://stackoverflow.com/questions/13159337/why-doesnt-dijkstras-algorithm-work-for-negative-weight-edges –

+0

Спасибо за ссылку, но все примеры имеют отрицательные циклы. Можете ли вы привести один пример, когда Dijkstra выходит из строя на графике без отрицательного цикла? – MATH000

Смежные вопросы