Pela subestrutura �tima nossa recorr�ncia ter� dois par�metros: - n�mero i m�ximo de arestas no caminho m�nimo - v�rtice v destino do caminho e escolher� o m�nimo entre dois casos: 1) caminho m�nimo at� o pr�prio v�rtice destino v, mas com n�mero m�ximo de arestas i-1 2) caminho m�nimo com no m�ximo i-1 arestas at� um vizinho de v que tenha aresta incidindo nele - note que, n�o sabemos de qual vizinho vir� o melhor caminho, por isso temos que verificar todos - sendo \delta_in(v) o conjunto de arestas incidindo (entrando) no v�rtice v - o caso 2 na verdade s�o |\delta_in(v)| casos, um para cada uma dessas arestas Desse modo, para todo v em V e i em {1, 2, ...}, nossa recorr�ncia fica assim A[i, v] = min { A[i-1, v] , min_{(w,v) \in E} {A[i-1, w] + c(w,v) } } - sendo que o primeiro termo do m�nimo externo corresponde ao caso 1 - e o segundo termo (o m�nimo interno) corresponde ao caso 2 A princ�pio n�o definimos para quantos valores de i vamos ter de calcular a recorr�ncia - no entanto, note que se n�o temos circuitos negativos sempre temos caminhos m�nimos com no m�ximo n-1 arestas - isso porque qualquer caminho com n ou mais arestas tem que repetir v�rtices - e, portanto, forma pelo menos um circuito - como os circuitos s�o n�o negativos, o mesmo pode ser removido do caminho e o custo desse n�o piora - assim, basta calcularmos nossa recorr�ncia para i variando de 1 at� n-1 para encontrar todos o caminhos m�nimos