Coding Interview Prep · Aula

Floyd-Warshall para Todos os Pares

Encontre caminhos mínimos entre todos os pares.

Aula 4 de 413 etapas

Floyd-Warshall para Todos os Pares é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.

Todos os pares de uma vez

Às vezes, você precisa do caminho mínimo entre cada par de nós, e não apenas a partir de uma origem. Esse é o problema de todos os pares.

Conheça Floyd-Warshall

O Floyd-Warshall preenche uma tabela completa de distâncias para todos os pares com três laços aninhados organizados e quase nenhuma preparação.

A matriz de distâncias

Use uma matriz em que dist[i][j] é o melhor custo conhecido de i até j. Inicialize-a com as arestas diretas fornecidas.

dist = [[INF] * n for _ in range(n)]

Defina a diagonal

Todo nó alcança a si mesmo gratuitamente, então defina a diagonal dist[i][i] como zero antes de começar os relaxamentos.

for i in range(n):
    dist[i][i] = 0

A ideia do intermediário

O truque é permitir que os caminhos passem por um nó intermediário k e verificar se passar por k é mais barato que ir diretamente.

A ordem dos laços importa

O laço externo é k, o ponto intermediário escolhido. Os laços internos i e j testam cada par em relação a esse ponto intermediário.

for k in range(n):
  for i in range(n):
    for j in range(n):

A etapa de relaxamento

Para cada par, relaxe passando por k: se ir de i até k e depois até j for mais curto, atualize dist[i][j] para esse custo combinado.

if dist[i][k] + dist[k][j] < dist[i][j]:
    dist[i][j] = dist[i][k] + dist[k][j]

Por que k fica do lado de fora

Quando k termina, todos os pares podem usar pontos intermediários até k. Colocar k no laço mais externo mantém essa garantia correta.

Arestas negativas não são um problema

O Floyd-Warshall aceita arestas negativas, mas não ciclos negativos. Um ciclo negativo faz alguma entrada da diagonal ficar abaixo de zero.

O tempo de execução

Três laços sobre n nós resultam em tempo O(n^3) e espaço O(n^2), sendo viável apenas quando n permanece na casa de algumas centenas.

Quando escolhê-lo

Escolha o Floyd-Warshall quando o grafo for pequeno e denso e você realmente precisar da distância entre cada par, não apenas das distâncias a partir de uma origem.

Verificação rápida

Qual laço deve ser o mais externo no Floyd-Warshall?

Revisão: Floyd-Warshall

Inicialize uma matriz, defina a diagonal como zero e percorra k, i, j, relaxando através de k. Caminhos mínimos entre todos os pares em O(n^3). 🧮

Grátis para começar

Aprenda Coding Interview Prep com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
90
Aulas
360

Perguntas Frequentes

A aula “Floyd-Warshall para Todos os Pares” é grátis?

Sim — o texto completo de “Floyd-Warshall para Todos os Pares” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.

O que vou aprender em “Floyd-Warshall para Todos os Pares”?

Encontre caminhos mínimos entre todos os pares. Você pratica Coding Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Coding Interview Prep?

Nenhuma experiência prévia é necessária. Coding Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Floyd-Warshall para Todos os Pares”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Coding Interview Prep?

Sim. Cada aula de Coding Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Dijkstra com uma Heap
  2. BFS 0-1 com uma Deque
  3. Bellman-Ford e Arestas Negativas
  4. Floyd-Warshall para Todos os Pares
← Voltar para Coding Interview Prep