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


13

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

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

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

Ответы:


23

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

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

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


1
Это красивый ответ. Я спросил нескольких людей об этом IRL без каких-либо решений, и когда я объяснил им это, их реакция была такой же, как и у меня - «конечно, я чувствую себя таким глупым сейчас».
Jleahy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.