Hoje eu vou lhe ensinar o algotimo Floyd-Warshal
Primeiro. Vamos revisar o lugar que ele ocupa entre os outros algoritmos de caminho mais curto
Anteriormente, nós aprendemos que Dijsktra mostra o menor caminho  de um vértice para todos os outros
Bellman-Ford é parecido, porém arestas negativas *são* permitidas
Floyd-Warshal é diferente porque descobre o  menor caminho entre *todos* os pares de vértices
E claro, nenhum desses algoritmos permite ciclos negativos
Nós vamos começar com um pseudocódigo, mas não se assuste
Nós vamos analisá-lo passo a passo
Primeiro, precisamos de um grafo
Nós usamos esse da direita, com 4 vértices
Nós criamos uma matriz de distancias que mantém o valor do menor caminho entre os vértices
Por exemplo
Linha 3 coluna 4 vai guardar o menor caminho do vértice 3  para o vértice 4
Vamos inicializar  o caminho de cada vértice para si mesmo com 0
O nosso próximo passo é iterar pelas arestas do grafo e preencher a matriz com os pesos correspondentes
Nós começaremos com a aresta 1->3 que tem o peso  -2
E adicionar seu valor na matriz
Nós iteramos sobre o resto das arestas, adicionando seus pesos na matriz
Nós estamos prontos para a parte mais importante do algoritmo, o for aninhado.
Eu vou esconder a maior parte do pseudocódigo
já que nosso foco está na condicional e nas 3 variáveis contadoras
i, j e k
Nós começamos com todas contendo o valor 1
Vamos preencher os índices correspondentes na nossa matriz
Como você pode ver, a condição não é satisfeita. então nós não atualizamos nossa matriz
Atribuindo 2 a j, nós vemos os mesmo resultado
Igualmente, quando j é 3 e 4, nossa condicional não é satisfeita
e nós não atualizamos a matriz
Isso pode ser entediante, então vamos pular para uma iteração interessante
Com k ainda igual a 1, i = 2 e j = 3
Usando esses valores, nós vemos que dessa vez condição é satisfeita
então, nós atualizamos o caminho  2 -> 3 com um peso menor, que é 2
Novamente, vamos pular para uma iteração interessante
Dessa vez com k = 2, i = 4 e j = 1
Encontramos um novo menor caminho entre 4 e 1 com o peso 3
Então atualizamos nossa matriz
Agora eu tenho certeza que você vê o padrão e o fluxo do for aninhado
Eu vou lhe mostrar o resto do algoritmo sem narração
e eu vou pular as iterações que não afetam a matriz
Essa é a ultima iteração que afeta a matriz
Aqui está nosso resultado
uma matriz com o menor caminho entre todos os pares de vértices
A complexidade desse algoritmo é O(V³), onde V é o número de vértices
Por isso, eu não imagino que lhe peçam pra fazer isso manualmente
mas espero que esse vídeo lhe ajude a melhorar sua compreensão sobre o algoritmo
e sua habilidade de programa-lo
Como sempre, obrigado por assistir !
Tem muito mais por vir, então por favor comentem suas sugestões abaixo
