LINUX.ORG.RU

[алгоритмы]Путь в графе заданной длины

 


0

1

Задан неориентированный граф (в том числе может быть достаточно большим, скажем, миллион вершин и двадцать миллионов ребер), каждому ребру приписан положительный вес, выбраны две его вершины, A и B. Требуется найти простой путь (не содержащий циклов) от A до B, сумма весов ребер которого бы минимально (по сравнению со всеми другими возможными путями от A до B) отличалась от заданного числа L.

Кто-нибудь может посоветовать хороший алгоритм для решения задачи?

★★
Ответ на: комментарий от ringill

>> В заданной формулировке задача NP-полная.

Подскажите доказательство?

Ну.. Есть такие рассуждения: Задача комивояжера сводится к задаче поиска максимального пути без циклов, которая в свою очередь сводится к задаче ТС.

Waterlaz ★★★★★
()
Ответ на: комментарий от Waterlaz

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

Как я только что понял, можно добавить в граф ещё две вершины и соединить одну из них с A, вторую с B, и тогда «любой простой путь через все вершины» как раз и будет содержать в себе простой путь от A до B.

Выходит что да, задача NP-трудная.

ringill
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.