Алгоритм цикла отрицательного веса

Я думал об алгоритме нахождения цикла с отрицательным весом в ориентированном графе . Проблема в том, что у нас есть граф G (V, E), нам нужно найти эффективный алгоритм, чтобы найти цикл с отрицательным весом. Я понимаю алгоритм, описанный в этом PDF-документе.

Вкратце, алгоритм применяет алгоритм Беллмана Форда, повторяя | V | -1 раз, делая релаксации. Затем он проверяет, есть ли край, который можно еще больше ослабить, тогда существует цикл с отрицательным весом, и мы можем отследить его по родительским указателям, и все идет хорошо, мы находим цикл с отрицательным весом.

Однако я думал другого алгоритма простого использования поиска в глубину (DFS) на графике путем отслеживания суммы пройденных вами расстояний, я помечаю все узлы белым в начале и делаю их серыми, когда ищу путь, и пометьте их черным, когда они будут завершены, так я знаю, что нахожу цикл тогда и только тогда, когда я нахожу посещенный узел, и он серый (на моем пути), а не черный, который уже был завершен поиском в глубину, и поэтому для моего алгоритма, если я достигну серого узла, который уже был посещен, Я проверяю, что это за обновление (новое расстояние), и если оно ниже, чем раньше, я знаю, что у меня цикл отрицательного веса, и могу отследить его.

Мой алгоритм неверен? Если да, то можете ли вы найти контрпример? Если нет, можете ли вы помочь мне это доказать?

Спасибо

7
задан Saher Ahwal 5 April 2011 в 22:57
поделиться