У меня есть ориентированный граф с циклами. Все ребра взвешены, и веса могут быть отрицательными. Могут быть отрицательные циклы.
Я хочу найти путь от s до t, который минимизирует общий вес пути. Конечно, он может доходить до отрицательной бесконечности, когда существуют отрицательные циклы. Но что, если я запрещаю циклы в пути (не в исходном графе)? То есть, как только путь покидает узел, он не может снова войти в узел.
Это, безусловно, позволяет избежать проблемы отрицательной бесконечности, но, что удивительно, поиском в Google не найдено ни одного известного алгоритма. Наиболее близким является алгоритм Флойда – Уоршалла, но он не допускает отрицательных циклов.
Заранее большое спасибо.
Изменить: возможно, я слишком обобщил свою исходную проблему. В самом деле, мне дан циклический ориентированный граф с неотрицательными весами ребер. Но кроме того, у каждого узла есть и положительное вознаграждение. Я хочу найти простой путь, который минимизирует (сумма весов ребер на пути) - (сумма вознаграждений узлов, покрываемых путем). Это, безусловно, можно преобразовать в вопрос, который я разместил, но некоторая структура потеряна. И некоторый намек из субмодульного анализа предполагает, что эта проблема мотивации не является сложной NP. Большое спасибо
1 ответ
Я скопирую свой ответ из этого вопроса на Stackexchange по теории CS:
Пути без повторяющихся вершин называются простыми путями, так что вы ищем кратчайший простой путь в графе с отрицательными циклами.
Это можно уменьшить с помощью проблемы самого длинного пути. Если бы для вашей проблемы существовало быстрое решение, тогда для графа с положительными весами ребер отрицание всех весов ребер и запуск вашего решателя дало бы самый длинный путь в исходном графе.
Таким образом, ваша проблема NP-Hard.
Похожие вопросы
Новые вопросы
graph
Этот тег «график» относится к графическому представлению данных, например диаграмма или диаграмма. Для математического понятия используйте [теория графов].