User:Georgiraichovgeorgiev/sandbox

Намиране на отрицателни цикли
Когато алгоритъмът се използва за да намери най-кратките пътища, наличието на отрицателни цикли е проблем, попречва на алгоритъма да намери правилен отговор. Тъй като той прекратява изпълнението си при намиране на отрицателен цикъл, Белман-Форд алгоритъмът може да бъде използван за приложения в които това е търсената цел - например в техники за анулиране на цикъл при анализи на мрежови поток.

Приложения в маршрутизация
Разпространен вариант на алгоритъма на Белман-Форд се използва в дистанционно векторни протоколи за маршрутизация, например Маршрутизиращият Информационен Протокол (RIP). Алгоритъмът се разпределя, тъй като включва редица възли (рутери) в автономна система, колекция от IP мрежи, обикновено собственост на един доставчик на интернет услуги (ISP). Той се състой от следните стъпки:


 * 1) Всеки възел изчислява разстоянията между себе си и всички други възли в автономната система и съхранява тази информация във вид на таблица.
 * 2) Всеки възел изпраща своята таблица до всички съседни възли.
 * 3) Когато един възел получава таблица от своите съседни възли, изчислява най-кратките маршрути до всички други възли и актуализира своята собствена таблица за да отрази промените.

Основните недостатъци на Белман-Форд алгоритъма в тази настройка, са както следва:


 * Той не мащабира добре.
 * Промените в мрежовата топология не са отразени бързо, тъй като актуализациите са разделени възел по възел.
 * Count to infinit if link or node failures render a node unreachable from some set of other nodes, those nodes may spend forever gradually increasing their estimates of the distance to it, and in the meantime there may be routing loops.

Подобрения
Алгоритъмът на Белман-Форд може да бъде подобрен на практика (въпреки че не в най-лошия случай) както виждаме в случай, че ако една итерация от основният цикъл на алгоритъма завърши без да са направени никакви промени, то тогава алгоритъмът може незабавно да бъде прекратен, като последващите итерации няма да направят никакви промени. При това условие с преждевременно прекратяване, основният цикъл в някои случаи може да използва много по-малко итерации от колкото |V| &minus; 1, въпреки, че в най-лошият случай на алгоритъма, остава непроменен.

е описал още две подобрения на Белман-Форд алгоритъма за графика без негативни цикли; отново, докато на практика правят алгоритъма по-бърз, те не променят неговото O(|V|*|E|) в най-лошия случай обвързан с времето. Неговото първо подобрение намалява броя на стъпките за релаксация, които трябва да се извършат в рамките на всяка итерация на алгоритъма. If a vertex v has a distance value that has not changed since the last time the edges out of v were relaxed, then there is no need to relax the edges out of v a second time. In this way, as the number of vertices with correct distance values grows, the number whose outgoing edges need to be relaxed in each iteration shrinks, leading to a constant-factor savings in time for dense graphs.

Второто подобрение на Yen първо присвоява някакъв произволен линеен ред на всички върхове и след това разделя множеството от всички ръбове на две подгрупи. Първата група, Ef, съдържа всички ръбове (vi, vj) така, че i < j; втората, Eb, съдържа ръбове (vi, vj) така, че i > j. Всеки връх се посещава в ред v1, v2, ..., vundefined, релаксирайки всеки изходящ ръб от този връх в Eb.Всяка итерация от основният цикъл на алгоритъма, след първата, добавя най-малко два ръба към множеството от ръбове, чиито релаксирани разстояния намират най-кратките разстояния на пътищата: един от Ef и един от Eb. Тази модификация намалява броя на итерациите, в най-лошия случай, на основният цикъл на алгоритъма от |V| &minus; 1 до |V|/2.

Друго подобрение, от, замества произволният линеен ред използван във второто подобрене на Yen, с произволна пермутация. Поради тази промянa, става много малка вероятността, най-лошият случай от подобрението на Yen (в който ръбовете, на най-краткият път, стриктно се редуват между двете подгрупи Ef and Eb) да се случи. С произволно разместена върхова подредба, очакваният брой итерации, необходими в основният цикъл, е най-много |V|/3.