Grafos, percursos e isomorfismos

Arestas, graus, matrizes, conectividade, árvores, distâncias e isomorfismos.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Um grafo representa objetos e ligações entre eles. Os vértices podem ser cidades e as arestas podem ser estradas. Para uma estrada de dois sentidos usamos um par não ordenado; para uma ligação de sentido único usamos um par ordenado, como nas relações. Neste capítulo, os grafos são finitos.

Vértices e arestas

Um grafo não dirigido simples é G=(V,E)G=(V,E), onde VV é o conjunto de vértices e EE contém pares de vértices distintos:

E⊆{{u,v}:u,v∈V, u≠v}.E\subseteq\{\{u,v\}:u,v\in V,\ u\ne v\}.

Não há laços nem arestas repetidas. Um grafo dirigido, ou dígrafo, usa E⊆V×VE\subseteq V\times V. Neste caso (u,v)(u,v) e (v,u)(v,u) são ligações diferentes e podem existir laços. Um multigrafo admite várias arestas entre o mesmo par e tem de as distinguir.

Dois vértices ligados por uma aresta são adjacentes, ou vizinhos. Uma aresta é incidente nos seus extremos. Uma representação no papel pode ter cruzamentos que não são vértices; só contam os vértices declarados.

Um subgrafo escolhe vértices e algumas arestas do grafo original, conservando os extremos das arestas escolhidas. O subgrafo induzido por U⊆VU\subseteq V conserva todas as arestas com ambos os extremos em UU. O complemento de um grafo simples, no mesmo conjunto de vértices, contém exatamente os pares distintos que não eram arestas.

Subgrafos de um bipartido completo

Em K_{2,3\}, com partes {a,b}\{a,b\} e {1,2,3}\{1,2,3\}, cada letra liga-se a cada número. Retirar apenas a aresta {a,1}\{a,1\} dá um subgrafo ainda bipartido, mas já não completo bipartido: na bipartição original falta uma ligação entre partes.

Para excluir também uma bipartição alternativa, observa que o subgrafo continua conexo. Numa componente conexa, escolher a parte de um vértice determina as restantes ao alternar pelas arestas. Aqui, o caminho a,2,b,1a,2,b,1 obriga aa e 1 a partes opostas, embora não haja aresta entre eles. Logo nenhuma bipartição o torna completo.

Um subgrafo induzido funciona de outra forma. Se conservamos {a,b,1,2}\{a,b,1,2\}, ficam todas as quatro arestas entre as partes, dando K2,2K_{2,2}. Em geral, um subconjunto UU dos vértices de Km,nK_{m,n} induz K∣U∩V1∣,∣U∩V2∣K_{|U\cap V_1|,|U\cap V_2|}, porque não pode apagar arestas entre vértices conservados. Quando só conserva vértices de uma parte, esse índice é zero e não há arestas. Apagar uma aresta e escolher um subconjunto de vértices são assim operações diferentes: a primeira pode destruir completude mantendo bipartição, a segunda conserva todas as arestas entre os vértices que ficam.

Famílias de grafos

GrafoVértices e arestas
NnN_n, vazionn vértices, nenhuma aresta.
KnK_n, completoTodas as ligações entre vértices distintos; n(n−1)/2n(n-1)/2 arestas.
PnP_n, caminhonn vértices em sequência; n−1n-1 arestas.
CnC_n, ciclo, n≥3n\ge3A sequência fecha-se; nn arestas.
Km,nK_{m,n}, bipartido completoDuas partes de tamanhos m,nm,n, todas as ligações entre partes; mnmn arestas.
SnS_n, estrelaUm centro e n−1n-1 folhas; é K1,n−1K_{1,n-1}.
WnW_n, rodaUm ciclo CnC_n e um vértice extra ligado a todos; n+1n+1 vértices e 2n2n arestas.

As convenções de WnW_n e SnS_n variam entre textos. Aqui, o índice da roda conta os vértices do ciclo e o índice da estrela conta todos os seus vértices.

Graus e matrizes

O grau deg⁡(v)\deg(v) é o número de arestas incidentes num vértice de um grafo simples não dirigido. Um vértice de grau zero é isolado. Num grafo regular, todos os vértices têm o mesmo grau.

Cada aresta contribui 1 para o grau de cada extremo, logo:

∑v∈Vdeg⁡(v)=2∣E∣.\sum_{v\in V}\deg(v)=2|E|.

