У меня есть ориентированный граф с циклами. Все ребра взвешены, и веса могут быть отрицательными. Могут быть отрицательные циклы.

Я хочу найти путь от s до t, который минимизирует общий вес пути. Конечно, он может доходить до отрицательной бесконечности, когда существуют отрицательные циклы. Но что, если я запрещаю циклы в пути (не в исходном графе)? То есть, как только путь покидает узел, он не может снова войти в узел.

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

Заранее большое спасибо.

Изменить: возможно, я слишком обобщил свою исходную проблему. В самом деле, мне дан циклический ориентированный граф с неотрицательными весами ребер. Но кроме того, у каждого узла есть и положительное вознаграждение. Я хочу найти простой путь, который минимизирует (сумма весов ребер на пути) - (сумма вознаграждений узлов, покрываемых путем). Это, безусловно, можно преобразовать в вопрос, который я разместил, но некоторая структура потеряна. И некоторый намек из субмодульного анализа предполагает, что эта проблема мотивации не является сложной NP. Большое спасибо

2
Janathan 22 Окт 2013 в 18:28

1 ответ

Лучший ответ

Я скопирую свой ответ из этого вопроса на Stackexchange по теории CS:

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

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

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

2
Community 20 Июн 2020 в 12:12
О, если подумать, возможно, я слишком обобщил свою исходную проблему. В самом деле, мне дан циклический ориентированный граф с неотрицательными весами ребер. Но кроме того, у каждого узла есть и положительное вознаграждение. Я хочу найти простой путь, который минимизирует (сумма весов ребер на пути) - (сумма вознаграждений узлов, покрываемых путем). Это, безусловно, можно преобразовать в вопрос, который я разместил, но некоторая структура потеряна. И некоторый намек из субмодульного анализа предполагает, что эта проблема мотивации не является сложной NP. Большое спасибо.
 – 
Janathan
22 Окт 2013 в 19:40
@Janathan: Ваш новый вопрос по сути такой же, как этот (на который я тоже случайно ответил :)) < / я>. Однако в будущем вместо того, чтобы полностью менять свой вопрос, просто задайте новый вопрос.
 – 
BlueRaja - Danny Pflughoeft
22 Окт 2013 в 20:03
1
Большое спасибо, Дэнни. Я повторно разместил вопрос по адресу cstheory.stackexchange.com/questions/19483/…
 – 
Janathan
22 Окт 2013 в 20:31