Considere o caminho mais curto de a t , s , v 1 , v 2 , … , v k , t . Este caminho consiste em no máximo | V | - 1 arestas, porque repetir um vértice no caminho mais curto é sempre uma má ideia (ou pelo menos existe um caminho mais curto que não repita vértices), se não tivermos ciclos de peso negativos.sts , v1, v2, … , Vk, t| V| -1
Na primeira rodada, sabemos que a aresta será relaxada; portanto, a distância estimada para v 1 estará correta após essa rodada. Observe que não temos idéia do que é v 1 neste momento, mas como relaxamos todas as arestas, devemos ter relaxado essa também. Na segunda rodada, relaxamos ( v 1 , v 2 ) em algum momento. Ainda não temos idéia do que v 1 ou v 2 são, mas sabemos que suas estimativas de distância estão corretas.( s , v1)v1v1( v1,v2)v1v2
Repetindo isso, depois de alguma rodada , relaxamos ( v k , t ) , após o qual a estimativa de distância para t está correta. Não temos idéia do que é k até que todo o algoritmo termine, mas sabemos que isso acontecerá em algum momento (supondo que não haja ciclos de peso negativos).k + 1( vk, T )tk
Portanto, a observação crucial é que, após a rodada , o i- ésimo nó do caminho mais curto deve ter sua estimativa de distância definida no valor correto. Como o caminho é no máximo | V | - 1 aresta de comprimento, | V | - 1 rodada é suficiente para encontrar o caminho mais curto. Se um | V | A rodada ainda muda algo, então algo estranho está acontecendo: todos os caminhos já devem estar "estabelecidos" para seus valores finais, portanto, devemos ter a situação de que existe algum ciclo de peso negativo.EuEu| V| -1| V| -1| V|