A soma dos graus é par. Como a soma dos graus pares já é par, tem de haver um número par de vértices de grau ímpar. Esta condição é necessária, mas não suficiente para uma lista ser realizável por um grafo simples. Com nn vértices, também nenhum grau pode exceder n−1n-1.

Num dígrafo, o grau de entrada conta as arestas (u,v)(u,v) e o grau de saída conta as arestas (v,u)(v,u). Cada aresta acrescenta uma entrada e uma saída, por isso ambas as somas são ∣E∣|E|.

A matriz de adjacência tem M[u,v]=1M[u,v]=1 quando há aresta de uu para vv. Num grafo não dirigido simples, é simétrica e tem diagonal zero. A soma da linha dá o grau. Num dígrafo, a soma da linha dá o grau de saída e a soma da coluna dá o de entrada.

Passeios, trilhos, caminhos e ciclos

Seguimos a terminologia dos slides: walk, trail, path, circuit e cycle distinguem-se pelas repetições permitidas.

PercursoRepetições permitidas
Passeio, walkPode repetir vértices e arestas.
Trilho, trailNão repete arestas; pode repetir vértices.
Caminho, pathNão repete vértices, logo também não repete arestas.
Circuito, circuitTrilho fechado, com o mesmo início e fim.
Ciclo, cycleCaminho fechado; só repete o vértice inicial no fim.

No triângulo com arestas {1,2},{2,3},{3,1}\{1,2\},\{2,3\},\{3,1\}, seguimos três sequências:

SequênciaRepetições e tipo
1,2,3,1,21,2,3,1,2Repete a aresta {1,2}\{1,2\} e os vértices 1 e 2: passeio, não trilho.
1,2,3,11,2,3,1Repete só a origem no fim: circuito e ciclo, não caminho aberto.
1,2,31,2,3Sem repetições: caminho, também trilho e passeio.

As categorias não são exclusivas. Todo o caminho é um trilho e todo o trilho é um passeio. «Caminho fechado» na definição de ciclo permite apenas a repetição final da origem.

O comprimento conta arestas, não vértices. Num ciclo não dirigido simples, o comprimento é pelo menos 3. No caminho a,b,c,da,b,c,d, o comprimento é 3. Num dígrafo, cada passo tem de respeitar o sentido da aresta.

Alguns enunciados usam “caminho de Euler” para um trilho de Euler. Confere a condição escrita, porque Euler exige não repetir arestas e não exige não repetir vértices.

Conectividade e componentes

Um grafo não dirigido é conexo se existe um caminho entre qualquer par de vértices. Uma componente conexa é um subgrafo conexo maximal. Vértices isolados também são componentes, com um só vértice.

Um dígrafo é fortemente conexo se, para cada par u,vu,v, existe caminho dirigido de uu para vv. É fracamente conexo se se torna conexo ao ignorar as direções.

O dígrafo é fracamente conexo. As componentes fortemente conexas são {a,b}\{a,b\}, {c,d}\{c,d\} e {e}\{e\}. Há caminho de aa para ee, mas não de ee para aa. Uma componente com um só vértice é fortemente conexa pelo caminho de comprimento zero, mesmo sem laço.

Árvores e florestas

Uma árvore é um grafo não dirigido conexo e sem ciclos. Uma floresta é um grafo sem ciclos; cada componente não vazia é uma árvore.

Numa árvore existe exatamente um caminho entre dois vértices. Se existissem dois, a parte em que divergem e voltam a encontrar-se formaria um ciclo. Retirar qualquer aresta separa a árvore; acrescentar uma aresta entre dois vértices já existentes cria um ciclo.

Uma árvore com n≥1n\ge1 vértices tem n−1n-1 arestas. A ideia é retirar folhas sucessivamente: uma árvore com pelo menos dois vértices tem um vértice de grau 1. Para ver porquê, toma um caminho de comprimento máximo; um extremo não pode ter outro vizinho fora do caminho, pois o prolongaria, nem um vizinho adicional dentro dele, pois criaria um ciclo. Retirar essa folha e a sua aresta deixa uma árvore com menos um vértice e menos uma aresta.

Podemos fechar o argumento por indução em nn. A árvore com um vértice tem 0=1−10=1-1 arestas. Para n≥2n\ge2, a árvore que resta após retirar a folha tem n−1n-1 vértices e, pela hipótese, (n−1)−1=n−2(n-1)-1=n-2 arestas. Repor a folha acrescenta uma aresta, dando n−1n-1. A remoção conserva conectividade entre os restantes vértices, porque um caminho entre eles não precisa de passar por uma folha, e não pode criar ciclos.

