Нахождение кратчайшего пути при наличии отрицательных циклов

13

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

Тем не менее, я заинтересован в поиске кратчайшего пути между двумя вершинами, в котором не задействовано циклирование (т.е. при условии, что вы не можете посещать одну и ту же вершину дважды). Эта проблема хорошо изучена? Можно ли использовать вариант алгоритма Беллмана-Форда, и если нет, то есть ли другое решение?

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

jleahy
источник

Ответы:

23

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

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

Таким образом, ваша проблема - NP-Hard.

BlueRaja - Дэнни Пфлугхофт
источник
1
Это красивый ответ. Я спросил нескольких людей об этом IRL без каких-либо решений, и когда я объяснил им это, их реакция была такой же, как и у меня - «конечно, я чувствую себя таким глупым сейчас».
Jleahy