Отримання негативного циклу за допомогою Bellman Ford


20

Я повинен знайти негативний цикл у спрямованому зваженому графіку. Я знаю, як працює алгоритм Беллмана Форда, і це говорить мені, чи є недоступний негативний цикл. Але це прямо не називає.

Як я можу отримати фактичний шлях циклу?v1,v2,vk,v1

Після застосування стандартного алгоритму ми вже зробили ітерацій, і подальше вдосконалення не повинно бути можливим. Якщо ми все-таки зможемо зменшити відстань до вузла, існує негативний цикл.n1

Моя ідея: Оскільки ми знаємо край, який все ще може покращити шлях, і ми знаємо попередника кожного вузла, ми можемо простежити свій шлях назад від цього краю, поки ми не зустрінемо його знову. Тепер у нас повинен бути наш цикл.

На жаль, я не знайшов жодного паперу, який би сказав мені, чи правильно це. Отже, чи справді це працює так?

Редагувати: Цей приклад підтверджує, що моя ідея неправильна. З огляду на наступний графік, ми запускаємо Bellman-Ford з вузла .1

введіть тут опис зображення

Обробляємо ребра в порядку . Після ітерацій ми отримуємо відстані вузлів:a,b,c,dn1
1:5
2:30
3:15

та батьківська таблиця: має батьківський має батьківський має батьківський
13
23
32

Тепер, роблячи ту ітерацію, ми бачимо, що відстань вузла можна ще вдосконалити за допомогою краю . Отже, ми знаємо, що негативний цикл існує і частина є.n1aa

Але, простеживши наш шлях назад через батьківську таблицю, ми застряємо в іншому негативному циклі і ніколи не зустрінемося знову.аc,da

Як ми можемо вирішити цю проблему?

Відповіді:


14

v1

с


посилання розірвано.
human.js


Я просто використав ідею професора Хуанга, але не розумію, чому він додає і новий вихідний вузол, і нову ціль ( s'і t'). Мені здалося, що новий вузол джерела, з'єднаний усіма існуючими вершинами краєм будь-якої довжини, поверне всі цикли.
AbuNassar

0

Ваш приклад не суперечить вашій ідеї. Дійсно, ви знайшли негативний цикл. Я думаю, що ідея, яку демонструє ваш приклад, полягає в тому, що вершина джерела може бути не вузлом у негативному циклі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.