Uma floresta com nn vértices e cc componentes não vazias tem n−cn-c arestas, pois cada componente com nin_i vértices contribui com ni−1n_i-1.

Uma árvore abrangente de um grafo conexo mantém todos os vértices e escolhe algumas arestas de forma a ficar conexa e sem ciclos. Pode obter-se retirando uma aresta de cada ciclo enquanto houver ciclos. Todas as árvores abrangentes têm n−1n-1 arestas, mas não precisam de ser isomorfas.

Distância e pesos

A distância d(u,v)d(u,v) é o comprimento do caminho mais curto. d(u,u)=0d(u,u)=0; se não há caminho, convencionamos d(u,v)=∞d(u,v)=\infty. Num grafo não dirigido, d(u,v)=d(v,u)d(u,v)=d(v,u). Num dígrafo, as duas distâncias podem ser diferentes.

A desigualdade triangular d(u,w)≤d(u,v)+d(v,w)d(u,w)\le d(u,v)+d(v,w) vem de concatenar percursos: o caminho mais curto não é maior do que esse percurso possível.

Num grafo com pesos não negativos, o comprimento ponderado soma os pesos das arestas. Uma ligação direta de peso 10 pode ser pior do que duas de pesos 2 e 3. O algoritmo de Dijkstra começa com distância 0 na origem e infinito nos restantes; fixa de cada vez o vértice não fixado com menor distância provisória e melhora as distâncias dos seus vizinhos. A hipótese de pesos não negativos é o que impede descobrir mais tarde um caminho menor para um vértice já fixado.

Por exemplo, num dígrafo com arestas a→ba\to b de peso 2, a→ca\to c de peso 10, b→cb\to c de peso 3, b→db\to d de peso 8 e c→dc\to d de peso 1:

Vértice acabado de fixarDistâncias provisórias para a,b,c,da,b,c,d
aa0,2,10,∞0,2,10,\infty
bb0,2,5,100,2,5,10
cc0,2,5,60,2,5,6
dd0,2,5,60,2,5,6

O caminho mais curto de aa para dd é a,b,c,da,b,c,d, com peso 6. Usa três arestas, enquanto a,b,da,b,d usa duas mas pesa 10. As atualizações são comparações: ao fixar bb, substituímos a distância 10 de cc por 2+3=52+3=5; ao fixar cc, substituímos a de dd por 5+1=65+1=6.

Correspondência de vértices

Dois caminhos de três vértices a−b−ca-b-c e x−y−zx-y-z são isomorfos por a↦xa \mapsto x, b↦yb \mapsto y, c↦zc \mapsto z: verifica as duas arestas (a,b)↦(x,y)(a,b) \mapsto (x,y) e (b,c)↦(y,z)(b,c) \mapsto (y,z) e confirma que não aparecem arestas novas. Comparar graus filtra candidatos, mas só a bijeção verificada aresta a aresta prova o isomorfismo. Na figura, as linhas tracejadas representam a correspondência proposta, não arestas dos grafos.

Isomorfismos

Dois grafos são isomorfos se existe uma bijeção f:V→V′f:V\to V' que preserva a adjacência nos dois sentidos:

{u,v}∈E⟺{f(u),f(v)}∈E′.\{u,v\}\in E\Longleftrightarrow\{f(u),f(v)\}\in E'.

Mudar nomes, rodar o desenho ou deixar as arestas cruzarem-se não muda o grafo. Para provar isomorfismo, apresenta a bijeção e verifica as arestas. Para o refutar, encontra uma propriedade preservada que difira, como número de vértices, de arestas, graus, componentes ou ciclos de certo comprimento.

A sequência de graus não prova isomorfismo por si só. Um ciclo C6C_6 e dois triângulos separados têm seis vértices de grau 2 e seis arestas, mas o primeiro é conexo e o segundo não.

Nenhum caminho liga os triângulos. Uma bijeção que preservasse adjacência transportaria também os caminhos de C6C_6, por isso não pode existir.

Uma verificação útil começa pelos vértices de graus raros. Se só existe um vértice de grau 4 em cada grafo, qualquer isomorfismo tem de os associar. Depois verifica as ligações entre os seus vizinhos.

O vídeo de Rodrigo Dias é um complemento mais amplo sobre grafos e estratégias de algoritmos:

