Я думал об алгоритме нахождения отрицательного весового цикла в ориентированном графе. Проблема в том, что у нас есть граф G (V, E), нам нужно найти эффективный алгоритм, чтобы найти цикл с отрицательным весом. Я понимаю алгоритм в этом документе PDF
Вкратце, алгоритм применяет алгоритм Беллмана Форда, повторяя | V | -1 раз, делая релаксации. После этого он проверяет, есть ли ребро, которое можно даже ослабить больше, затем существует отрицательный весовой цикл, и мы можем проследить его по родительским указателям, и все идет хорошо, мы находим отрицательный весовой цикл.
Тем не менее, я думал о другом алгоритме - просто использовать поиск по глубине (DFS) на графике, отслеживая сумму до пройденных вами расстояний, я отмечаю все узлы белыми в начале и делаю их серыми когда я ищу путь и помечаю их черным, когда они закончены, я знаю, что нахожу цикл тогда и только тогда, когда нахожу посещенный узел, и он серый (на моем пути), а не черный, который уже был закончен с помощью поиска в глубину и, таким образом, для моего алгоритма, если я достигну серого узла, который уже был посещен, я проверяю, каким будет его обновление (новое расстояние), и если оно ниже, чем раньше, я знаю, что у меня есть отрицательный весовой цикл и может проследить его обратно.
Мой алгоритм неверен? Если да, можете ли вы найти контрпример? Если нет, можете ли вы помочь мне доказать это?
Спасибо