Что значит найти самый дешевый путь от А до Б, если каждый раз, когда вы путешествуете от С до D, вы получаете оплачено ?
Если между двумя узлами отрицательный вес, то «кратчайший путь» - это петля назад и вперед между этими двумя узлами навсегда. Чем больше прыжков, тем «короче» путь.
Это не имеет ничего общего с алгоритмом, и все это связано с невозможностью ответить на такой вопрос.
Редактировать
Приведенная выше претензия предполагает двунаправленные ссылки. Если нет циклов, которые имеют общий отрицательный вес, у вас нет способа зацикливаться вечно, получая оплату.
В таком случае алгоритм Дейкстры все еще может потерпеть неудачу:
Рассмотрим два пути:
- оптимальный путь, который стоит до 100, прежде чем пересечь последний край, который имеет вес -25, что дает в общей сложности 75, и
- неоптимальный путь, не имеющий отрицательно взвешенных ребер с общей стоимостью 90.
Алгоритм Дейкстры сначала исследует неоптимальный путь и объявит себя завершенным, когда найдет его. Он никогда не найдет подпуть, который хуже первого найденного решения