Abrir no YouTube

Exercícios

Uma sequência de graus impossível

Pode existir um grafo simples não dirigido com seis vértices de graus 5,5,3,2,1,05,5,3,2,1,0? Justifica sem desenhar todos os grafos.

Pista

A soma é 16, por isso o lema do aperto de mãos não o exclui.

Mais uma pista

Um vértice de grau 5, num grafo simples com seis vértices, liga-se a todos os outros.

Solução

Não. O vértice de grau 0 não se liga a ninguém, mas qualquer vértice de grau 5 teria de se ligar a ele. A soma par e os limites 0≤d≤50\le d\le5 são condições necessárias, mas não bastam para realizar a sequência.

Confere a tua resposta:

  • Conferi o limite individual de grau e a soma.
  • Notei que uma soma par não é suficiente.
  • Usei a incompatibilidade entre grau 5 e vértice isolado.

Erros frequentes

Não concluas existência só porque a soma é par. Também é preciso que as adjacências sejam compatíveis.

Voltar à explicação
A hipótese de floresta na contagem

Um grafo simples não dirigido tem 15 vértices e 4 componentes conexas. Um colega conclui que tem 11 arestas. A conclusão é garantida? Justifica. Se souberes ainda que o grafo é uma floresta, determina o número de arestas e explica por que uma componente isolada também entra na conta.

Pista

Compara uma componente em ciclo com uma árvore que tenha os mesmos vértices.

Solução

Sem a hipótese de floresta, não é garantida: uma componente pode conter um ciclo e ter mais arestas que uma árvore com os mesmos vértices. Por exemplo, uma componente em ciclo C12C_{12} e três vértices isolados dão 15 vértices, 4 componentes e 12 arestas.

Numa floresta, cada componente de nin_i vértices é uma árvore com ni−1n_i-1 arestas. Então

m=∑i=14(ni−1)=∑i=14ni−4=15−4=11.m=\sum_{i=1}^4(n_i-1)=\sum_{i=1}^4n_i-4=15-4=11.

Um isolado tem ni=1n_i=1 e contribui 1−1=01-1=0 arestas. A fórmula depende da ausência de ciclos.

Confere a tua resposta:

  • Expliquei por que os números de vértices e componentes não bastam num grafo geral.
  • Somei nᵢ − 1 sobre as quatro árvores.
  • Incluí componentes isoladas na soma.
Voltar à explicação
Os graus não provam isomorfismo

Compara o ciclo C6C_6 com a união disjunta de dois triângulos. Têm os mesmos graus? São isomorfos?

Pista

O isomorfismo preserva mais do que os graus.

Mais uma pista

Conta as componentes conexas.

Solução

Ambos têm seis vértices, seis arestas e sequência de graus 2,2,2,2,2,22,2,2,2,2,2. Não são isomorfos: C6C_6 é conexo, enquanto a união tem duas componentes. Também só o segundo contém triângulos. Uma bijeção que preservasse adjacência preservaria caminhos e componentes, o que é impossível.

Confere a tua resposta:

  • Contei seis vértices e seis arestas em ambos.
  • Identifiquei grau 2 em todos os vértices.
  • Usei conectividade ou triângulos para refutar isomorfismo.

Erros frequentes

Graus diferentes refutam isomorfismo; graus iguais não o provam. Para provar, é preciso apresentar uma bijeção que preserve as adjacências.

Voltar à explicação
Melhorar distâncias provisórias

Num dígrafo, as arestas são s→as\to a com peso 7, s→bs\to b com peso 2, b→ab\to a com peso 1, b→tb\to t com peso 8 e a→ta\to t com peso 2. Não há outras arestas. Aplica Dijkstra a partir de ss: regista as distâncias após fixar cada vértice e encontra um caminho mínimo até tt.

Pista

Começa com distância 0 em ss e infinito nos restantes. Os pesos são positivos, por isso satisfazem a hipótese do algoritmo.

Mais uma pista

Depois de fixar ss, tens d(a)=7,d(b)=2d(a)=7,d(b)=2. Fixar bb pode melhorar aa antes de o fixares.

Solução

Nas colunas s,a,b,ts,a,b,t, as distâncias são:

Acabado de fixarssaabbtt
ss072∞\infty
bb03210
aa0325
tt0325

O caminho é s,b,a,ts,b,a,t, com peso 2+1+2=52+1+2=5. O caminho s,a,ts,a,t usa menos arestas, mas pesa 9. Ao fixar bb, substituímos 7 por 2+12+1; ao fixar aa, substituímos 10 por 3+23+2.

