Grafos, percursos e isomorfismos
Arestas, graus, matrizes, conectividade, árvores, distâncias e isomorfismos.
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 é , onde é o conjunto de vértices e contém pares de vértices distintos:
Não há laços nem arestas repetidas. Um grafo dirigido, ou dígrafo, usa . Neste caso e 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 conserva todas as arestas com ambos os extremos em . 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 e , cada letra liga-se a cada número. Retirar apenas a aresta 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 obriga 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 , ficam todas as quatro arestas entre as partes, dando . Em geral, um subconjunto dos vértices de induz , 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
| Grafo | Vértices e arestas |
|---|---|
| , vazio | vértices, nenhuma aresta. |
| , completo | Todas as ligações entre vértices distintos; arestas. |
| , caminho | vértices em sequência; arestas. |
| , ciclo, | A sequência fecha-se; arestas. |
| , bipartido completo | Duas partes de tamanhos , todas as ligações entre partes; arestas. |
| , estrela | Um centro e folhas; é . |
| , roda | Um ciclo e um vértice extra ligado a todos; vértices e arestas. |
As convenções de e 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 é 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:
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 vértices, também nenhum grau pode exceder .
Num dígrafo, o grau de entrada conta as arestas e o grau de saída conta as arestas . Cada aresta acrescenta uma entrada e uma saída, por isso ambas as somas são .
A matriz de adjacência tem quando há aresta de para . 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.
| Percurso | Repetições permitidas |
|---|---|
| Passeio, walk | Pode repetir vértices e arestas. |
| Trilho, trail | Não repete arestas; pode repetir vértices. |
| Caminho, path | Não repete vértices, logo também não repete arestas. |
| Circuito, circuit | Trilho fechado, com o mesmo início e fim. |
| Ciclo, cycle | Caminho fechado; só repete o vértice inicial no fim. |
No triângulo com arestas , seguimos três sequências:
| Sequência | Repetições e tipo |
|---|---|
| Repete a aresta e os vértices 1 e 2: passeio, não trilho. | |
| Repete só a origem no fim: circuito e ciclo, não caminho aberto. | |
| Sem 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 , 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 , existe caminho dirigido de para . É fracamente conexo se se torna conexo ao ignorar as direções.
O dígrafo é fracamente conexo. As componentes fortemente conexas são , e . Há caminho de para , mas não de para . 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 vértices tem 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 . A árvore com um vértice tem arestas. Para , a árvore que resta após retirar a folha tem vértices e, pela hipótese, arestas. Repor a folha acrescenta uma aresta, dando . 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 vértices e componentes não vazias tem arestas, pois cada componente com vértices contribui com .
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 arestas, mas não precisam de ser isomorfas.
Distância e pesos
A distância é o comprimento do caminho mais curto. ; se não há caminho, convencionamos . Num grafo não dirigido, . Num dígrafo, as duas distâncias podem ser diferentes.
A desigualdade triangular 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 de peso 2, de peso 10, de peso 3, de peso 8 e de peso 1:
| Vértice acabado de fixar | Distâncias provisórias para |
|---|---|
O caminho mais curto de para é , com peso 6. Usa três arestas, enquanto usa duas mas pesa 10. As atualizações são comparações: ao fixar , substituímos a distância 10 de por ; ao fixar , substituímos a de por .
Correspondência de vértices
Dois caminhos de três vértices e são isomorfos por , , : verifica as duas arestas e 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 que preserva a adjacência nos dois sentidos:
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 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 , 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:
Exercícios
Uma sequência de graus impossível
Pode existir um grafo simples não dirigido com seis vértices de graus ? 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 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.
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 e três vértices isolados dão 15 vértices, 4 componentes e 12 arestas.
Numa floresta, cada componente de vértices é uma árvore com arestas. Então
Um isolado tem e contribui 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.
Os graus não provam isomorfismo
Compara o ciclo 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 . Não são isomorfos: é 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.
Melhorar distâncias provisórias
Num dígrafo, as arestas são com peso 7, com peso 2, com peso 1, com peso 8 e com peso 2. Não há outras arestas. Aplica Dijkstra a partir de : regista as distâncias após fixar cada vértice e encontra um caminho mínimo até .
Pista
Começa com distância 0 em e infinito nos restantes. Os pesos são positivos, por isso satisfazem a hipótese do algoritmo.
Mais uma pista
Depois de fixar , tens . Fixar pode melhorar antes de o fixares.
Solução
Nas colunas , as distâncias são:
| Acabado de fixar | ||||
|---|---|---|---|---|
| 0 | 7 | 2 | ||
| 0 | 3 | 2 | 10 | |
| 0 | 3 | 2 | 5 | |
| 0 | 3 | 2 | 5 |
O caminho é , com peso . O caminho usa menos arestas, mas pesa 9. Ao fixar , substituímos 7 por ; ao fixar , substituímos 10 por .
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 só por existir uma aresta direta de para . Escolhe a menor distância provisória. Este algoritmo não é justificado para pesos negativos.
Testar e corrigir uma bijeção
Sejam , e , . Todos os vértices têm grau 2.
A aplicação é 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: , mas .
Uma bijeção válida é . As imagens das quatro arestas são, pela mesma ordem, . São exatamente todas as arestas de , 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′.
Apagar uma aresta ou escolher vértices
Parte de com partes e . Não há arestas dentro de uma parte.
- Retira apenas a aresta . O resultado é bipartido? É completo bipartido?
- Conserva apenas os vértices e toma o subgrafo induzido. Identifica o grafo e conta as arestas.
- Repete para os vértices . 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 obriga 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 e , dando com quatro arestas: .
No terceiro, os três vértices estão na mesma parte, logo o grafo induzido não tem arestas. É , também representável como 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.
