Percursos e componentes em grafos

BFS, DFS, ordenação topológica, bipartição e componentes fortemente conexas com Kosaraju e Tarjan.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Escolher o percurso

SituaçãoMétodoCondiçãoCusto
Menor número de arestas desde ssBFS com filaPesos iguais ou ignorados; marcar ao inserirO(n+m)O(n+m)
Explorar ramos e detetar ciclosDFS com regressoReiniciar em cada vértice por visitarO(n+m)O(n+m)
Ordenar dependênciasKahn ou DFS invertidaDAG; Kahn deve emitir nnO(n+m)O(n+m)
Regiões mutuamente alcançáveisKosaraju ou TarjanGrafo dirigidoO(n+m)O(n+m)
Duas cores sem conflitoBFS por componenteTestar cada componenteO(n+m)O(n+m)

n=∣V∣n=|V|, m=∣E∣m=|E|, listas de adjacência. Memória auxiliar O(n)O(n).

BFS e distâncias sem pesos

  • Marca o vértice ao inserir na fila, não ao retirar.
  • Na primeira descoberta, d[v]=d[u]+1d[v]=d[u]+1 e pai[v]=u.
  • d[v]d[v] é o mínimo número de arestas desde ss.
  • Inalcançável mantém distância desconhecida, nunca zero.
  • Com pesos distintos, usa caminhos mínimos.

DFS, cores e ciclos

  • Branco: por descobrir. Cinzento: chamada ativa. Preto: chamada terminada.
  • Aresta dirigida para cinzento fecha um ciclo; para preto não prova ciclo.
  • Em grafo não dirigido, a aresta de regresso ao pai não conta. Com paralelas, distingue pelo identificador da aresta.
  • Intervalos de descoberta e término disjuntos ou encaixados; contenção indica ancestralidade.
  • Profundidade até nn; em grafos grandes, a recursão pode exigir versão iterativa.

Ordem topológica

Existe se e só se o grafo dirigido não tem ciclos.

  1. Kahn: fila com graus de entrada zero; emite, reduz sucessores, insere novos zeros.
  2. Se emitir menos de nn, há ciclo e a ordem parcial é inválida.
  3. Alternativa: inverter términos de DFS após excluir arestas de retorno.
  4. Várias ordens podem ser válidas; fila de prioridade dá a menor segundo desempate, com custo extra.

Bipartição

  • BFS em cada componente com cores opostas em vizinhos.
  • Aresta com cores iguais revela ciclo ímpar e rejeita.
  • Bipartido exatamente quando não há ciclos ímpares.
  • Árvores e ciclos pares passam; triângulos falham.

Componentes fortemente conexas

SCC é conjunto maximal com alcançabilidade mútua. Maximal não é maior tamanho.

A aresta c→dc\to d não funde SCC sem regresso. Contrair cada SCC dá um DAG.

Kosaraju:

  1. DFS completa em GG; guarda ordem de término.
  2. Constrói GTG^T com arestas invertidas.
  3. DFS em GTG^T por término decrescente; cada árvore é uma SCC.

Tarjan (uma passagem):

  • low[u] é o menor índice alcançável na região ativa.
  • Vizinho novo: explora e usa low[v].
  • Vizinho na pilha: usa index[v].
  • Vizinho fora da pilha: ignora, pertence a SCC fechada.
  • low[u]==index[u] fecha SCC ao desempilhar até uu.

Precisa de onStack, não apenas visited. A pilha de Tarjan difere da pilha de chamadas.

Provas e traços completos.

À 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.