Confere a tua resposta:

  • Fixei sempre o vértice com menor distância provisória.
  • Atualizei distâncias só quando o novo percurso era menor.
  • Reconstruí o caminho e distingui peso de número de arestas.

Erros frequentes

Não fixes aa só por existir uma aresta direta de ss para aa. Escolhe a menor distância provisória. Este algoritmo não é justificado para pesos negativos.

Voltar à explicação
Testar e corrigir uma bijeção

Sejam V={a,b,c,d}V=\{a,b,c,d\}, E={{a,b},{b,c},{c,d},{d,a}}E=\{\{a,b\},\{b,c\},\{c,d\},\{d,a\}\} e V′={1,2,3,4}V'=\{1,2,3,4\}, E′={{1,3},{3,2},{2,4},{4,1}}E'=\{\{1,3\},\{3,2\},\{2,4\},\{4,1\}\}. Todos os vértices têm grau 2.

A aplicação f(a)=1,f(b)=2,f(c)=3,f(d)=4f(a)=1,f(b)=2,f(c)=3,f(d)=4 é um isomorfismo? Se falhar, exibe uma bijeção que seja um isomorfismo e verifica as arestas nos dois sentidos.

Pista

Uma só aresta com imagem ausente refuta uma proposta. Para a provar, confere o conjunto completo de imagens.

Solução

A proposta falha: {a,b}∈E\{a,b\}\in E, mas {f(a),f(b)}={1,2}∉E′\{f(a),f(b)\}=\{1,2\}\notin E'.

Uma bijeção válida é g(a)=1,g(b)=3,g(c)=2,g(d)=4g(a)=1,g(b)=3,g(c)=2,g(d)=4. As imagens das quatro arestas são, pela mesma ordem, {1,3},{3,2},{2,4},{4,1}\{1,3\},\{3,2\},\{2,4\},\{4,1\}. São exatamente todas as arestas de E′E', sem repetição; logo a bijeção preserva adjacência nos dois sentidos. Os graus iguais ajudam a escolher candidatos, mas não validam a primeira proposta.

Confere a tua resposta:

  • Refutei a proposta com uma aresta cuja imagem falta.
  • Construí uma bijeção explícita.
  • Verifiquei que a imagem do conjunto de arestas é exatamente E′.
Voltar à explicação
Apagar uma aresta ou escolher vértices

Parte de K3,3K_{3,3} com partes {a,b,c}\{a,b,c\} e {1,2,3}\{1,2,3\}. Não há arestas dentro de uma parte.

  1. Retira apenas a aresta {a,1}\{a,1\}. O resultado é bipartido? É completo bipartido?
  2. Conserva apenas os vértices {a,b,1,3}\{a,b,1,3\} e toma o subgrafo induzido. Identifica o grafo e conta as arestas.
  3. Repete para os vértices {a,b,c}\{a,b,c\}. Porque é que não basta contar vértices para decidir quais as arestas de um subgrafo geral?

Pista

Uma bipartição exige apenas que não haja arestas dentro das partes. Ser completo exige, além disso, todas as arestas entre partes.

Solução

No primeiro caso, a bipartição original continua válida, logo o grafo é bipartido. Não é completo bipartido. O caminho a,2,b,1a,2,b,1 obriga aa e 1 a cores opostas em qualquer bipartição, mas falta a aresta entre eles. Assim, mudar a escolha das partes não resolve a falta.

No segundo, o subgrafo induzido conserva todas as ligações entre {a,b}\{a,b\} e {1,3}\{1,3\}, dando K2,2K_{2,2} com quatro arestas: {a,1},{a,3},{b,1},{b,3}\{a,1\},\{a,3\},\{b,1\},\{b,3\}.

No terceiro, os três vértices estão na mesma parte, logo o grafo induzido não tem arestas. É N3N_3, também representável como K3,0K_{3,0} se admitirmos uma parte vazia.

Um subgrafo geral pode escolher só algumas arestas entre os vértices conservados. Um induzido tem de conservar todas as que existem no original. O primeiro caso mostra a diferença.

Confere a tua resposta:

  • Distingui subgrafo de subgrafo induzido.
  • Excluí também uma bipartição alternativa no primeiro caso.
  • Determinei os tamanhos das partes e o número de arestas nos casos induzidos.
Voltar à explicaçã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.