Найдите самый длинный путь в направленном циклическом графе из источника S до пункта назначения F. Предположим, не существует положительных циклов веса

StackOverflow https://stackoverflow.com/questions/3856766

  •  27-09-2019
  •  | 
  •  

Вопрос

Я должен найти самый длинный путь в направленном циклическом графике из источника S до места назначения F. Предположим, что не существует положительных циклов веса, даже если не существуют положительные циклы веса, циклы 0 или отрицательных весов не существуют. Может кто-то предложить алгоритм для поиска самого длинного пути в этом случае. Пожалуйста, обратитесь к источнику, если это возможно.

спасибо

Это было полезно?

Решение

Я не уверен, будет ли это работать (нужно проверить это), но ... вы можете сделать что-то похожее на:

Позволять min = min weight on the graph.
max = max weight on the graph.
Установите новые веса для всех ребер = wNew(e) = max - (wOld(e)-min).

Теперь есть негативные улочки, и веса находятся в обратном порядке (означает, что если w(e1) был больше w(e2) Это сейчас меньше).

Что если мы сейчас найдем кратчайший путь?

Другие советы

Просто отрицайте свои тяжелые весики и запустите кратчайший алгоритм пути (например, Bellman-Ford).

Циклы нулевого веса могут быть проблемой. Вам нужно будет сломать галстуки на ваших путях, выбирая самый короткий (по длине, не в весе). Один из способов сделать это, чтобы ваши весы были парой (- (оригинальный вес), 1), добавьте их в полной мере и делать лексикографические заказы.

Смотрите также Самый длинный путь между двумя вершинами

Если у вас есть DCG, вы можете просто петь навсегда, прежде чем добраться до своей цели, это был бы «самый длинный путь». В этом случае вопрос неполный, и алгоритм, вероятно, выглядит разным в зависимости от специфики.

Это звучит как домашнее задание.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top