Considera il percorso più breve da a t , s , v 1 , v 2 , … , v k , t . Questo percorso consiste al massimo | V | - 1 spigolo, perché ripetere un vertice in un percorso più breve è sempre una cattiva idea (o almeno esiste un percorso più breve che non ripete i vertici), se non abbiamo cicli di peso negativi.sts,v1,v2,…,vk,t|V|−1
Nel primo round, sappiamo che il bordo sarà rilassato, quindi la stima della distanza per v 1 sarà corretta dopo questo giro. Si noti che non abbiamo idea di cosa sia v 1 a questo punto, ma poiché abbiamo rilassato tutti i bordi, dobbiamo aver rilassato anche questo. Nel secondo round, ci rilassiamo ( v 1 , v 2 ) ad un certo punto. Non abbiamo ancora idea di cosa siano la v 1 o la v 2 , ma sappiamo che le loro stime di distanza sono corrette.(s,v1)v1v1(v1,v2)v1v2
Ripetendo questo, dopo alcuni round , ci siamo rilassati ( v k , t ) , dopo di che la stima della distanza per t è corretta. Non abbiamo idea di cosa sia k fino alla fine dell'intero algoritmo, ma sappiamo che accadrà ad un certo punto (supponendo che non ci siano cicli di peso negativi).k+1(vk,t)tk
Quindi, l'osservazione cruciale è che dopo il round , l' i -nodo del percorso più breve deve avere la sua stima della distanza impostata sul valore corretto. Poiché il percorso è al massimo | V | - 1 lato lungo, | V | - 1 round è sufficiente per trovare questo percorso più breve. Se un | V | il round cambia ancora qualcosa, quindi sta succedendo qualcosa di strano: tutti i percorsi dovrebbero già essere "sistemati" ai loro valori finali, quindi dobbiamo avere la situazione che esiste un ciclo di peso negativo.ioio|V|−1|V|−1|V|