Caminhos mínimos

Relaxação, Dijkstra, Bellman-Ford, DAG, Floyd-Warshall e Johnson, com condições e reconstrução.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Relaxação

d[s]=0d[s]=0, restantes +∞+\infty. Relaxar u→vu\to v testa d[u]+w<d[v]d[u]+w<d[v] com d[u]d[u] finito. Cada valor finito é custo de caminho conhecido, um limite superior. Atualiza predecessor só em melhoria estrita.

Escolher o método

SituaçãoMétodoHipóteseCusto
Pesos não negativos, uma origemDijkstraFixa menor provisório; prova usa não negatividade do restoO((n+m)log⁡n)O((n+m)\log n); denso O(n2)O(n^2) com matriz
Pesos arbitrários, uma origemBellman-Fordn−1n-1 passagens; extra com melhoria denuncia ciclo negativo alcançávelO(nm)O(nm)
DAG, uma origemOrdem topológicaTodos antecessores antes; admite negativosO(n+m)O(n+m)
Todos os pares, densoFloyd-Warshallkk exterior; diagonal negativa denuncia cicloΘ(n3)\Theta(n^3), Θ(n2)\Theta(n^2) espaço
Todos os pares, esparsoJohnsonSem ciclos negativos; repesa com hhO(nm+n(n+m)log⁡n)O(nm+n(n+m)\log n)

Condições que decidem

  • Dijkstra fixa cedo demais com s→a=2s\to a=2, s→b=5s\to b=5, b→a=−4b\to a=-4: fixa 2 e perde 1. Ausência de ciclo negativo não chega.
  • Bellman-Ford: n−1n-1 passagens contemplam todos os caminhos com até n−1n-1 arestas; a versão in-place pode antecipar melhorias na mesma passagem. Uma passagem extra com melhoria desde a origem denuncia ciclo negativo alcançável.
  • Ciclo negativo alcançável deixa pares sem mínimo finito; não devolvas cadeia como caminho mínimo.
  • DAG: não somes infinito de vértices antes da origem.
  • Floyd: D(k)[i,j]=min⁡(D(k−1)[i,j],D(k−1)[i,k]+D(k−1)[k,j])D^{(k)}[i,j]=\min(D^{(k-1)}[i,j],D^{(k-1)}[i,k]+D^{(k-1)}[k,j]). Inicializa com menor paralelo e autoaresta negativa. Guarda next para reconstruir.
  • Johnson: w′=w+h(u)−h(v)≥0w'=w+h(u)-h(v)\ge0 com hh de Bellman-Ford desde qq; recupera δ=δ′−h(s)+h(t)\delta=\delta'-h(s)+h(t). Somar constante a todas as arestas não preserva mínimos.

Execução e reconstrução.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.