Você está na página 1de 110

Teoria dos Grafos

Grafos individuais
Conteúdo

1 Introdução - Teoria dos Grafos 1


1.1 Sete pontes de Königsberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Definições de grafos e dígrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3 Representação gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4 Armazenamento de grafos em memória . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.5 Definições de teoria dos grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.6 Tipos de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.7 Problemas que envolvem grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.8 Algoritmos importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.9 Generalizações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.10 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.11 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.12 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Conceitos Básicos e Definições 9


2.1 Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 Definições de grafos e dígrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.3 Representação gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4 Armazenamento de grafos em memória . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.5 Definições de teoria dos grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.6 Tipos de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.7 Problemas que envolvem grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.8 Algoritmos importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.9 Generalizações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.10 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.11 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.12 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Vértice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

i
ii CONTEÚDO

2.2.1 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.2 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Aresta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.1 Tipos de arestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.2 Relação de adjacência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.4 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Aresta múltipla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.1 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 Ciclos em um grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.1 Definição matemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6.1 Definições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.2 Matemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.3 Ciência da Computação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.4 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.5 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.6 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.7 Links Externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6.8 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6.9 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7 O grau de um grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7.1 Lema do aperto de mãos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7.2 Sequência de graus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7.3 Valores especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.7.4 Propriedades globais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.7.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8 Grafo bipartido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8.2 Testando biparticidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8.3 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8.4 Modelagem de multigrafos e hipergrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8.5 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.8.6 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.8.7 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.8.8 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.9 Grafo bipartido completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.9.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.9.2 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.9.3 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CONTEÚDO iii

2.9.4 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24


2.9.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.10 Grafo caminho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.10.1 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.10.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.10.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.11 Grafo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.11.1 Número de arestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.11.2 Planaridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.11.3 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.12 Grafo cúbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.12.1 Simetria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.12.2 Coloração e conjuntos independentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.12.3 Hamiltonicidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.12.4 Outras propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.12.5 Algoritmos e complexidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.12.6 História . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.12.7 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.13 Grafo Estrela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.13.1 Relação com outras famílias de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.13.2 Outras aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.13.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.14 Grafo nulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.14.1 Grafo sem arestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.15 Grafo orientado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.15.1 Terminologia básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.15.2 Graus de saída e graus de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.15.3 Conectividade de digrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.15.4 Classes de digrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.15.5 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.15.6 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.15.7 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.16 Grafo simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.16.1 Número de arestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.17 Grafo valorado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.17.1 Representação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.17.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.17.3 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.18 Homomorfismo de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.18.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.18.2 Generalização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
iv CONTEÚDO

2.18.3 Observações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.18.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.18.5 Veja também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.19 Isomorfismo de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.19.1 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.19.2 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.19.3 Reconhecimento de isomorfismo de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.19.4 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.19.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.20 Laço . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.20.1 Grau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.20.2 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.20.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.20.4 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.21 Pseudografo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.21.1 Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.21.2 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.21.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.22 Pseudografo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.22.1 Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.22.2 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.22.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.23 Quiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.23.1 Representações de quivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.23.2 Teorema de Gabriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.23.3 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.23.4 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.24 Vértice de corte (teoria dos grafos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.24.1 Encontrando Vértices de corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.24.2 Algoritmo em C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.24.3 Vértices de corte em árvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.24.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.24.5 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.24.6 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.25 Vizinhança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.25.1 Propriedades locais em grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.25.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3 Árvores 40
3.1 Árvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.1 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.2 Definições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
CONTEÚDO v

3.1.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2 Árvore de extensão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.1 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3 Árvore de extensão mínima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.1 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.2 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4 Representação de Grafos 43
4.1 Matriz de adjacência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1.1 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.1.2 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Matriz de incidência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.1 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Lista de adjacência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1 Aplicação em ciência da computação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2 Conflitos de escolha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5 Automorfismo de grafos 47
5.1 Automorfismo de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.1 Complexidade computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.2 Exibindo a Simetria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.3 Famílias de grafos definidas pelos seus automorfismos . . . . . . . . . . . . . . . . . . . . 47
5.1.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2 Grafo regular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3 Grafo fortemente regular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.2 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.3 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.4 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4 Grafo distância-regular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4.1 Números Intersecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4.2 Matrizes de adjacência distância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4.3 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5 Grafo distância-transitivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5.1 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
vi CONTEÚDO

5.6 Grafo simétrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52


5.6.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.6.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.6.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.7 Grafo meio-transitivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.7.1 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.8 Grafo semissimétrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.8.1 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.9 Grafo aresta-transitivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.9.1 Exemplos e propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.9.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.10 Grafo vértice-transitivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.10.1 Exemplos finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.10.2 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.10.3 Exemplos infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.10.4 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.10.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.11 Grafo de Cayley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.11.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.11.2 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.11.3 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.11.4 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.11.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.12 Grafo antissimétrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.12.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.12.2 Grafos switch e grafos bipartidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.12.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.13 Grafo assimétrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.13.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.13.2 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.13.3 Grafos aleatórios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.13.4 Árvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.13.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6 Algoritmos em Grafos 60
6.1 Busca em largura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.1.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.1.2 Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.1.3 Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.1.4 Exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.1.5 Exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.1.6 Exemplo de Implementação em Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . 62
CONTEÚDO vii

6.1.7 Usos e extensões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62


6.1.8 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2 Busca em profundidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2.1 Definição Formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.2.2 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.2.3 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.2.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.2.5 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.2.6 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3 Caminho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.1 Definição matemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.2 Tipos de caminhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4 Caminho euleriano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4.1 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.4.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.5 Caminho hamiltoniano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.5.1 Definições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.5.2 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.5.3 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.5.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5.5 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5.6 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.6 Ordenação topológica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.6.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.6.2 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.6.3 Unicidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.6.4 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.6.5 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.6.6 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.7 Algoritmo de Bellman-Ford . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.7.1 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.7.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.7.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.8 Algoritmo A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.8.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.8.2 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.9 Algoritmo de Floyd-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.9.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.9.2 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.9.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
viii CONTEÚDO

6.10 Algoritmo de Johnson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70


6.10.1 Descrição do algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.10.2 Veja também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.10.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

7 Algoritmos para obter a árvore de extensão mínima 72


7.1 Algoritmo de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.1.1 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.1.2 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.2 Algoritmo de Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.2.1 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.2.2 Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.2.3 Complexidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.2.4 Exemplo de execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.2.5 Implementações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.2.6 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.7 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.8 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.3 Algoritmo de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.3.1 Algoritmo de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.3.2 Problemas relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.3.3 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.3.4 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.3.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.4 Algoritmo de Boruvka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.4.1 Ver também . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.4.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

8 Grafos individuais 77
8.1 Grafo de Biggs-Smith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.1.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.1.2 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.1.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.2 Grafo de Brouwer-Haemers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.2.1 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.3 Grafo de Desargues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.3.1 Construções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.3.2 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.3.3 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.3.4 Outras propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.3.5 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.3.6 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
CONTEÚDO ix

8.4 Grafo de Folkman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79


8.4.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.4.2 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.4.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.5 Grafo de Foster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.5.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.5.2 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.5.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.6 Grafo de Frucht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.6.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.6.2 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.6.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.7 Grafo de Gray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.7.1 Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.7.2 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.7.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.7.4 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.7.5 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.8 Grafo de Heawood . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.8.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.8.2 Incorporado em um Toro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.8.3 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.8.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.9 Grafo de Higman-Sims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.9.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.9.2 Dentro da malha de Leech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.9.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.10 Grafo de Hoffman-Singleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.10.1 Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.10.2 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.10.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.11 Grafo de Holt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.11.1 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.11.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.12 Grafo de Ljubljana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.12.1 Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.12.2 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.12.3 História . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.12.4 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.12.5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.13 Grafo de Nauru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
x CONTEÚDO

8.13.1 Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.13.2 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.13.3 Propriedades topológicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.13.4 Propriedades geométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.13.5 História . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.13.6 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.14 Grafo de Papo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.14.1 Propriedades algébricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.14.2 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.14.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.15 Grafo de Petersen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.15.1 Construções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.15.2 Incorporações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.15.3 Simetrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.15.4 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.16 Grafo de Shrikhande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.16.1 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.16.2 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.16.3 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.16.4 Galeria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.17 Grafos de Chang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.17.1 Ligações externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

9 Fontes, contribuidores e licenças de texto e imagem 90


9.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
9.2 Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.3 Licença . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Capítulo 1

Introdução - Teoria dos Grafos

1.1 Sete pontes de Königsberg duas foram destruídas durante a Segunda Guerra Mun-
dial e outras duas foram demolidas para dar lugar a uma
única via expressa. Atualmente apenas duas pontes são
da época de Leonhard Euler.
Discutia-se nas ruas da cidade a possibilidade de atra-
vessar todas as pontes sem repetir nenhuma. Havia-se
tornado uma lenda popular a possibilidade da façanha
quando Euler, em 1736, provou que não existia caminho
que possibilitasse tais restrições.
Euler usou um raciocínio muito simples. Transformou os
caminhos em linhas e suas intersecções em pontos, cri-
ando possivelmente o primeiro grafo da história. Então
percebeu que só seria possível atravessar o caminho in-
teiro passando uma única vez em cada ponte se houvesse
exatamente zero ou dois pontos de onde saísse um nú-
Esquema de pontes. mero ímpar de caminhos. A razão de tal coisa é que de
cada ponto deve haver um número par de caminhos, pois
será preciso um caminho para “entrar” e outro para “sair”.
Os dois pontos com caminhos ímpares referem-se ao iní-
cio e ao final do percurso, pois estes não precisam de um
para entrar e um para sair, respectivamente. Se não hou-
ver pontos com número ímpar de caminhos, pode-se (e
deve-se) iniciar e terminar o trajeto no mesmo ponto, po-
dendo esse ser qualquer ponto do grafo. Isso não é pos-
sível quando temos dois pontos com números ímpares de
caminhos, sendo obrigatoriamente um o início e outro o
fim.
Duas das sete pontes originais da cidade foram destruídas
durante o bombardeamento de Königsberg em agosto de
1944.[2]

Grafo estilizado das pontes. 1.1.1 Referências


Sete pontes de Königsberg, ou, na sua forma portu- [1] Leonhard Euler: Solutio problematis ad geometriam situs
guesa, de Conisberga, é um famoso problema histórico pertinentis
da matemática resolvido por Leonhard Euler em 1736,
cuja solução negativa originou a teoria dos grafos.[1] [2] Peter Taylor (2000). Australian Mathematics Trust, : .
«What Ever Happened to Those Bridges?». Consultado
O problema é baseado na cidade de Königsberg (territó- em 12 de abril de 2010.
rio da Prússia até 1945, atual Kaliningrado), que é cor-
tada pelo Rio Prególia, onde há duas grandes ilhas que,
juntas, formam um complexo que na época continha sete 1.1.2 Ver também
pontes, conforme mostra a figura ao lado. Das sete pon-
tes originais, uma foi demolida e reconstruída em 1935, • Caminho euleriano

1
2 CAPÍTULO 1. INTRODUÇÃO - TEORIA DOS GRAFOS

1.2 Grafo

O problema das pontes de Königsberg

Isso ilustra a profunda conexão entre a teoria dos grafos


e topologia.
Mais de um século após a publicação do artigo de Euler
sobre as pontes de Königsberg e enquanto Listing intro-
Grafo com 4 vértices e 6 arestas. É um grafo completo, conexo e duzia o conceito de topologia, Cayley foi levado por um
planar.
interesse em formas analíticas particulares decorrentes do
cálculo diferencial para estudar uma classe particular de
A teoria dos grafos é um ramo da matemática que es- grafos, as árvores[2] . Esse estudo teve diversas implica-
tuda as relações entre os objetos de um determinado con- ções na química teórica. As técnicas usadas por ele eram
junto. Para tal são empregadas estruturas chamadas de relacionadas a enumeração de grafos com propriedades
grafos, G(V,E), onde V é um conjunto não vazio de obje- particulares.
tos denominados vértices e E é um subconjunto de pares
não ordenados de V, chamados arestas. O primeiro livro didático sobre teoria dos grafos foi es-
crito por Dénes König e publicado em 1936[3] .
Dependendo da aplicação, arestas podem ou não ter dire-
ção, pode ser permitido ou não arestas ligarem um vértice Um dos problemas mais conhecidos em teoria dos gra-
a ele próprio e vértices e/ou arestas podem ter um peso fos é problema das quatro cores: "É possível que qual-
(numérico) associado. Se as arestas têm uma direção as- quer mapa desenhado num plano, dividido em regiões,
sociada (indicada por uma seta na representação gráfica) pode ser colorido com apenas quatro cores de tal forma
temos um dígrafo (grafo orientado). Um grafo com um que as regiões vizinhas não partilhem a mesma cor?". O
único vértice e sem arestas é conhecido como grafo tri- primeiro a notar o problema das quatro cores foi August
vial. Ferdinand Möbius em 1840. Em 1852, Francis Guthrie
escreveu em uma carta para seu irmão Frederick, estu-
Estruturas que podem ser representadas por grafos estão dante na University College London, sobre o problema.
em toda parte e muitos problemas de interesse prático Mas nenhum deles conseguiu resovê-lo. Então Frederick
podem ser formulados como questões sobre certos grafos. perguntou a um de seus professores, DeMorgan[4] .
Por exemplo, a estrutura de ligações da Wikipédia pode
ser representada por um dígrafo: os vértices são os artigos
da Wikipédia e existe uma aresta do artigo A para o artigo 1.2.2 Definições de grafos e dígrafos
B se e somente se A contém um link para B. Dígrafos
são também usados para representar máquinas de estado Na literatura, as definições básicas da teoria dos grafos
finito. O desenvolvimento de algoritmos para manipular variam bastante. Aqui estão as convenções usadas nesta
grafos é um tema importante da ciência da computação. enciclopédia.
Um grafo direcionado (também chamado dígrafo ou
quiver) consiste de
1.2.1 Histórico

O artigo de Leonhard Euler, publicado em 1736, sobre • um conjunto V de vértices,


o problema das sete pontes de Königsberg, é considerado • um conjunto E de arestas e
o primeiro resultado da teoria dos grafos.[1] É também
considerado um dos primeiros resultados topológicos na • mapas s, t : E → V, onde s(e) é a fonte e t(e) é o alvo
geometria; isto é, não dependente de quaisquer medidas. da aresta direcionada e.
1.2. GRAFO 3

Um grafo não direcionado (ou simplesmente grafo) é regiões disjuntas no plano e arestas são representadas por
dado por adjacências entre regiões; representações por intersecção
no qual vértices são representados como objetos geomé-
• um conjunto V de vértices, tricos não disjuntos e arestas são representadas por suas
intersecções; representações por visibilidade onde vérti-
• um conjunto E de arestas e ces são representados por regiões no plano e arestas são
representadas por regiões com uma linha de visão desobs-
• uma função w : E → P(V) que associa a cada aresta truída para cada vértice; desenhos confluentes, nos quais
um subconjunto de dois ou de um elemento de V, arestas são curvas suaves dentro de trilhos de trem; tex-
interpretado como os pontos terminais da aresta. turas onde vértices são linhas horizontais e arestas são li-
nhas verticais[6] ; e visualizações da matriz de adjacência
Em um grafo ou dígrafo com pesos, uma função adi- de um grafo.
cional E → R associa um valor a cada aresta, o que
O desenho de grafos em superfícies diferentes do plano é
pode ser considerado seu “custo"; tais grafos surgem em
também estudado.
problemas de rota ótima tais como o problema do caixeiro
viajante.
1.2.4 Armazenamento de grafos em me-
1.2.3 Representação gráfica mória
Há diversas maneiras de armazenarmos grafos em com-
putadores. A estrutura de dados usada dependerá tanto
6 da estrutura do grafo quanto do algoritmo usado para
manipulá-lo. Teoricamente, podemos dividir entre estru-

4 5 turas do tipo lista e do tipo matriz, mas em aplicações re-


ais, a melhor estrutura é uma combinação de ambas. Es-
1 truturas do tipo lista são frequentemente usadas em gra-
fos esparsos (grafos que possuem um pequeno número de
arestas em relação ao número de vértices, oposto ao grafo

3 2 denso, onde o número de arestas se aproxima do máximo


de arestas possível) já que exigem menor uso da memória.
Por outro lado, estruturas do tipo matriz fornecem um rá-
pido acesso em algumas aplicações, mas podem consumir
uma grande quantidade de memória.
Um grafo com 6 vértices e 7 arestas
Estruturas do tipo lista incluem a lista de adjacência que
Os grafos são geralmente representados graficamente da associa a cada vértice do grafo uma lista de todos os ou-
seguinte maneira: é desenhado um círculo para cada vér- tros vértices com os quais ele tem uma aresta e a lista
tice, e para cada aresta é desenhado um arco conectando de incidência, que armazena para cada vértice uma lista
suas extremidades. Se o grafo for direcionado, seu sen- de objetos que representam as arestas incidentes a esse
tido é indicado na aresta por uma seta. vértice[7][8] .
O grafo de exemplo exibido à direita é um grafo simples Estruturas do tipo matriz incluem a matriz de incidência,
com o conjunto de vértices V = {1, 2, 3, 4, 5, 6} e um uma matriz de 0’s e 1’s com suas linhas representando
conjunto de arestas E = { {1,2}, {1,5}, {2,3}, {2,5}, vértices e suas colunas as arestas e a matriz de adjacência
{3,4}, {4,5}, {4,6} } (com o mapeamento w sendo a onde ambas linhas e colunas possuem vértices. Em am-
identidade). bos casos um 1 indica dois objetos adjacentes e 0 indica
dois objetos não adjacentes.
Note que essa representação gráfica não deve ser confun-
dida com o grafo em si (a estrutura abstrata, não-gráfica).
Diferentes representações gráficas podem corresponder
1.2.5 Definições de teoria dos grafos
ao mesmo grafo.[5] O que importa é quais vértices estão
conectados entre si por quantas arestas.
Relações de incidência e de adjacência
O trabalho pioneiro de William Thomas Tutte foi de
grande influência no desenho de grafos. Entre outras rea- Se uma aresta conecta dois vértices, então esses dois vér-
lizações, ele introduziu o uso de técnicas da álgebra linear tices são ditos incidentes à aresta. Usando o grafo ao
para desenhar grafos. lado como exemplo temos: 1 é incidente a 2 e 5, mas não
Convenções alternativas para a representação de grafos é incidente a 3, 4 ou 6; 4 é incidente a 5, 3 e 6, mas não
incluem representações por adjacência como empacota- a 2 nem a 1.
mento de círculos, onde vértices são representados como Dois vértices são considerados adjacentes se uma aresta
4 CAPÍTULO 1. INTRODUÇÃO - TEORIA DOS GRAFOS

existe entre eles. No grafo acima, os vértices 1 e 2 são • para 1 ≤ i ≤ k a aresta ei incide sobre vi−1 e vi
adjacentes, mas os vértices 2 e 4 não são. O conjunto
de vizinhos de um vértice consiste de todos os vértices
adjacentes a ele. No grafo-exemplo, o vértice 1 possui 2 O tamanho de um passeio, definido por |p| corres-
vizinhos: vértice 2 e vértice 5. ponde ao número de arestas que possui, incluindo as
repetições[9] . Na figura ao lado, um passeio do vér-
Na computação, um grafo finito direcionado ou não- tice a até o vértice d possível é a lista p(a, d) =
direcionado (com, digamos, n vértices) é geralmente re- a, e9 , c, e2 , b, e1 , a, e9 , c, e8 , d de tamanho 5 . Note que
presentado por sua matriz de adjacência: uma matriz a aresta e9 se repete. É necessário listarmos as arestas
n-por-n cujo valor na linha i e coluna j fornece o número em um passeio para distinguirmos entre as diversas ares-
de arestas do i-ésimo ao j-ésimo vértices. tas existentes quando estamos trabalhando em um grafo
que não é simples. Em um grafo simples, basta listarmos
os vértices[9] .
Valência (Grau)

A valência (ou grau) de um vértice é o número de arestas


incidentes a ele. Se houver laços, serão contados duas Caminho
vezes. No grafo de exemplo os vértices 1 e 3 possuem
uma valência de 2, os vértices 2, 4 e 5 têm a valência de Caminho é uma sequência de vértices tal que de cada
3 e o vértice 6 tem a valência de 1. Se E é finito, então a um dos vértices existe uma aresta para o vértice seguinte.
valência total dos vértices é o dobro do número de arestas. Um caminho é chamado simples se nenhum dos vérti-
Em um dígrafo, distingue-se o grau de saída (o número ces no caminho se repete. O comprimento do caminho
de arestas saindo de um vértice) e o grau de entrada é o número de arestas que o caminho usa, contando-se
(o número de arestas entrando em um vértice). O grau arestas múltiplas vezes. O custo de um caminho num
de um vértice em um dígrafo é igual à soma dos graus grafo balanceado é a soma dos custos das arestas atraves-
de saída e de entrada. O grau de um vértice é definido sadas. Dois caminhos são independentes se não tiverem
somente quando o número de arestas incidentes sobre o nenhum vértice em comum, exceto o primeiro e o último.
vértice é finito. No grafo de exemplo, (1, 2, 5, 1, 2, 3) é um caminho
com comprimento 5, e (5, 2, 1) é um caminho simples de
• Lema do aperto de mãos diz que se os convidados comprimento 2.
de uma festa apertarem as mãos quando se encon-
trarem pela primeira vez, o número de convidados
• Caminho euleriano em um grafo é o caminho que
que apertam a mão um número ímpar de vezes é
usa cada aresta exatamente uma vez. Se tal cami-
par. Também em grafos não direcionados a soma
nho existir, o grafo é chamado traversável. Um ciclo
dos graus de todos os vértices é igual ao dobro do
euleriano é um ciclo que usa cada aresta exatamente
número de arestas.
uma vez.

Passeio
• Caminho hamiltoniano em um grafo é o caminho
que visita cada vértice exatamente uma vez. Um
ciclo hamiltoniano é um ciclo que visita cada vér-
tice uma só vez. O grafo do exemplo contém um
caminho hamiltoniano. Enquanto determinar se um
dado grafo contém um caminho ou ciclo euleriano
é trivial, o mesmo problema para caminhos e ciclos
hamiltonianos é trabalhoso.

Ciclo (ou circuito) é um caminho que começa e acaba


com o mesmo vértice. Ciclos de comprimento 1 são la-
Grafo com 5 vértices e 9 arestas ços. No grafo de exemplo, (1, 2, 3, 4, 5, 2, 1) é um ci-
clo de comprimento 6. Um ciclo simples é um ciclo que
Um passeio p entre dois vértices A e B , definido como tem um comprimento pelo menos de 3 e no qual o vértice
p(A, B) , é uma lista alternada de vértices e arestas inicial só aparece mais uma vez, como vértice final, e os
p(A, B) = v0 , e1 , v1 , e2 , v2 , ..., ek , vk tal que outros vértices aparecem só uma vez. No grafo acima, (1,
5, 2, 1) é um ciclo simples. Um grafo chama-se acíclico
se não contém ciclos simples.
• A = v0 e B = vk
Laço (loop) num grafo ou num dígrafo é uma aresta e em
• existe no mínimo uma aresta E cujas terminações estão no mesmo vértice.
1.2. GRAFO 5

1.2.6 Tipos de grafos raiz. As árvores são muito usadas como estruturas
de dados em informática (veja estrutura de dados em
• Grafo simples é um grafo não direcionado, sem la- árvore).
ços e existe no máximo uma aresta entre quaisquer
dois vértices (sem arestas paralelas). Para um grafo • Floresta é um conjunto de árvores; equivalente-
simples, o número de vizinhos de um vértice é igual mente a uma floresta, em algum grafo acíclico.
à sua valência. • Subgrafo de um grafo G é um grafo cujo conjunto
• Grafo completo é o grafo simples em que, para dos vértices é um subconjunto do conjunto de vér-
cada vértice do grafo, existe uma aresta conectando tices G, cujo conjunto de arestas é um subconjunto
este vértice a cada um dos demais. Ou seja, todos do conjunto de arestas de G, e cuja função w é uma
os vértices do grafo possuem mesmo grau. O grafo restrição da função de G
completo de n vértices é frequentemente denotado • Subgrafo gerador é aquele obtido pela remoção de
por Kn. Ele tem n(n−1)/2 arestas (correspondendo uma ou mais arestas de um outro grafo, dizemos en-
a todas as possíveis escolhas de pares de vértices). tão que este novo grafo obtido é gerador do primeiro,
• Grafo nulo é o grafo cujo conjunto de vértices é • Subgrafo induzido é obtido pela remoção de vérti-
vazio. ces e consequente das arestas relacionadas com ele
• Grafo vazio é o grafo cujo conjunto de arestas é de um outro grafo, dizemos que este novo grafo é
vazio. um grafo induzido do original.

• Grafo trivial é o grafo que possui apenas um vértice • Grafo parcial de um grafo G é um subgrafo com
e nenhuma aresta. o mesmo conjunto de vértices que G. Uma árvore
parcial é um grafo parcial que é árvore. Todo grafo
• Grafo regular é um grafo em que todos os vértices tem pelo menos uma árvore parcial.
tem o mesmo grau.
• Clique em um grafo é um subgrafo que também é
• Multigrafo é um grafo que permite múltiplas ares- um grafo completo. No grafo do exemplo acima, os
tas ligando os mesmos vértices (arestas paralelas). vértices 1, 2 e 5 formam um clique.
• Pseudografo é um grafo que contém arestas para- • Conjunto independente em um grafo é um con-
lelas e laços. junto de vértices não adjacentes entre si. No exem-
plo acima, os vértices 1, 3 e 6 formam um conjunto
• Grafo conexo um grafo é conexo se for possível independente e 3, 5 e 6 são outro conjunto indepen-
estabelecer um caminho de qualquer vértice para dente.
qualquer outro vértice de um grafo. Se for sempre
possível estabelecer um caminho de qualquer vér- • Grafo planar é aquele que pode ser representado
tice para qualquer outro vértice mesmo depois de em um plano sem qualquer intersecção entre arestas.
remover k−1 vértices, então diz-se que o grafo está O grafo do exemplo é planar; o grafo completo de n
k-conexo. Note que um grafo está k-conexo se, e vértices, para n> 4, não é planar.
somente se, contém k caminhos independentes en-
tre qualquer par de vértices. O grafo de exemplo • Grafo bipartido é o grafo cujos vértices podem ser
acima é conexo (e portanto 1-conexo), mas não é 2- divididos em dois conjuntos, nos quais não há ares-
conexo. Em um grafo genérico G, o corte associado tas entre vértices de um mesmo conjunto. Para um
a um conjunto X de vértices é o conjunto de todas grafo ser bipartido ele não pode conter circuitos de
as arestas que têm uma ponta em X e outra em V(G) comprimento ímpar.
- X, onde V(G) é o conjunto de todos os vértices 1. Se um grafo G é bipartido, todo o circuito
pertencentes ao grafo G. de G possui comprimento par.Sejam V1 e
• Ponto de articulação ou Vértice de corte é um V2 os dois conjuntos em que, de acordo com
vértice cuja remoção desliga um grafo. Uma ponte a definição de grafo bipartido, se particiona
é uma aresta cuja remoção desliga um grafo. Um V(G). Toda a aresta de G conecta um vértice
componente biconectado é um conjunto máximo em V1 com outro em V2. Assim sendo, se X
de arestas tal que qualquer par de arestas do con- for um vértice de V1, para “voltar” a esse vér-
junto fazem parte de um ciclo simples comum. O tice terá de se ir a V2 e voltar a V1 um número
contorno de um grafo é o comprimento do ciclo indeterminado de vezes, e de cada vez serão
simples mais curto no grafo. O contorno de um percorridas duas arestas, uma de um vértice
grafo acíclico é, por definição, infinito. em V1 para um vértice em V2 e outra de um
vértice em V2 para um vértice em V1. Logo,
• Árvore é um grafo simples acíclico e conexo. Às o número de arestas a percorrer será par, ou
vezes, um vértice da árvore é distinto e chamado de seja, o comprimento do circuito é par.
6 CAPÍTULO 1. INTRODUÇÃO - TEORIA DOS GRAFOS

2. Se todo o circuito de um grafo G possui • Os básicos são percurso em profundidade e


comprimento par, então o grafo é bipar- percurso em largura
tido.Seja G um grafo em que todo o circuito • Fila: busca em largura
tem comprimento par, e seja X um vértice de
G. Denotemos por V1 o conjunto formado por • Pilha: busca em profundidade
X e por todos os vértices cuja distância a X é
• Busca em extensão ou largura: (Breadth-First Se-
par. Seja V2 = V(G)\V1 (isto é, o conjunto
arch ou BFS). A propriedade especial está no fato
formado pelos vértices de G que não perten-
de a árvore não possuir ciclos: dados dois vértices
cem a V1). Pretende mostrar-se que não existe
quaisquer, existe exatamente 1 caminho entre eles.
qualquer aresta que conecte vértices de V1 ou
Um percurso em extensão é visitar cada nó come-
vértices de V2. Suponhamos a existência de
çando do menor nível e move-se para os níveis mais
tal aresta, isto é, suponhamos a existência de
altos nível após nível, visitando cada nó da esquerda
dois vértices em V1 (ou V2), digamos Xi e Xj,
para a direita. Sua implementação é direta quando
conectados por uma aresta. Ora existe já um
uma fila é utilizada. Depois que um nó é visitado,
caminho de comprimento par entre Xi e Xj,
seus filhos, se houver algum, são colocados no final
já que existem caminhos, ambos de compri-
da fila e o nó no início da fila é visitado. Assim, os
mento par (ou ímpar, no caso de Xi e Xj per-
nós do nível n+1 serão visitados somente depois de
tencerem a V2), entre Xi e X e entre X e Xj.
ter visitados todos os nós do nível n. Computa a me-
Se a esse caminho juntarmos a aresta {Xi;Xj}
nor distância para todos os vértices alcançáveis. O
obtemos um circuito de comprimento ímpar o
sub-grafo contendo os caminhos percorridos é cha-
que contraria a hipótese de apenas existirem
mado de breadth-first tree.
circuitos de comprimento par.
• Busca em profundidade (Depth-first search ou
• Grafo bipartido completo é o grafo bipartido, cujo
DFS). Um algoritmo de busca em profundidade re-
qualquer vértice do primeiro conjunto é adjacente a
aliza uma busca não-informada que progride através
todos vértices do segundo conjunto
da expansão do primeiro nó filho da árvore de busca,
• Grafo k-partido ou grafo de k-coloração é um e se aprofunda cada vez mais, até que o alvo da busca
grafo cujos vértices podem ser particionados em k seja encontrado ou até que ele se depare com um nó
conjuntos disjuntos, nos quais não há arestas en- que não possui filhos (nó folha). Então a busca retro-
tre vértices de um mesmo conjunto. Um grafo 2- cede (backtrack) e começa no próximo nó. Numa
partido é o mesmo que grafo bipartido. implementação não-recursiva, todos os nós expan-
didos recentemente são adicionados a uma pilha,
• Emparelhamento de grafos consiste em partir o para realizar a exploração. A complexidade espa-
grafo em conjuntos de vértices a qual não compar- cial de um algoritmo de busca em profundidade é
tilham nenhuma aresta entre eles. muito menor que a de um algoritmo de busca em
largura. A complexidade temporal de ambos algo-
• Teorema das quatro cores é baseado no problema
ritmos são proporcionais ao número de vértices so-
das cores necessárias para se colorir um mapa sem
mados ao número de arestas dos grafos aos quais
que os países vizinhos compartilhem da mesma cor.
eles atravessam. Quando ocorrem buscas em gra-
Transformando o mapa em um grafo pode-se provar
fos muito grandes, que não podem ser armazenadas
que pode-se representar qualquer mapa (um grafo
completamente na memória, a busca em profundi-
planar) com apenas 4 cores (4 partições).
dade não termina, em casos onde o comprimento de
um caminho numa árvore de busca é infinito. O sim-
Buscas em Árvores ples artifício de “ lembrar quais nós já foram visita-
dos ” não funciona, porque pode não haver memória
Percurso em árvores suficiente. Isso pode ser resolvido estabelecendo-se
um limite de aumento na profundidade da árvore.
• • É possível percorrer de modo sistemático to-
dos os vértices e arestas do grafo. O grafo pode
ser dirigido ou não.
1.2.7 Problemas que envolvem grafos
• O percurso em árvores é o processo de visitar • Coloração de grafos: o Teorema das quatro cores
cada nó da árvore exatamente uma vez.
• Conjuntos de Grafos
• O percurso pode ser interpretado como colo-
car todos os nós em uma linha, não existe uma • Conjunto independente
ordem para ser seguida.
• Clique
• Existem n percursos diferentes, quase todos
caóticos. • Problemas de roteamento:
1.2. GRAFO 7

• Sete pontes de Königsberg [5] Di Battista, Giuseppe; Eades, Peter; Tamassia, Ro-
berto; Tollis, Ioannis G. (1994), “Algorithms for
• Árvore de extensão mínima
Drawing Graphs: an Annotated Bibliography”, Compu-
• Problema do caminho mínimo tational Geometry: Theory and Applications 4: 235–282,
doi:10.1016/0925-7721(94)00014-x
• Problema da inspeção de rotas (também co-
nhecido como o "Problema do carteiro chi- [6] Longabaugh, William (2012), “Combing the hair-
nês") ball with BioFabric: a new approach for visua-
lization of large networks”, BMC Bioinformatics
• Problema do caixeiro viajante 13: 275, doi:10.1186/1471-2105-13-275, PMID
23102059, http://www.biomedcentral.com/content/pdf/
• Fluxos de rede:
1471-2105-13-275.pdf
• Teorema do mínimo corte-máximo fluxo [7] Goodrich, Michael T.; Tamassia, Roberto (2001). Estru-
turas de Dados e Algoritmos em Java 2ª ed. (Porto Alegre:
• conjectura da reconstrução Bookman). p. 502-503. ISBN 85-363-0043-4.

• Problemas de Isomorfismo (casamento de grafos) [8] Goodrich, Michael T.; Tamassia, Roberto (2004). Pro-
jeto de Algoritmos. Fundamentos, Análise e Exemplos da
• Rotulação canônica? Internet (Porto Alegre: Bookman). p. 299-303. ISBN
85-363-0303-4.
• Isomorfismo de subgrafos e monomorfismos.
• Máximo subgrafo comum [9] West, Douglas Brent (2001). «Chapter 1 - Fundamental
Concepts». Introduction to Graph Theory 2nd ed. (USA:
Prentice Hall). p. 20. ISBN 0-13-014400-2.
1.2.8 Algoritmos importantes
1.2.11 Ver também
• algoritmo de Dijkstra
• Estrutura de dados árvore ordenada - DAGs, árvores
• algoritmo de Kruskal
binárias e outras formas especiais de grafos.
• algoritmo do vizinho mais próximo • Rede complexa
• algoritmo de Prim. • Teoria espectral de grafos
• Redes de pequeno mundo
1.2.9 Generalizações
• Modelo de Watts e Strogatz
Num hipergrafo uma aresta pode conectar mais que dois
vértices.
1.2.12 Ligações externas
Um grafo não-direcionado pode ser visto como um
complexo simplicial consistindo de símplices de uma di- • Uma Introdução Sucinta à Teoria dos Grafos
mensão (as arestas) e símplices de dimensão zero (os vér-
• Graph theory tutorial (em inglês)
tices). Ou seja, complexos são generalizações de grafos
que permitem símplices de maiores dimensões. • Graph theory Algorithms (em inglês) — algoritmos
em pseudocódigo

1.2.10 Referências • Algorithm Animations (em inglês)

[1] Biggs, N.; Lloyd, E. and Wilson, R. (1986), Graph The- • Graph Theory Software (em inglês)
ory, 1736-1936, Oxford University Press
• Lista de algoritmos de grafos (em inglês) — com re-
[2] Cayley, A. (1857), “On the theory of the analytical forms ferências e links para bibliotecas de implementação
called trees”, Philosophical Magazine, Series IV 13 (85): de grafos
172–176, doi:10.1017/CBO9780511703690.046

[3] Tutte, W.T. (2001), Graph Theory, Cambridge University Ferramentas de grafos populares
Press, p. 30, ISBN 978-0-521-79489-3, https://books.
google.com/books?id=uTGhooU37h4C&pg=PA30, vi- • Graph Visualization Software (em inglês) — ferra-
sitado em 2016-03-14 menta para visualizar e interagir com diagramas de
grafos
[4] «The Four Color Theorem». Mathpages.com. Consul-
tado em 03 de junho de 2016. • Visualization of Compiler Graphs (em inglês)
8 CAPÍTULO 1. INTRODUÇÃO - TEORIA DOS GRAFOS

• Data Visualization Software (em inglês)

• Planarity Game (em inglês) — jogo sobre Grafos


Planares
Capítulo 2

Conceitos Básicos e Definições

2.1 Grafo B se e somente se A contém um link para B. Dígrafos


são também usados para representar máquinas de estado
finito. O desenvolvimento de algoritmos para manipular
grafos é um tema importante da ciência da computação.

2.1.1 Histórico

Grafo com 4 vértices e 6 arestas. É um grafo completo, conexo e


planar.
O problema das pontes de Königsberg
A teoria dos grafos é um ramo da matemática que es-
tuda as relações entre os objetos de um determinado con- O artigo de Leonhard Euler, publicado em 1736, sobre
junto. Para tal são empregadas estruturas chamadas de o problema das sete pontes de Königsberg, é considerado
grafos, G(V,E), onde V é um conjunto não vazio de obje- o primeiro resultado da teoria dos grafos.[1] É também
tos denominados vértices e E é um subconjunto de pares considerado um dos primeiros resultados topológicos na
não ordenados de V, chamados arestas. geometria; isto é, não dependente de quaisquer medidas.
Isso ilustra a profunda conexão entre a teoria dos grafos
Dependendo da aplicação, arestas podem ou não ter dire- e topologia.
ção, pode ser permitido ou não arestas ligarem um vértice
a ele próprio e vértices e/ou arestas podem ter um peso Mais de um século após a publicação do artigo de Euler
(numérico) associado. Se as arestas têm uma direção as- sobre as pontes de Königsberg e enquanto Listing intro-
sociada (indicada por uma seta na representação gráfica) duzia o conceito de topologia, Cayley foi levado por um
temos um dígrafo (grafo orientado). Um grafo com um interesse em formas analíticas particulares decorrentes do
único vértice e sem arestas é conhecido como grafo tri- cálculo diferencial[2]para estudar uma classe particular de
vial. grafos, as árvores . Esse estudo teve diversas implica-
ções na química teórica. As técnicas usadas por ele eram
Estruturas que podem ser representadas por grafos estão relacionadas a enumeração de grafos com propriedades
em toda parte e muitos problemas de interesse prático particulares.
podem ser formulados como questões sobre certos grafos.
Por exemplo, a estrutura de ligações da Wikipédia pode O primeiro livro didático sobre teoria dos grafos[3]
foi es-
ser representada por um dígrafo: os vértices são os artigos crito por Dénes König e publicado em 1936 .
da Wikipédia e existe uma aresta do artigo A para o artigo Um dos problemas mais conhecidos em teoria dos gra-

9
10 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

fos é problema das quatro cores: "É possível que qual-


quer mapa desenhado num plano, dividido em regiões,
pode ser colorido com apenas quatro cores de tal forma
6
que as regiões vizinhas não partilhem a mesma cor?". O
primeiro a notar o problema das quatro cores foi August 4 5
Ferdinand Möbius em 1840. Em 1852, Francis Guthrie
escreveu em uma carta para seu irmão Frederick, estu-
1
dante na University College London, sobre o problema.
Mas nenhum deles conseguiu resovê-lo. Então Frederick
perguntou a um de seus professores, DeMorgan[4] . 3 2
2.1.2 Definições de grafos e dígrafos
Um grafo com 6 vértices e 7 arestas
Na literatura, as definições básicas da teoria dos grafos
variam bastante. Aqui estão as convenções usadas nesta
Diferentes representações gráficas podem corresponder
enciclopédia.
ao mesmo grafo.[5] O que importa é quais vértices estão
Um grafo direcionado (também chamado dígrafo ou conectados entre si por quantas arestas.
quiver) consiste de
O trabalho pioneiro de William Thomas Tutte foi de
grande influência no desenho de grafos. Entre outras rea-
• um conjunto V de vértices, lizações, ele introduziu o uso de técnicas da álgebra linear
• um conjunto E de arestas e para desenhar grafos.
Convenções alternativas para a representação de grafos
• mapas s, t : E → V, onde s(e) é a fonte e t(e) é o alvo
incluem representações por adjacência como empacota-
da aresta direcionada e.
mento de círculos, onde vértices são representados como
regiões disjuntas no plano e arestas são representadas por
Um grafo não direcionado (ou simplesmente grafo) é
adjacências entre regiões; representações por intersecção
dado por
no qual vértices são representados como objetos geomé-
tricos não disjuntos e arestas são representadas por suas
• um conjunto V de vértices, intersecções; representações por visibilidade onde vérti-
• um conjunto E de arestas e ces são representados por regiões no plano e arestas são
representadas por regiões com uma linha de visão desobs-
• uma função w : E → P(V) que associa a cada aresta truída para cada vértice; desenhos confluentes, nos quais
um subconjunto de dois ou de um elemento de V, arestas são curvas suaves dentro de trilhos de trem; tex-
interpretado como os pontos terminais da aresta. turas onde vértices são linhas horizontais e arestas são li-
nhas verticais[6] ; e visualizações da matriz de adjacência
Em um grafo ou dígrafo com pesos, uma função adi- de um grafo.
cional E → R associa um valor a cada aresta, o que
O desenho de grafos em superfícies diferentes do plano é
pode ser considerado seu “custo"; tais grafos surgem em
também estudado.
problemas de rota ótima tais como o problema do caixeiro
viajante.
2.1.4 Armazenamento de grafos em me-
2.1.3 Representação gráfica mória

Os grafos são geralmente representados graficamente da Há diversas maneiras de armazenarmos grafos em com-
seguinte maneira: é desenhado um círculo para cada vér- putadores. A estrutura de dados usada dependerá tanto
tice, e para cada aresta é desenhado um arco conectando da estrutura do grafo quanto do algoritmo usado para
suas extremidades. Se o grafo for direcionado, seu sen- manipulá-lo. Teoricamente, podemos dividir entre estru-
tido é indicado na aresta por uma seta. turas do tipo lista e do tipo matriz, mas em aplicações re-
ais, a melhor estrutura é uma combinação de ambas. Es-
O grafo de exemplo exibido à direita é um grafo simples truturas do tipo lista são frequentemente usadas em gra-
com o conjunto de vértices V = {1, 2, 3, 4, 5, 6} e um fos esparsos (grafos que possuem um pequeno número de
conjunto de arestas E = { {1,2}, {1,5}, {2,3}, {2,5}, arestas em relação ao número de vértices, oposto ao grafo
{3,4}, {4,5}, {4,6} } (com o mapeamento w sendo a denso, onde o número de arestas se aproxima do máximo
identidade). de arestas possível) já que exigem menor uso da memória.
Note que essa representação gráfica não deve ser confun- Por outro lado, estruturas do tipo matriz fornecem um rá-
dida com o grafo em si (a estrutura abstrata, não-gráfica). pido acesso em algumas aplicações, mas podem consumir
2.1. GRAFO 11

uma grande quantidade de memória. par. Também em grafos não direcionados a soma
Estruturas do tipo lista incluem a lista de adjacência que dos graus de todos os vértices é igual ao dobro do
associa a cada vértice do grafo uma lista de todos os ou- número de arestas.
tros vértices com os quais ele tem uma aresta e a lista
de incidência, que armazena para cada vértice uma lista Passeio
de objetos que representam as arestas incidentes a esse
vértice[7][8] .
Estruturas do tipo matriz incluem a matriz de incidência,
uma matriz de 0’s e 1’s com suas linhas representando
vértices e suas colunas as arestas e a matriz de adjacência
onde ambas linhas e colunas possuem vértices. Em am-
bos casos um 1 indica dois objetos adjacentes e 0 indica
dois objetos não adjacentes.

2.1.5 Definições de teoria dos grafos


Grafo com 5 vértices e 9 arestas
Relações de incidência e de adjacência
Um passeio p entre dois vértices A e B , definido como
Se uma aresta conecta dois vértices, então esses dois vér- p(A, B) , é uma lista alternada de vértices e arestas
tices são ditos incidentes à aresta. Usando o grafo ao p(A, B) = v0 , e1 , v1 , e2 , v2 , ..., ek , vk tal que
lado como exemplo temos: 1 é incidente a 2 e 5, mas não
é incidente a 3, 4 ou 6; 4 é incidente a 5, 3 e 6, mas não • A = v0 e B = vk
a 2 nem a 1.
• existe no mínimo uma aresta
Dois vértices são considerados adjacentes se uma aresta
existe entre eles. No grafo acima, os vértices 1 e 2 são • para 1 ≤ i ≤ k a aresta ei incide sobre vi−1 e vi
adjacentes, mas os vértices 2 e 4 não são. O conjunto
de vizinhos de um vértice consiste de todos os vértices O tamanho de um passeio, definido por |p| corres-
adjacentes a ele. No grafo-exemplo, o vértice 1 possui 2 ponde ao número de arestas que possui, incluindo as
vizinhos: vértice 2 e vértice 5. repetições[9] . Na figura ao lado, um passeio do vér-
Na computação, um grafo finito direcionado ou não- tice a até o vértice d possível é a lista p(a, d) =
direcionado (com, digamos, n vértices) é geralmente re- a, e9 , c, e2 , b, e1 , a, e9 , c, e8 , d de tamanho 5 . Note que
presentado por sua matriz de adjacência: uma matriz a aresta e9 se repete. É necessário listarmos as arestas
n-por-n cujo valor na linha i e coluna j fornece o número em um passeio para distinguirmos entre as diversas ares-
de arestas do i-ésimo ao j-ésimo vértices. tas existentes quando estamos trabalhando em um grafo
que não é simples. Em um grafo simples, basta listarmos
os vértices[9] .
Valência (Grau)

A valência (ou grau) de um vértice é o número de arestas Caminho


incidentes a ele. Se houver laços, serão contados duas
vezes. No grafo de exemplo os vértices 1 e 3 possuem Caminho é uma sequência de vértices tal que de cada
uma valência de 2, os vértices 2, 4 e 5 têm a valência de um dos vértices existe uma aresta para o vértice seguinte.
3 e o vértice 6 tem a valência de 1. Se E é finito, então a Um caminho é chamado simples se nenhum dos vérti-
valência total dos vértices é o dobro do número de arestas. ces no caminho se repete. O comprimento do caminho
Em um dígrafo, distingue-se o grau de saída (o número é o número de arestas que o caminho usa, contando-se
de arestas saindo de um vértice) e o grau de entrada arestas múltiplas vezes. O custo de um caminho num
(o número de arestas entrando em um vértice). O grau grafo balanceado é a soma dos custos das arestas atraves-
de um vértice em um dígrafo é igual à soma dos graus sadas. Dois caminhos são independentes se não tiverem
de saída e de entrada. O grau de um vértice é definido nenhum vértice em comum, exceto o primeiro e o último.
somente quando o número de arestas incidentes sobre o No grafo de exemplo, (1, 2, 5, 1, 2, 3) é um caminho
vértice é finito. com comprimento 5, e (5, 2, 1) é um caminho simples de
comprimento 2.
• Lema do aperto de mãos diz que se os convidados
de uma festa apertarem as mãos quando se encon- • Caminho euleriano em um grafo é o caminho que
trarem pela primeira vez, o número de convidados usa cada aresta exatamente uma vez. Se tal cami-
que apertam a mão um número ímpar de vezes é nho existir, o grafo é chamado traversável. Um ciclo
12 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

euleriano é um ciclo que usa cada aresta exatamente • Grafo conexo um grafo é conexo se for possível
uma vez. estabelecer um caminho de qualquer vértice para
qualquer outro vértice de um grafo. Se for sempre
• Caminho hamiltoniano em um grafo é o caminho possível estabelecer um caminho de qualquer vér-
que visita cada vértice exatamente uma vez. Um tice para qualquer outro vértice mesmo depois de
ciclo hamiltoniano é um ciclo que visita cada vér- remover k−1 vértices, então diz-se que o grafo está
tice uma só vez. O grafo do exemplo contém um k-conexo. Note que um grafo está k-conexo se, e
caminho hamiltoniano. Enquanto determinar se um somente se, contém k caminhos independentes en-
dado grafo contém um caminho ou ciclo euleriano tre qualquer par de vértices. O grafo de exemplo
é trivial, o mesmo problema para caminhos e ciclos acima é conexo (e portanto 1-conexo), mas não é 2-
hamiltonianos é trabalhoso. conexo. Em um grafo genérico G, o corte associado
a um conjunto X de vértices é o conjunto de todas
as arestas que têm uma ponta em X e outra em V(G)
Ciclo (ou circuito) é um caminho que começa e acaba - X, onde V(G) é o conjunto de todos os vértices
com o mesmo vértice. Ciclos de comprimento 1 são la- pertencentes ao grafo G.
ços. No grafo de exemplo, (1, 2, 3, 4, 5, 2, 1) é um ci-
clo de comprimento 6. Um ciclo simples é um ciclo que • Ponto de articulação ou Vértice de corte é um
tem um comprimento pelo menos de 3 e no qual o vértice vértice cuja remoção desliga um grafo. Uma ponte
inicial só aparece mais uma vez, como vértice final, e os é uma aresta cuja remoção desliga um grafo. Um
outros vértices aparecem só uma vez. No grafo acima, (1, componente biconectado é um conjunto máximo
5, 2, 1) é um ciclo simples. Um grafo chama-se acíclico de arestas tal que qualquer par de arestas do con-
se não contém ciclos simples. junto fazem parte de um ciclo simples comum. O
contorno de um grafo é o comprimento do ciclo
Laço (loop) num grafo ou num dígrafo é uma aresta e em simples mais curto no grafo. O contorno de um
E cujas terminações estão no mesmo vértice. grafo acíclico é, por definição, infinito.
• Árvore é um grafo simples acíclico e conexo. Às
2.1.6 Tipos de grafos vezes, um vértice da árvore é distinto e chamado de
raiz. As árvores são muito usadas como estruturas
• Grafo simples é um grafo não direcionado, sem la- de dados em informática (veja estrutura de dados em
ços e existe no máximo uma aresta entre quaisquer árvore).
dois vértices (sem arestas paralelas). Para um grafo
• Floresta é um conjunto de árvores; equivalente-
simples, o número de vizinhos de um vértice é igual
mente a uma floresta, em algum grafo acíclico.
à sua valência.
• Subgrafo de um grafo G é um grafo cujo conjunto
• Grafo completo é o grafo simples em que, para dos vértices é um subconjunto do conjunto de vér-
cada vértice do grafo, existe uma aresta conectando tices G, cujo conjunto de arestas é um subconjunto
este vértice a cada um dos demais. Ou seja, todos do conjunto de arestas de G, e cuja função w é uma
os vértices do grafo possuem mesmo grau. O grafo restrição da função de G
completo de n vértices é frequentemente denotado
por Kn. Ele tem n(n−1)/2 arestas (correspondendo • Subgrafo gerador é aquele obtido pela remoção de
a todas as possíveis escolhas de pares de vértices). uma ou mais arestas de um outro grafo, dizemos en-
tão que este novo grafo obtido é gerador do primeiro,
• Grafo nulo é o grafo cujo conjunto de vértices é
• Subgrafo induzido é obtido pela remoção de vérti-
vazio.
ces e consequente das arestas relacionadas com ele
• Grafo vazio é o grafo cujo conjunto de arestas é de um outro grafo, dizemos que este novo grafo é
vazio. um grafo induzido do original.
• Grafo parcial de um grafo G é um subgrafo com
• Grafo trivial é o grafo que possui apenas um vértice
o mesmo conjunto de vértices que G. Uma árvore
e nenhuma aresta.
parcial é um grafo parcial que é árvore. Todo grafo
tem pelo menos uma árvore parcial.
• Grafo regular é um grafo em que todos os vértices
tem o mesmo grau. • Clique em um grafo é um subgrafo que também é
um grafo completo. No grafo do exemplo acima, os
• Multigrafo é um grafo que permite múltiplas ares- vértices 1, 2 e 5 formam um clique.
tas ligando os mesmos vértices (arestas paralelas).
• Conjunto independente em um grafo é um con-
• Pseudografo é um grafo que contém arestas para- junto de vértices não adjacentes entre si. No exem-
lelas e laços. plo acima, os vértices 1, 3 e 6 formam um conjunto
2.1. GRAFO 13

independente e 3, 5 e 6 são outro conjunto indepen- • Emparelhamento de grafos consiste em partir o


dente. grafo em conjuntos de vértices a qual não compar-
tilham nenhuma aresta entre eles.
• Grafo planar é aquele que pode ser representado
em um plano sem qualquer intersecção entre arestas. • Teorema das quatro cores é baseado no problema
O grafo do exemplo é planar; o grafo completo de n das cores necessárias para se colorir um mapa sem
vértices, para n> 4, não é planar. que os países vizinhos compartilhem da mesma cor.
Transformando o mapa em um grafo pode-se provar
• Grafo bipartido é o grafo cujos vértices podem ser que pode-se representar qualquer mapa (um grafo
divididos em dois conjuntos, nos quais não há ares- planar) com apenas 4 cores (4 partições).
tas entre vértices de um mesmo conjunto. Para um
grafo ser bipartido ele não pode conter circuitos de
comprimento ímpar. Buscas em Árvores

1. Se um grafo G é bipartido, todo o circuito Percurso em árvores


de G possui comprimento par.Sejam V1 e
V2 os dois conjuntos em que, de acordo com
• • É possível percorrer de modo sistemático to-
a definição de grafo bipartido, se particiona
dos os vértices e arestas do grafo. O grafo pode
V(G). Toda a aresta de G conecta um vértice
ser dirigido ou não.
em V1 com outro em V2. Assim sendo, se X
for um vértice de V1, para “voltar” a esse vér- • O percurso em árvores é o processo de visitar
tice terá de se ir a V2 e voltar a V1 um número cada nó da árvore exatamente uma vez.
indeterminado de vezes, e de cada vez serão • O percurso pode ser interpretado como colo-
percorridas duas arestas, uma de um vértice car todos os nós em uma linha, não existe uma
em V1 para um vértice em V2 e outra de um ordem para ser seguida.
vértice em V2 para um vértice em V1. Logo, • Existem n percursos diferentes, quase todos
o número de arestas a percorrer será par, ou caóticos.
seja, o comprimento do circuito é par.
• Os básicos são percurso em profundidade e
2. Se todo o circuito de um grafo G possui percurso em largura
comprimento par, então o grafo é bipar-
tido.Seja G um grafo em que todo o circuito • Fila: busca em largura
tem comprimento par, e seja X um vértice de • Pilha: busca em profundidade
G. Denotemos por V1 o conjunto formado por
X e por todos os vértices cuja distância a X é • Busca em extensão ou largura: (Breadth-First Se-
par. Seja V2 = V(G)\V1 (isto é, o conjunto arch ou BFS). A propriedade especial está no fato
formado pelos vértices de G que não perten- de a árvore não possuir ciclos: dados dois vértices
cem a V1). Pretende mostrar-se que não existe quaisquer, existe exatamente 1 caminho entre eles.
qualquer aresta que conecte vértices de V1 ou Um percurso em extensão é visitar cada nó come-
vértices de V2. Suponhamos a existência de çando do menor nível e move-se para os níveis mais
tal aresta, isto é, suponhamos a existência de altos nível após nível, visitando cada nó da esquerda
dois vértices em V1 (ou V2), digamos Xi e Xj, para a direita. Sua implementação é direta quando
conectados por uma aresta. Ora existe já um uma fila é utilizada. Depois que um nó é visitado,
caminho de comprimento par entre Xi e Xj, seus filhos, se houver algum, são colocados no final
já que existem caminhos, ambos de compri- da fila e o nó no início da fila é visitado. Assim, os
mento par (ou ímpar, no caso de Xi e Xj per- nós do nível n+1 serão visitados somente depois de
tencerem a V2), entre Xi e X e entre X e Xj. ter visitados todos os nós do nível n. Computa a me-
Se a esse caminho juntarmos a aresta {Xi;Xj} nor distância para todos os vértices alcançáveis. O
obtemos um circuito de comprimento ímpar o sub-grafo contendo os caminhos percorridos é cha-
que contraria a hipótese de apenas existirem mado de breadth-first tree.
circuitos de comprimento par. • Busca em profundidade (Depth-first search ou
• Grafo bipartido completo é o grafo bipartido, cujo DFS). Um algoritmo de busca em profundidade re-
qualquer vértice do primeiro conjunto é adjacente a aliza uma busca não-informada que progride através
todos vértices do segundo conjunto da expansão do primeiro nó filho da árvore de busca,
e se aprofunda cada vez mais, até que o alvo da busca
• Grafo k-partido ou grafo de k-coloração é um seja encontrado ou até que ele se depare com um nó
grafo cujos vértices podem ser particionados em k que não possui filhos (nó folha). Então a busca retro-
conjuntos disjuntos, nos quais não há arestas en- cede (backtrack) e começa no próximo nó. Numa
tre vértices de um mesmo conjunto. Um grafo 2- implementação não-recursiva, todos os nós expan-
partido é o mesmo que grafo bipartido. didos recentemente são adicionados a uma pilha,
14 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

para realizar a exploração. A complexidade espa- 2.1.9 Generalizações


cial de um algoritmo de busca em profundidade é
muito menor que a de um algoritmo de busca em Num hipergrafo uma aresta pode conectar mais que dois
largura. A complexidade temporal de ambos algo- vértices.
ritmos são proporcionais ao número de vértices so- Um grafo não-direcionado pode ser visto como um
mados ao número de arestas dos grafos aos quais complexo simplicial consistindo de símplices de uma di-
eles atravessam. Quando ocorrem buscas em gra- mensão (as arestas) e símplices de dimensão zero (os vér-
fos muito grandes, que não podem ser armazenadas tices). Ou seja, complexos são generalizações de grafos
completamente na memória, a busca em profundi- que permitem símplices de maiores dimensões.
dade não termina, em casos onde o comprimento de
um caminho numa árvore de busca é infinito. O sim-
ples artifício de “ lembrar quais nós já foram visita- 2.1.10 Referências
dos ” não funciona, porque pode não haver memória
suficiente. Isso pode ser resolvido estabelecendo-se [1] Biggs, N.; Lloyd, E. and Wilson, R. (1986), Graph The-
um limite de aumento na profundidade da árvore. ory, 1736-1936, Oxford University Press
[2] Cayley, A. (1857), “On the theory of the analytical forms
called trees”, Philosophical Magazine, Series IV 13 (85):
2.1.7 Problemas que envolvem grafos 172–176, doi:10.1017/CBO9780511703690.046
[3] Tutte, W.T. (2001), Graph Theory, Cambridge University
• Coloração de grafos: o Teorema das quatro cores
Press, p. 30, ISBN 978-0-521-79489-3, https://books.
• Conjuntos de Grafos google.com/books?id=uTGhooU37h4C&pg=PA30, vi-
sitado em 2016-03-14
• Conjunto independente [4] «The Four Color Theorem». Mathpages.com. Consul-
• Clique tado em 03 de junho de 2016.
[5] Di Battista, Giuseppe; Eades, Peter; Tamassia, Ro-
• Problemas de roteamento: berto; Tollis, Ioannis G. (1994), “Algorithms for
Drawing Graphs: an Annotated Bibliography”, Compu-
• Sete pontes de Königsberg tational Geometry: Theory and Applications 4: 235–282,
• Árvore de extensão mínima doi:10.1016/0925-7721(94)00014-x

• Problema do caminho mínimo [6] Longabaugh, William (2012), “Combing the hair-
ball with BioFabric: a new approach for visua-
• Problema da inspeção de rotas (também co- lization of large networks”, BMC Bioinformatics
nhecido como o "Problema do carteiro chi- 13: 275, doi:10.1186/1471-2105-13-275, PMID
nês") 23102059, http://www.biomedcentral.com/content/pdf/
• Problema do caixeiro viajante 1471-2105-13-275.pdf
[7] Goodrich, Michael T.; Tamassia, Roberto (2001). Estru-
• Fluxos de rede: turas de Dados e Algoritmos em Java 2ª ed. (Porto Alegre:
Bookman). p. 502-503. ISBN 85-363-0043-4.
• Teorema do mínimo corte-máximo fluxo
[8] Goodrich, Michael T.; Tamassia, Roberto (2004). Pro-
• conjectura da reconstrução jeto de Algoritmos. Fundamentos, Análise e Exemplos da
Internet (Porto Alegre: Bookman). p. 299-303. ISBN
• Problemas de Isomorfismo (casamento de grafos) 85-363-0303-4.
[9] West, Douglas Brent (2001). «Chapter 1 - Fundamental
• Rotulação canônica?
Concepts». Introduction to Graph Theory 2nd ed. (USA:
• Isomorfismo de subgrafos e monomorfismos. Prentice Hall). p. 20. ISBN 0-13-014400-2.
• Máximo subgrafo comum
2.1.11 Ver também
2.1.8 Algoritmos importantes • Estrutura de dados árvore ordenada - DAGs, árvores
binárias e outras formas especiais de grafos.
• algoritmo de Dijkstra
• Rede complexa
• algoritmo de Kruskal
• Teoria espectral de grafos
• algoritmo do vizinho mais próximo • Redes de pequeno mundo
• algoritmo de Prim. • Modelo de Watts e Strogatz
2.2. VÉRTICE 15

2.1.12 Ligações externas por exemplo, uma rede semântica é um grafo no qual os
vértices representam conceitos ou classes de objetos.
• Uma Introdução Sucinta à Teoria dos Grafos
Os dois vértices formando uma aresta são ditos suas ex-
• Graph theory tutorial (em inglês) tremidades e a aresta é dita que é incidente para com os
vértices.[1] Um vértice w é dito ser adjacente a outro vér-
• Graph theory Algorithms (em inglês) — algoritmos tice v se o grafo contém uma aresta (v,w).[2] A adjacência
em pseudocódigo de um vértice v é um subgrafo induzido do grafo, formado
por todos os vértices adjacentes a v.
• Algorithm Animations (em inglês)
O grau de um vértice em um grafo é o número de ares-
• Graph Theory Software (em inglês) tas incidentes a ele.[3] Um vértice isolado é um vértice
• Lista de algoritmos de grafos (em inglês) — com re- com grau zero, isto é, um vértice que não é um ponto fi-
ferências e links para bibliotecas de implementação nal de toda a aresta. Um vértice folha (também vértice
de grafos pendente) é um vértice de grau um. Em um grafo dire-
cionado, pode-se distinguir o grau de saída (número de
arestas divergentes) do grau de entrada (número de ares-
Ferramentas de grafos populares tas convergentes); uma fonte é um vértice com grau de
entrada zero, enquanto um sumidouro (ou poço) é um
• Graph Visualization Software (em inglês) — ferra- vértice com grau de saída nulo[2] .
menta para visualizar e interagir com diagramas de
Um vértice de corte é um vértice cuja remoção (junta-
grafos
mente com as arestas a ele conectadas) provoca um redu-
• Visualization of Compiler Graphs (em inglês) ção na conexidade do grafo;[4] Um separador é uma cole-
ção de vértices cuja remoção desconecta o grafo restante
• Data Visualization Software (em inglês) em pedaços pequenos.[5] Um grafo k-conexo é um gráfico
• Planarity Game (em inglês) — jogo sobre Grafos em que a remoção de menos de k vértices sempre deixa
Planares o grafo ainda conectado. Um conjunto independente é
um conjunto de vértices tal que não existem dois vérti-
ces adjacentes contido neste conjunto, e uma cobertura
de vértices é um conjunto de vértices, que inclui o ponto
2.2 Vértice de extremidade de cada aresta do grafo. O espaço de vér-
tices de um grafo é um espaço vetorial com um conjunto
Nota: Para outros usos veja Vértice de vetores de base correspondente aos vértices do gráfico.
Em teoria dos grafos, um vértice (plural vértices) ou
Um grafo é vértice-transitivo se ele tiver simetrias que
mapeiam qualquer vértice para qualquer outro vértice.
No contexto da enumeração de grafos e isomorfismo de
6 grafos, é importante fazer a distinção entre vértices ro-

5
tulados e vértices sem rótulo. Um vértice rotulado é

4 1
um vértice que está associado com informação extra que
possa o distinguir de outros vértices rotulados; dois grafos
podem ser considerados isomórficos somente se a corres-
pondência entre seus vértices emparelham vértices com
rótulos iguais. Um vértice não marcado é aquele que

3 2 pode ser substituído por qualquer outro vértice com base


apenas em suas adjacências no gráfico e não baseado em
quaisquer informações adicionais.
Vértices em grafos são análogos, mas não o mesmo que,
Um grafo com 6 vértices e 7 arestas onde o vértice da extrema-
vértices de poliedros: o esqueleto de um poliedro forma
direita é um vértice-folha ou um vértice-pendente.
um grafo, os vértices do qual são vértices do poliedro,
mas os vértices do poliedro tem uma estrutura adicio-
nó é a unidade fundamental da qual os grafos são for-
nal (sua localização geométrica) que não se presume estar
mados: um grafo não dirigido consiste de um conjunto
presente na teoria dos grafos. A Figura de vértice de um
de vértices e um conjunto de arestas (pares de vértices
vértice de um poliedro é análoga à vizinhança de um vér-
não ordenados), enquanto um digrafo é constituído por
tice em um grafo.
um conjunto de vértices e um conjunto de arcos (pares
ordenados de vértices). Do ponto de vista da teoria dos Em um dígrafo, estrela frontal de um nodo u é definida
grafos, vértices são tratados como objetos inexpressivos e como a suas arestas de saída. Em um grafo G com um
indivisíveis, embora possam ter uma estrutura adicional, conjunto de vértices V e um conjunto de arestas E , a
dependendo da aplicação a partir da qual surge o grafo; estrela frontal de u pode ser descrita como
16 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

{(u, v) ∈ E}. [6]

2.2.1 Referências
[1] Even, Shimon (1979). Graph Algorithms (Rockville,
Maryland: Computer Science Press). p. 249. ISBN 0-
914894-21-8.

[2] Szwarcfiter, Jayme Luiz (1988). Grafos e algoritmos com-


putacionais (Rio de Janeiro: Campus). ISBN 85-7001-
341-8.

[3] Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ro-


nald L.; Stein, Clifford (2002). Algoritmos. Teoria e Prá-
tica 2ª ed. (Rio de Janeiro: Campus). p. 916. ISBN
85-352-0926-3.

[4] Grafos - UFSC

[5] Algoritmos em Grafos - IME

[6] "" 13. DOI:10.1007/BF02288320.

• Berge, Claude, Théorie des graphes et ses applicati-


ons. Collection Universitaire de Mathématiques, II
Dunod, Paris 1958, viii+277 pp. (English edition,
Wiley 1961; Methuen & Co, New York 1962; Rus-
sian, Moscow 1961; Spanish, Mexico 1962; Rou-
manian, Bucharest 1969; Chinese, Shanghai 1963;
Second printing of the 1962 first English edition.
Dover, New York 2001)
• Chartrand, Gary (1985). Introductory graph theory
(New York: Dover). ISBN 0-486-24775-9.
Tipos de arestas.
• Biggs, Norman; Lloyd, E. H.; Wilson, Robin J.
(1986). Graph theory, 1736-1936 (Oxford [Ox-
fordshire]: Clarendon Press). ISBN 0-19-853916- (pares ordenados de vértices). As arestas são considera-
9. das as uniões entre os vértices. Uma aresta é dita incidente
ao0s elementos de um par de vértices que não são neces-
• Harary, Frank (1969). Graph theory (Reading, sariamente distintos[2] . Normalmente as arestas denotam
Mass.: Addison-Wesley Publishing). ISBN 0-201- as relações entre os vértices (vizinhanca, grau, herança,
41033-8. etc..)
• Harary, Frank; Palmer, Edgar M. (1973). Graphi-
cal enumeration New York, Academic Press [S.l.]
ISBN 0-12-324245-2. 2.3.1 Tipos de arestas

2.2.2 Ver também Uma aresta pode ser não-direcionada ou direcionada. No


segundo caso, o par de vértices é ordenado e o vértices
• Teoria dos grafos são chamados vértice-inícial e vértice-final. Arestas com
o mesmo vértice-inicial e o mesmo vértice final ( u, v )
são ditas paralelas[2] .
2.3 Aresta
Em teoria dos grafos, uma aresta junto com os vértices 2.3.2 Relação de adjacência
ou nodos formam as unidades fundamentais das quais os
grafos são formados[1] : um grafo não dirigido consiste de As arestas de um grafo ou digrafo G=(V, E) induzem uma
um conjunto de vértices e um conjunto de arestas (pares relação chamada de relação de adjacência[3] . Portanto um
de vértices não ordenados), enquanto um digrafo é consti- vértice v é adjacente a um vértice w se e somente se v-w
tuído por um conjunto de vértices e um conjunto de arcos é uma aresta que pertence ao conjunto E.
2.6. CLIQUE 17

2.3.3 Referências 2.5.2 Referências


[1] Szwarcfiter, Jayme Luiz (1988). Grafos e algoritmos com- [1] SCHEINERMAN, Edward (2011). Matemática Discreta.
putacionais (Rio de Janeiro: Campus). p. 35-73. ISBN Uma Introdução 2ª ed. (São Paulo: Cengage Learning).
85-7001-341-8. p. 473.

[2] Even, Shimon (1979). Graph Algorithms (Rockville, [2] FURTADO, Antonio Luz (1973). Teoria dos Grafos. Al-
Maryland: Computer Science Press). p. 1. ISBN 0- goritmos (Rio de Janeiro, Guanabara: LTC/Editora da
914894-21-8. USP). p. 6. CDD 511.2076.

[3] BAASE, Sara (1988). Computer Algorithms. Introduc- [3] BOAVENTURA NETTO, Paulo Oswaldo (2001). Gra-
tion to Design and Analysis (em inglês) 2ª ed. (Reading, fos. Teoria, Modelos Algoritmos (São Paulo: Edgard Blü-
Massachusetts: Addison-Wesley). p. 149. ISBN 0-201- cher). p. 24. ISBN 85-212-0292-X.
06035-3.
[4] SZWARCFITER, Jayme Luiz (1988). Grafos e algorit-
mos computacionais (Rio de Janeiro: Campus). ISBN 85-
2.3.4 Ver também 7001-341-8.

Teoria dos grafos


2.6 Clique
2.4 Aresta múltipla Nota: Há uma pagina de Clique (desambiguação)
Na área da matemática da teoria dos grafos, um clique
Aresta múltipla ou aresta paralela são arestas que pos-
suem os mesmos vértices como extremidade.[1]

2.4.1 Referências
[1] «Multiple Edge» (em inglês). Wolfram Alpha. Consul-
tado em 14 de novembro de 2015.

Este artigo sobre matemática é mínimo. Você pode aju-


dar a Wikipédia expandindo-o.

2.5 Ciclos em um grafo


Um ciclo em teoria de grafos é “um passeio de compri- Um grafo com 23 cliques de 1-vértice (seus vértices), 42 cliques
mento mínimo três, em que o primeiro e o último vértice de 2-vértices (suas arestas), 19 cliques de 3-vértices (os triângulos
coincidem, mas nenhum outro vértice é repetido” [1] . Um em azul claro), e 2 cliques de 4-vértices (azul escuro). Seis das
ciclo é uma cadeia simples e fechada[2][3] . Um ciclo é arestas e 11 dos triângulos formam cliques maximais. As duas
uma cadeia fechada[2] . 4-cliques em azul escuro são tanto máximas quanto maximais, e
o número de clique do grafo é 4.
O termo ciclo pode também ser usado para se referir ao
grafo que contém os vértices e arestas de um ciclo na de- em um grafo não-orientado é um subconjunto de seus
finição acima[1] . vértices tais que cada dois vértices do subconjunto são
conectados por uma aresta. Clique é um dos conceitos
mais básicos na teoria dos grafos e são utilizados em vá-
2.5.1 Definição matemática rios problemas matemáticos e construções em grafos. O
Clique vem sendo estudado na ciência da computação: a
Matematicamente: Seja G um grafo. Um ciclo em G é
tarefa de achar se existe um clique de um dado tamanho
um caminho
em um grafo (o problema do clique) é NP-completo, mas
apesar de sua dificuldade, vários algoritmos para encon-
{v1 , v2 , . . ., v , v ₊₁} trar clique foram estudados.
Embora o estudo de subgrafos completos seja da época
sendo da reformulação teórica dos grafos da Teoria de Ramsey
por Erdős & Szekeres (1935),[1] o termo “clique” vem de
v1 = v ₊₁, 3 ≤ k[4] Luce & Perry (1949), que utilizou subgrafos completos
18 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

em redes sociais para modelar cliques de pessoas; ou seja, • A Conjectura de Hadwiger, ainda não provada, re-
grupos de pessoas onde todas se conhecem. O Clique lata o tamanho do maior clique mínimoem um grafo
possui várias outras aplicações na ciênca, principalmente (o seu número de Hadwiger) para seu número cro-
na bioinformática. mático.

• A conjectura de Erdős–Faber–Lovász é outra decla-


2.6.1 Definições ração ainda não provada que relaciona a coloração
de grafos à clique.
Um clique em um grafo não direcionado G = (V, E) é
um subconjunto de vértices C ⊆ V, tal que para cada dois
2.6.3 Ciência da Computação
vértices em C, existe uma aresta os conectando. Isso se
equivale a dizer que um subgrafo induzido de C é com-
pleto (em alguns casos, o termo clique também pode ser Ver artigo principal: Problema do clique
referência ao subgrafo).
Um clique maximal é um clique que não pode ser esten- Na ciência da computação, o problema do clique é um
dido ao se adicionar um ou mais vértices adjacentes, ou problema computacional para achar um clique máximo,
seja, um clique que não existe exclusivamente dentro de ou todos os cliques, em um dado grafo. Ele é NP-
um conjunto de vértices de um clique maior. completo, um dos 21 problemas NP-Completos de Karp
(Karp 1972). Ele também é intratável para parâmetros
Um clique máximo é o maior clique possível em um fixos, e difícil de se aproximar. Não obstante, vários al-
dado grafo. O número do clique ω(G) de um grafo G goritmos para computar cliques foram desenvolvidos, al-
é o número de vértices de um clique máximo em G. O guns executando em tempo exponencial (como o algo-
número da intersecção de G é o menor número de cli- ritmo de Bron–Kerbosch) ou especializado para famílias
ques que, juntos, cobrem todas as arestas de G. de grafos como grafos planares ou grafos perfeitos, onde
O oposto de um clique é um conjunto independente, no o problema pode ser solucionado em tempo polinomial.
sentido de que cada clique corresponde a um conjunto in-
dependente no grafo complementar. O problema da co-
bertura de clique se preocupa em achar o menor número 2.6.4 Aplicações
de clique possível que inclui todos os vértices no grafo.
Um conceito relacionado é um biclique, um subgrafo A palavra “clique”, no seu uso na teoria dos grafos, veio
completo bipartido. A dimensão de bipartição de um do trabalho de Luce & Perry (1949), que utilizou subgra-
grafo é o menor número de bicliques necessários para co- fos completos para modelar cliques (grupos de pessoas
brir todas as arestas do grafo. que se conhecem) em redes sociais. Para trabalhos con-
tínuos de como modelar cliques sociais, veja e.g. Alba
(1973), Peay (1974), e Doreian & Woodard (1994).
2.6.2 Matemática Vários problemas da bioinformática foram modelados
utilizando clique. Na química, Rhodes et al. (2003) uti-
Resultados matemáticos a respeito de cliques incluem os lizou cliques para descrever produtos químicos em um
seguintes. banco de dados que possuía um alto grau de similaridade
com a estrutura alvo. Kuhl, Crippen & Friesen (1983)
• Teorema de Turán (Turán 1941) da um limite infe- utilizou cliques para modelar as posições no qual dois
rior do tamanho de um clique em um grafo denso. produtos químicos vão se associar mutualmente.
Se um grafo tem uma quantidade suficiente de ares-
tas, ele deve conter um clique grande. Por exemplo,
2.6.5 Notas
todo grafo com n vértices e mais que ⌊ n2 ⌋·⌈ n2 ⌉ arestas
tem que conter um clique de 3 vértices(3-clique). [1] O Trabalho de Kuratowski (1930) caracterizando grafos
planares por esquecimento e grafos completos bipartidos
• Teorema de Ramsey (Graham , Rothschild & Spen- foram originalmente citados em topologia ao invés de te-
cer 1990) confirma que todo grafo ou seu grafo com- oria dos grafos.
plementar contém um clique com, ao menos, o nú-
mero logaritmo da quantidade de vértices.
2.6.6 Referências
• De acordo com os resultados de Moon & Moser
(1965), um grafo com 3n vértices pode ter, no má- • Alba, Richard D. (1973), “A graph-theoretic
ximo, 3n cliques maximais. Os grafos que possuem definition of a sociometric clique”, Jour-
essa característica são os grafos de Moon–Moser nal of Mathematical Sociology 3 (1): 113–
K₃,₃,..., um caso especial do grafo de Turán surgindo 126, doi:10.1080/0022250X.1973.9989826,
como um caso extremo no teorema de Turán. http://aris.ss.uci.edu/~{}lin/1.pdf.
2.6. CLIQUE 19

• Barthélemy, J.-P.; Leclerc, B.; Monjardet, B. structure”, Psychometrika 14 (2): 95–116,


(1986), “On the use of ordered sets in pro- doi:10.1007/BF02289146, PMID 18152948.
blems of comparison and consensus of classifica-
tions”, Journal of Classification 3 (2): 187–224, • Moon, J. W.; Moser, L. (1965), “On cli-
doi:10.1007/BF01894188. ques in graphs”, Israel J. Math. 3: 23–28,
doi:10.1007/BF02760024.
• Ben-Dor, Amir; Shamir, Ron; Yakhini, Zohar
(1999), “Clustering gene expression patterns.”, • Paull, M. C.; Unger, S. H. (1959), “Minimi-
Journal of Computational Biology 6 (3–4): 281– zing the number of states in incompletely spe-
297, doi:10.1089/106652799318274, PMID cified sequential switching functions”, IRE Trans.
10582567. on Electronic Computers EC-8 (3): 356–367,
doi:10.1109/TEC.1959.5222697.
• J., Cong; M., Smith (1993), “A parallel bottom-up
clustering algorithm with applications to circuit par- • Peay, Edmund R. (1974), “Hierarchical cli-
titioning in VLSI design”, Proc. 30th Internatio- que structures”, Sociometry 37 (1): 54–65,
nal Design Automation Conference, pp. 755–760, doi:10.2307/2786466.
doi:10.1145/157485.165119.
• Prihar, Z. (1956), “Topological proper-
• Day, William H. E.; Sankoff, David (1986), “Com- ties of telecommunications networks”,
putational complexity of inferring phylogenies by Proceedings of the IRE 44 (7): 927–933,
compatibility”, Systematic Zoology 35 (2): 224–229, doi:10.1109/JRPROC.1956.275149.
doi:10.2307/2413432.
• Rhodes, Nicholas; Willett, Peter; Calvet, Alain;
• Doreian, Patrick; Woodard, Katherine L. (1994), Dunbar, James B.; Humblet, Christine (2003),
“Defining and locating cores and boundaries of so- “CLIP: similarity searching of 3D databases using
cial networks”, Social Networks 16 (4): 267–293, clique detection”, Journal of Chemical Informa-
doi:10.1016/0378-8733(94)90013-2. tion and Computer Sciences 43 (2): 443–448,
doi:10.1021/ci025605o, PMID 12653507.
• Erdős, Paul; Szekeres, George (1935),
“A combinatorial problem in geome- • Samudrala, Ram; Moult, John (1998), “A graph-
try”, Compositio Math. 2: 463–470, theoretic algorithm for comparative modeling of
http://www.renyi.hu/~{}p_erdos/1935-01.pdf. protein structure”, Journal of Molecular Biology 279
(1): 287–302, doi:10.1006/jmbi.1998.1689, PMID
• Graham, R.; Rothschild, B.; Spencer, J. H. (1990), 9636717.
Ramsey Theory, New York: John Wiley and Sons,
ISBN 0-471-50046-1. • Spirin, Victor; Mirny, Leonid A. (2003), “Protein
complexes and functional modules in mole-
• Hamzaoglu, I.; Patel, J. H. (1998), “Test set cular networks”, Proceedings of the National
compaction algorithms for combinational circuits”, Academy of Sciences 100 (21): 12123–12128,
Proc. 1998 IEEE/ACM International Confe- doi:10.1073/pnas.2032324100, PMID 14517352.
rence on Computer-Aided Design, pp. 283–289,
doi:10.1145/288548.288615. • Sugihara, George (1984), “Graph theory, homology
and food webs”, in Levin, Simon A., Population Bi-
• Karp, Richard M. (1972), “Reducibility among ology, Proc. Symp. Appl. Math., 30, pp. 83–101.
combinatorial problems”, in Miller, R. E.; That-
cher, J. W., Complexity of Computer Computations, • Tanay, Amos; Sharan, Roded; Shamir, Ron
New York: Plenum, pp. 85–103, http://www.cs. (2002), “Discovering statistically signifi-
berkeley.edu/~{}luca/cs172/karp.pdf. cant biclusters in gene expression data”, Bi-
oinformatics 18 (Suppl. 1): S136–S144,
• Kuhl, F. S.; Crippen, G. M.; Friesen, D. K. (1983), doi:10.1093/bioinformatics/18.suppl_1.S136,
“A combinatorial algorithm for calculating ligand PMID 12169541.
binding”, Journal of Computational Chemistry 5 (1):
24–34, doi:10.1002/jcc.540050105. • Turán, Paul (1941), “On an extremal problem in
graph theory” (em Hungarian), Matematikai és Fi-
• Kuratowski, Kazimierz (1930), “Sur le pro- zikai Lapok 48: 436–452
bléme des courbes gauches en Topologie” (em
French), Fundamenta Mathematicae 15: 271–
283, http://matwbn.icm.edu.pl/ksiazki/fm/fm15/ 2.6.7 Links Externos
fm15126.pdf.
• Eric W. Weisstein, Clique em MathWorld
• Luce, R. Duncan; Perry, Albert D. (1949),
“A method of matrix analysis of group • Eric W. Weisstein, Clique Number em MathWorld
20 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

2.6.8 Ver também


• Grafo completo

2.6.9 Referências

2.7 O grau de um grafo

Dois grafos não isomorfos com a mesma seqüência de graus (3,


2, 2, 2, 2, 1, 1, 1).

Um grafo com vértices rotulados por grau


para o grafo acima, é (3, 3, 3, 2, 2, 1, 0). A seqüência
Na teoria dos grafos, o grau (ou valência) de um vértice de grau é uma invariante do grafo, logo grafos isomor-
de um grafo é o número de arestas incidentes para com fos têm a mesma sequência. No entanto, a sequência de
o vértice, com os laços contados duas vezes. [1][2] Ou de grau, em geral, não identifica unicamente um grafo; em
forma análoga, o número de vértices adjacentes a ele.[3] O alguns casos, os grafos não isomorfos têm o mesmo grau
grau de um vértice v é denotado deg(v). O grau máximo de sequência.
de um grafo G, denotado por Δ(G), e o grau mínimo de
O problema da sequência de graus, é o problema de en-
um grafo, denotado por δ(G), são os graus máximos e
contrar alguns ou todos os grafos com a seqüência de grau
mínimos de seus vértices. No grafo à direita, o grau má-
sendo uma dada sequência não crescente de números in-
ximo é 3 e o mínimo é 0. Em um grafo regular, todos os
teiros positivos. Zeros finais podem ser ignorados, uma
graus são os mesmos, e assim podemos falar de o grau do
vez que são trivialmente efetuados pela adição de um nú-
grafo [sic?].
mero adequado de vértices isolados do grafo.
O problema de encontrar ou estimar o número de grafos
2.7.1 Lema do aperto de mãos com uma seqüência de determinado grau é um problema
do campo da enumeração de grafos.
A fórmula da soma dos graus afirma que, dado um
Como consequência da fórmula da soma de graus, toda a
grafo G = (V, E) ,
sequência com uma soma ímpar, como (3, 3, 1), não pode
ser entendida como a sequência de grau de um grafo. O
∑ inverso também é verdadeiro: se uma seqüência tem uma
deg(v) = 2|E| . soma par, é a seqüência de grau de um grafo. A constru-
v∈V
ção de um grafo como este é simples: conecte vértices
A fórmula implica que em qualquer grafo, o número de ímpares em pares, e preencha com laços (auto-loops).
vértices de grau ímpar é par. Esta afirmação (bem como Frequentemente, se deseja procurar por grafos simples,
a fórmula de soma grau) é conhecida como o Lema do tornando o problema da seqüência de graus mais desafi-
aperto de mãos (em inglês, handshaking lemma). O úl- ador. Obviamente, a sequência (8, 4) não é a seqüência
timo nome vem de um problema matemático popular, de grau de um grafo simples, pois teríamos a contradição
para provar que, em qualquer grupo de pessoas o número Δ(G) > ((número de vértices;− 1). A sequência (3, 3, 3,
de pessoas que apertam as mãos com um número ímpar 1) também não é a sequência de grau de um grafo sim-
de outras pessoas do grupo é par. ples, mas neste caso o motivo é menos óbvio. Encontrar
os critérios gerais de seqüências de grau de grafos simples
é um problema clássico; soluções têm sido oferecidas por
2.7.2 Sequência de graus
Erdős e Gallai (1960), V. J. Havel (1955) e S. L. Hakimi
A sequência de grau de um grafo não direcionado é a (1961) e S. A. Choudum.
sequência não crescente dos seus graus de vértices; [1] Por exemplo, o Teorema de Erdös-Gallai afirma que a
2.8. GRAFO BIPARTIDO 21

seqüência (di)i₌₁,...,n sendo di ≥di+1 é uma sequência de grau ímpar. Se tem 0 vértices de grau ímpar, o
de grau de um grafo simples sse, a soma da sequência é caminho Euleriano é um circuito Euleriano.
par e
• Um grafo direcionado é uma pseudofloresta se e so-
mente se se cada vértice tem um grau de saída no
máximo 1. Um grafo funcional é um caso especial

k ∑
n
di ≤ k(k−1)+ min(di , k) fork ∈ {1, . . . , n}. de um pseudofloresta em que cada vértice tem exa-
i=1 i=k+1 tamente um grau de saída 1.

Havel e Hakimi provaram que (d 1 , d2 , ..., dn) é uma • Pelo Teorema de Brooks, qualquer grafo que não
seqüência de grau de um grafo simples sse (d2 − 1, d3 seja um clique ou um ciclo ímpar tem um número
− 1, ..., dd 1 ₊₁ − 1, dd 1 ₊₂, dd 1 ₊₃, ..., dn) é. Este fato leva cromático, de no máximo Δ, e pelo Teorema de Vi-
a um algoritmo simples (o algoritmo Havel-Hakimi) para zing, um grafo tem um índice cromático de no má-
a realização de um grafo simples, com uma seqüência de ximo Δ + 1.
determinado grau de realização: Comece com um grafo
sem bordas. Mantenha uma lista de vértices cujo grau
2.7.5 Referências
de exigência não tenha ainda sido atingido em ordem não
crescente de exigência de grau residual. Conecte o pri- [1] Diestel (2005). Graph Theory 3ª ed. (Berlin, New York:
meiro vértice com os próximos d1 vértices na lista, e de- Springer-Verlag). ISBN 978-3-540-26183-4. Parâmetro
pois remova-o da lista. Reordene a lista e repita até que desconhecido |Nome= ignorado (|nome=) (Ajuda).
todas as exigências do grau estejam cumpridas.
[2] Even, Shimon (1979). Graph Algorithms (Rockville,
Maryland: Computer Science Press). p. 249. ISBN 0-
914894-21-8.
2.7.3 Valores especiais
[3] Szwarcfiter, Jayme Luiz (1988). Grafos e algoritmos com-
putacionais (Rio de Janeiro: Campus). ISBN 85-7001-
341-8.

2.8 Grafo bipartido

U V

Um grafo não direcionado com nodos-folha 4, 5, 6, 7, 10, 11, e


12

• Um vértice com grau 0 é chamado de vértice isolado.

• Um vértice com grau 1 é chamado de vértice folha e


a aresta conectada a este vértice é chamada de aresta
pendente. No grafo à direita, {3,5} é uma aresta
pendente. Esta terminologia é comum no estudo de
árvores em teoria dos grafos e em especial árvores
como estrutura de dados.
Exemplo de um grafo bipartido
2.7.4 Propriedades globais
No campo da matemática da teoria dos grafos, um grafo
• Se cada vértice do grafo tem o mesmo grau k o grafo bipartido ou bigrafo é um grafo cujos vértices podem
é chamado de um grafo k-regular e o próprio grafo ser divididos em dois conjuntos disjuntos U e V tais que
é dito ter grau k. toda aresta conecta um vértice em U a um vértice em V;[1]
ou seja, U e V são conjuntos independentes. Equivalen-
• Um grafo conexo, não direcionado, tem um caminho temente, um grafo bipartido é um grafo que não contém
euleriano se e somente se ele tem 0 ou 2 vértices qualquer ciclo de comprimento ímpar
22 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

Os dois conjuntos U e V podem ser pensados como uma 2.8.3 Aplicações


coloração do grafo com duas cores: se nós colorirmos
todos os nodos em U de azul, e todos os nodos em V de
verde, cada aresta tem terminações de cores diferentes, Grafos bipartidos são úteis para a modelagem de proble-
como é exigido no problema de coloração de grafos. Em mas de acoplamento. Um exemplo de grafo bipartido é
contrapartida, tal coloração é impossível no caso de um um problema de correspondência de empregos. Suponha
grafo que não é bipartido, como um triângulo: depois de que temos um conjunto P de pessoas e um conjunto J de
postos de trabalho, com nem todas as pessoas adequadas
um nó ser colorido de cor azul e outro de verde, o terceiro
para todos os trabalhos. Podemos modelar isto como um
vértice do triângulo é ligado a vértices de ambas as cores,
impedindo que seja atribuída qualquer cor. grafo bipartido (P, J, E). Se uma pessoa px é adequada
para um determinado trabalho jy existe uma aresta en-
Frequentemente se escreve G = (U, V, E) para denotar tre px e jy no grafo. O teorema do casamento fornece
um grafo bipartido cuja partição tem as partes U e V. uma caracterização de grafos bipartidos que permitem
Se |U| =|V|, ou seja, se os dois subconjuntos tem igual acoplamentos perfeitos.
cardinalidade, então G é chamado um grafo bipartido ba-
lanceado. Grafos bipartidos são usados extensivamente na mo-
derna teoria dos códigos, especialmente para decodificar
palavras de código recebidas do canal. Grafos Fator e
2.8.1 Exemplos grafos Tanner são exemplos disso.
Em ciência da computação, uma rede de Petri é uma fer-
• Qualquer grafo sem ciclos ímpares é bipartido. ramenta de modelagem matemática utilizada na análise e
Como consequência disso: simulação de sistemas concorrentes. Um sistema é mode-
• Toda árvore é bipartida. lado como um grafo bipartido dirigido com dois conjun-
tos de nós: Um conjunto de nodos “lugar” que contêm re-
• grafos ciclo com um número par de vértices cursos, e um conjunto de nodos “evento” que geram e/ou
são bipartidos. consomem recursos. Existem restrições adicionais sobre
• Qualquer grafo planar onde todas as faces em os nós e arestas que condicionam o comportamento do
sua representação planar consistem de um nú- sistema. Redes de Petri utilizam as propriedades de gra-
mero par de arestas é bipartido. Casos especi- fos bipartidos dirigidos e outras propriedades para per-
ais destes são grafos grelha e grafos quadrado, mitir provas matemáticas do comportamento dos siste-
em que cada face interna é composta por 4 mas enquanto ao mesmo tempo, permitindo a fácil im-
arestas. plementação de simulações do sistema.
Em geometria projetiva, grafos de Levi são uma forma de
grafo bipartido usada para modelar as incidências entre os
2.8.2 Testando biparticidade
pontos e linhas em uma configuração.

1 4
2
3 4
0
2.8.4 Modelagem de multigrafos e hiper-
grafos
1 4 5
Grafos bipartidos podem modelar inteiramente o mais
Encontrando uma bipartição usando paridade geral multigrafo. Dada um multigrafo M, tome U como
o conjunto de vértices de M e tome V como o conjunto
Se um grafo bipartido é conexo, a sua bipartição pode ser de arestas de M. Então junte-se um elemento de V para
definida pela paridade das distâncias de qualquer vértice precisamente os dois elementos de U que são as extremi-
escolhido arbitrariamente v: um subconjunto consiste dos dades da aresta em M. Assim, cada multigrafo é descrito
vértices a uma distância par de v e o outro subconjunto completamente por um grafo bipartido, que é unilateral
consiste dos vértices a uma distância ímpar de v. regular de grau 2, e vice-versa.
Assim, pode-se testar eficientemente se um grafo é bipar- Da mesma forma, cada hipergrafo direcionado pode ser
tido, usando esta técnica de paridade de se atribuir vér- representado por um grafo bipartido. Tome U como o
tices para os dois subconjuntos U e V, separadamente a conjunto de vértices no hipergrafo, e V como conjunto
cada componente conectado do grafo e, em seguida, exa- de arestas. para cada u ∈ U e v ∈ V , conecte u a v se a
minar cada aresta para verificar se ela tem terminações aresta do hipergrafo contém u como entrada, e conecte v
designadas para os diferentes subgrupos. a u se v contém u como saída.
2.9. GRAFO BIPARTIDO COMPLETO 23

2.8.5 Propriedades 2.9.1 Definição


• Um grafo é bipartido se e somente se ele não contém Um grafo bipartido completo, G := (V 1 + V 2 , E), é um
um ciclo ímpar. Portanto, um grafo bipartido não grafo bipartido tal que para quaisquer dois vértices, v1 ∈
pode conter uma clique de tamanho maior ou igual V 1 e v2 ∈ V 2 , v1 v2 é uma aresta em G. O grafo bipartido
a 3. completo com partições de tamanho |V 1 |=m e |V 2 |=n, é
denotado K , .
• Um grafo é bipartido se e somente se ele é 2-
colorível, (i.e. seu número cromático é menor ou
igual a 2). 2.9.2 Exemplos
• O tamanho da cobertura de vértices mínima é igual
ao tamanho do acoplamento máximo (teorema de
König).

• O tamanho do conjunto independente máximo mais


o tamanho do acoplamento máximo é igual ao nú-
mero de vértices. Os grafos estrela S3 , S4 , S5 e S6 .
• Para um grafo bipartido conectado o tamanho da
cobertura de arestas mínima é igual ao tamanho do
conjunto independente máximo.

• Para um grafo bipartido conectado o tamanho da co-


bertura de arestas mínima mais o tamanho da cober-
tura de vértices mínima é igual ao número de vérti-
ces.

• Todo grafo bipartido é um grafo perfeito.

• O espectro de um grafo é simétrico se e somente se


ele é um grafo bipartido.

2.8.6 Ver também


• Grafo bipartido completo
O grafo de utilidade K3,3

2.8.7 Referências • Para qualquer k, K₁,k é chamado uma estrela. Todos


os grafos bipartidos completos que são árvores são
[1] SZWARCFITER, Jayme Luiz (1988). Grafos e algorit-
estrelas.
mos computacionais (Rio de Janeiro: Campus). ISBN 85-
7001-341-8. • O grafo K₁,₃ é chamado uma garra, e é usado para
definir os grafos sem garra.

2.8.8 Ligações externas • O grafo K₃,₃ é chamado de grafo de utilidade. Esta


prática vem de um quebra-cabeça matemático tra-
• Sistema de informações sobre inclusões de classes dicional, no qual três utilidades devem ser ligadas
de grafos a cada três edifícios; é impossível de resolver sem
cruzamentos, devido à não-planaridade de K₃,₃.
grafo bipartido
2.9.3 Propriedades

2.9 Grafo bipartido completo • Dado um grafo bipartido completo, ele possui dois
autovalores simétricos (o índice e o seu simétrico) e
os demais nulos.[1]
No campo da matemática da teoria dos grafos, um grafo
bipartido completo ou biclique é um tipo especial de • Dado um grafo bipartido, encontrar o seu subgrafo
grafo bipartido onde cada vértice do primeiro conjunto bipartido completo Km,n com o número máximo de
está associado a cada vértice do segundo conjunto. arestas mn é um problema NP-completo.
24 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

• Um grafo planar não pode conter K₃,₃ como um 2.10 Grafo caminho
menor; um grafo periplanar não pode conter K₃,₂
como um menor (Estas não são condições suficien- No campo da matemática da teoria dos grafos, um grafo
tes de planaridade e planaridade exterior, mas ne- caminho ou grafo linear é um exemplo particularmente
cessárias). simples de uma árvore, ou seja, uma árvore com dois
ou mais vértices que não tem ramificações, ou seja, con-
• Um grafo bipartido completo Kn,n é um grafo de
tém somente vértices de grau 2 e 1.[1] Em particular, ela
Moore e uma (n,4)-gaiola.
tem dois vértices terminais (vértices que têm grau 1), en-
• Um grafo bipartido completo Kn,n ou K , ₊₁ é um quanto todos os outros (se houver) têm grau 2.
grafo de Turán.

• Um grafo bipartido completo Km,n tem um número 2.10.1 Ver também


de cobertura de vértice do min{m,n} e um número
de cobertura de aresta de max{m,n}. • Caminho (teoria dos grafos)

• Um grafo bipartido completo Km,n tem um • Grafo ciclo


conjunto independente máximo de tamanho
max{m,n}. • Grafo completo

• A matriz de adjacência de um grafo bipartido com- • Grafo nulo


pleto Km,n tem autovalores √(nm), −√(nm) e 0; com
multiplicidade 1, 1 e n+m−2 respectivamente.
2.10.2 Referências
• A matriz laplaciana de um grafo bipartido completo
Km,n tem autovalores n+m, n, m, e 0; com multipli- [1] CERIOLI, Marcia R.; POSNER, Daniel F. D. «L(2, 1)-
cidade 1, m−1, n−1 e 1 respectivamente. colorações: algoritmos e limites superiores em classes de
grafos» (PDF). p. 26. Consultado em 2010-10-25.
• Um grafo bipartido completo Km,n tem mn−1 nm−1
árvores de extensão.
2.10.3 Ligações externas
• Um grafo bipartido completo Km,n tem um
acoplamento máximo de tamanho min{m,n}. • Eric W. Weisstein, Path Graph em MathWorld

• Um grafo bipartido completo Kn,n tem uma n-


coloração-de-arestas correspondente ao quadrado
latino.
2.11 Grafo completo
• Os dois últimos resultados são corolários do teorema Um grafo completo é um grafo simples em que todo
do casamento aplicado a um grafo bipartido k- vértice é adjacente a todos os outros vértices. O grafo
regular. completo de n vértices é frequentemente denotado por
Kn .

2.9.4 Ver também


2.11.1 Número de arestas
• Grafo ciclo
( )
O grafo Kn tem n2 = n(n−1) arestas (correspondendo
• Grafo caminho 2
a todas as possíveis escolhas de pares de vértices).
• Grafo coroa

• Grafo completo 2.11.2 Planaridade


• Grafo nulo O teorema de Kuratowski tem como consequência que
um grafo Kn é grafo planar se e somente se n ≤ 4 .
• Matriz de adjacência

2.11.3 Ver também


2.9.5 Referências
• Grafo bipartido completo
[1] BOAVENTURA NETTO, Paulo Oswaldo (2001). Gra-
fos. Teoria, Modelos Algoritmos (São Paulo: Edgard Blü-
cher). p. 263. ISBN 85-212-0292-X.
2.12. GRAFO CÚBICO 25

2.12 Grafo cúbico

O grafo Frucht, o menor grafo cúbico assimétrico.

Biggs-Smith.
O grafo de Petersen é um grafo cúbico.
W. T. Tutte classificou os grafos simétricos cúbicos pelo
menor número inteiro s tal que cada dois caminhos ori-
entados de comprimento s podem ser mapeados entre si
por exatamente uma simetria do grafo. Ele mostrou que s
é no máximo 5, e deu exemplos de grafos com cada valor
possível de s de 1 a 5[3] .
Grafoos cúbicos semi-simétrico incluem o grafo de Gray
( o menor grafo cúbico semi-simétrico), o grafo de Lju-
bljana, e o gaiola-12 de Tutte.
O grafo de Frucht é o menor grafo cúbico sem qualquer
simetria: possui apenas um único automorfismo de gra-
fos, o automorfismo identidade.

2.12.2 Coloração e conjuntos independen-


tes

O grafo bipartido completo K3,3 é um exemplo de grafo bicúbico De acordo com o teorema de Brooks todo grafo cúbico
com exceção do grafo completo K 4 pode ser colorido
com no máximo três cores. Portanto, todo grafo cúbico
No campo da matemática da teoria dos grafos, um grafo
diferente de K₄ tem um conjunto independente de pelo
cúbico é um grafo regular no qual todos os vértices tem
menos n/3 vértices, onde n é o número de vértices no
grau três[1] . Em outras palavras um grafo cúbico é um
grafo: por exemplo, a maior classe de cor em uma 3-
grafo 3-regular. Grafos cúbicos são também chamados
coloração tem pelo menos estes vértices.
grafos trivalentes.
De acordo com o teorema de Vizing todo grafo cúbico ne-
Um grafo bicúbico é um grafo bipartido cúbico.
cessita três ou quatro cores para uma coloração de arestas.
Uma 3-aresta-coloração é conhecida como uma colora-
ção Tait, e fgorma uma partição das arestas do grafo em
2.12.1 Simetria
três acoplamentos perfeitos. Pelo teorema de coloração
Em 1932, Ronald M. Foster começou a recolher exem- de linhas de König todo grafo bicúbico tem uma colora-
plos de grafos simétricos cúbicos, formando o início do ção de Tait.
censo de Foster[2] . Muitos grafos individuais conhecidos Os grafos cúbicos sem ponte que não tem uma colora-
são cúbicos e simétricos, incluindo o grafo de Petersen, ção de Tait são conhecidos como snarks. Eles incluem
o grafo de Nauru, o grafo de Coxeter, o grafo de Tutte– o grafo de Petersen, grafo de Tietze, os snarks Blanuša,
Coxeter, o grafo de Dyck, o grafo de Foster e o grafo de o snark flor, o snark dupla-estrela, o snark Szekeres e o
26 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

snark Watkins. 2.12.6 História


[4]
Existe um número infinito de snarks distintos.
• 1880: Peter Guthrie Tait conjeturou que cada grafo
sem pontes cúbico planar tem um circuito hamilto-
niano. William Thomas Tutte encontrou um contra-
2.12.3 Hamiltonicidade exemplo: un grafo de 46 vértices (agora com o seu
nome) em 1946.
Houve muita pesquisa sobre Hamiltonicidade de gra-
fos cúbicos. Em 1880, P.G. Tait conjecturou que todo • 1934: Ronald M. Foster começou a colecionar
grafos poliédricos cúbicos tem um circuito Hamiltoni- exemplos de grafos simétricos cúbicos, com o que
ano. William Thomas Tutte forneceu um contra-exemplo iria iniciar o Censo de Foster.[12]
para a conjectura de Tait, o grafo de Tutte de 46 vértices,
em 1946. Em 1971, Tutte conjecturou que todos os gra- • 1971: William Tutte conjetura que todos os gra-
fos bicúbicos são hamiltonianos. No entanto, José Hor- fos bicúbicos são ciclos hamiltonianos. Entretanto,
ton proporcionou um contra-exemplo com 96 vértices, o Horton proporciona un grafo de contra-exemplo,
grafo de Horton[5] . Mais tarde Mark Ellingham, cons- com 96-vértices.
truíu mais dois contra-exemplos: os grafos de Ellingham-
Horton[6][7] . A conjectura de Barnette, uma combinação • 2003: Petr Hliněný mostra que o problema de en-
de conjecturas de Tait e Tutte ainda aberta, afirma que contrar o número de cruzamento (o número mínimo
todo grafo bicúbico poliédrico é hamiltoniano. Quando de arestas que cruzam um dado grafo) de um grafo
um grafo cúbico é hamiltoniano, a notação LCF permite cúbico é NP-hard, apesar de terem um grau pe-
que ele seja representada de forma concisa. queno. Existem, não obstante, algoritmos de apro-
Se um grafo cúbico é escolhido aleatoriamente entre to- ximacão práticos para encontrar o número de cru-
dos os grafos cúbicos de n-vértices, então é bem provável zamento de grafos cúbicos[13] .
que seja Hamiltoniano. a proporção de grafos cúbicos de
n-vértices que são Hamiltonianos tende a um no limite a
medida que n vai para o infinito[8] . 2.12.7 Referências
David Eppstein conjecturou que todo grafo cúbico de n- [1] BOAVENTURA NETTO, Paulo Oswaldo (2001). Gra-
vértices tem no máximo 2n/3 (aproximadamente 1260n ) fos. Teoria, Modelos Algoritmos (São Paulo: Edgard Blü-
ciclos hamiltonianos distintos, e exemplificou com gra- cher). p. 20. ISBN 85-212-0292-X.
fos cúbicos com esta quantidade de ciclos[9] . O melhor
[2] Foster, R. M. “Geometrical Circuits of Electrical
limite superior que foi até agora comprovado no número
Networks.” Transactions of the American Institute of Elec-
de ciclos hamiltonianos distintos é 1,276n .[10] trical Engineers 51, 309-317, 1932

[3] TUTTE, W. T.. (1959). "On the symmetry of cubic


graphs". Canad. J. Math 11: 621–624..
2.12.4 Outras propriedades
[4] ISAACS, R.. (1975). "Infinite families of non-
trivial trivalent graphs which are not Tait colorable".
O comprimento do caminho de quaisquer grafo cúbico de American Mathematical Monthly 82 (3): 221–239.
n-vértices é no máximo n/6. No entanto, o limite inferior DOI:10.2307/2319844..
melhor conhecido no comprimento do caminho de grafos
cúbicos é menor, 0.082n.[11] [5] Bondy, J. A. and Murty, U. S. R. Graph Theory with Ap-
plications. New York: North Holland, p. 240, 1976.
Se segue do lema do aperto de mãos, provado por
Leonhard Euler em 1736 como parte do primeiro traba- [6] Ellingham, M. N. “Non-Hamiltonian 3-Connected Cubic
lho sobre teoria dos grafos, que todo grafo cúbico tem um Partite Graphs."Research Report No. 28, Dept. of Math.,
número par de vértices. Univ. Melbourne, Melbourne, 1981.

[7] Ellingham, M. N. and Horton, J. D. “Non-Hamiltonian 3-


Connected Cubic Bipartite Graphs.” J. Combin. Th. Ser.
B 34, 350-353, 1983.
2.12.5 Algoritmos e complexidade
[8] Robinson, R.W.; Wormald, N.C.. (1994). “Al-
Vários pesquisadores têm estudado a complexidade de most all regular graphs are Hamiltonian”. Ran-
tempo exponencial de algoritmos restritos a grafos cúbi- dom Structures and Algorithms 5 (2) p. 363–374.
DOI:10.1002/rsa.3240050209..
cos. Por exemplo, através da aplicação de programação
dinâmica para a decomposição do caminho do grafo, Fo- [9] Eppstein, David (2007). "The traveling salesman problem
min e Høie mostraram como encontrar os seus conjuntos for cubic graphs". Journal of Graph Algorithms and Ap-
independentes máximos em tempo O(nn/6 + o(n) ).[11] plications 11 (1) p. 61–81. Arxiv.
2.13. GRAFO ESTRELA 27

[10] Gebauer, H. (2008). «On the number of Hamilton cycles


in bounded degree graphs» (PDF). Proce. 4th Workshop
on Analytic Algorithmics and Combinatorics (ANALCO
'08)..

[11] Fomin, Fedor V.; Høie, Kjartan (2006), “Pathwidth of cu-


bic graphs and exact algorithms”, Information Processing Os grafos estrela S3 , S4 , S5 e S6 .
Letters 97 (5): 191–196, doi:10.1016/j.ipl.2005.10.012.

[12] «O censo de Foster». Consultado em 2010-11-13. pode ser incorporado isometricamente em um espaço eu-
[13] Petr Hliněný (2003). «Crossing Number Is Hard for Cu- clideano de qualquer dimensão[9] .
bic Graphs» (PDF). MFCS 2004. pp. 772–782. A rede em estrela, uma rede de computadores modelado
em um grafo de estrela, é importante em computação dis-
tribuída.
2.13 Grafo Estrela
Em teoria dos grafos, uma estrela S é o grafo bipartido 2.13.3 Referências
completo K₁,k, uma árvore com um nó interno e k folhas.
Uma estrela com 3 arestas é chamada uma garra[1] . [1] BOAVENTURA NETTO, Paulo Oswaldo (2001). Gra-
fos. Teoria, Modelos Algoritmos (São Paulo: Edgard Blü-
A estrela S é aresta-elegante quando k é par e não quando cher). p. 27. ISBN 85-212-0292-X.
k é ímpar. Ela é aresta-transitiva, unidade-distância e têm
diâmtero 2, cintura ∞, índice cromático k e número cro- [2] FAUDREE, Ralph; FLANDRIN, Evelyne; RYJÁčEK,
mático 2. Zdeněk. (1997). “Claw-free graphs — A sur-
vey”. Discrete Mathematics 164 (1–3): 87–147.
Estrelas também podem ser descritas como os únicos gra- DOI:10.1016/S0012-365X(96)00045-3..
fos conectados em que no máximo um vértice tem grau
maior que um. [3] Chudnovsky, Maria; Seymour, Paul (2005), “The
structure of claw-free graphs”, Surveys in combina-
torics 2005, London Math. Soc. Lecture Note
2.13.1 Relação com outras famílias de gra- Ser., 327, Cambridge: Cambridge Univ. Press, pp.
fos 153–171, http://publications.ias.edu/files/2005/02/u:4_
p:180____claws_survey.pdf.
Garras são notáveis na definição de grafos sem garra, os
grafos que não tem qualquer garra como subgrafo indu- [4] Gottlieb, J.; Julstrom, B. A.; Rothlauf, F.; Raidl, G.
R. (2001), “Prüfer numbers: A poor representation of
zido[2][3] .
spanning trees for evolutionary search”, Proc. Gene-
Uma estrela é um tipo especial de árvore. Como acontece tic and Evolutionary Computation Conference, Morgan
com qualquer árvore, as estrelas podem ser codificados Kaufmann, pp. 343–350, http://www.ads.tuwien.ac.at/
por uma sequência Prüfer; A sequência Prüfer para uma publications/bib/pdf/gottlieb-01.pdf
estrela K₁,k consiste de k − 1 cópias do vértice central[4] .
Uma árvore pode ser vista como um conjunto de estrelas [5] BARBOSA, Ruy Madsen (1975). Combinatória e Gra-
(pares ou ímpares) ligadas pelos pontos centrais[5] . fos 2 (São Paulo: Livraria Nobel). p. 196. Parâmetro
desconhecido |volumes= ignorado (|volume=) (Ajuda)
Diversos grafos invariantes são definidos em termos de
estrelas. Arboricidade de estrela é o menor número de [6] Hakimi, S. L.; Mitchem, J.; Schmeichel, E. E. (1996),
florestas que um grafo pode ser particionado em tal modo “Star arboricity of graphs”, Discrete Math. 149: 93–98,
que cada árvore em cada floresta é uma estrela[6] , e o doi:10.1016/0012-365X(94)00313-8
número cromático de estrela de um grafo é o menor nú-
mero de cores necessário para colorir seus vértices de tal [7] FERTIN, Guillaume; RASPAUD, André; REED, Bruce.
forma que cada duas classes de coloração, juntas, formam (2004). “Star coloring of graphs”. Journal of Graph The-
ory 47. DOI:10.1002/jgt.20029.
um subgrafo em que todos os componentes conectados
são estrelas[7] . Os grafos de comprimento de ramo 1 são
[8] ROBERTSON, Neil; SEYMOUR, Paul D.. (1991).
exatamente os grafos em que cada componente conectado “Graph minors. X. Obstructions to tree-decomposition”.
é uma estrela[8] . Journal of Combinatorial Theory 52 (2): 153–190.
DOI:10.1016/0095-8956(91)90061-N.

2.13.2 Outras aplicações [9] Linial, Nathan (2002), “Finite metric spaces–
combinatorics, geometry and algorithms”, Proc.
O conjunto de distâncias entre os vértices de uma garra International Congress of Mathematicians, Beijing, 3, pp.
fornece um exemplo de um espaço métrico finito, que não 573–586, Arxiv
28 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

2.14 Grafo nulo • Um conjunto V, cujos elementos são chamados vér-


tices ou nodos,
No campo da matemática da teoria dos grafos, o grafo • um conjunto A de pares ordenados de vértices, cha-
nulo ou o grafo vazio ou é o grafo sem nenhum vértice mados arcos, arestas direcionadas, ou setas (e às
e (portanto) sem arestas, ou qualquer grafo sem arestas. vezes simplesmente arestas com o conjunto corres-
O grafo nulo (no sentido original) é o objeto inicial na pondente chamado E ao invés de A).
categoria de grafos, de acordo com algumas definições de
categoria de grafos. Não tendo nenhum vértice, o grafo Ele difere de um grafo não-direcionado comum, em que
nulo, portanto, também não tem componentes ligados. o último é definido em termos de pares não ordenados de
Assim, embora o grafo nulo seja uma floresta (um grafo vértices, que são normalmente chamados arestas.
sem ciclos), não é uma árvore, uma vez que as árvores Por exemplo, ser possível ir de um nó A para um nó B,
têm componente ligados. mas não o contrário através desse arco.
Às vezes, um digrafo é chamado de um digrafo sim-
ples para distinguí-lo de um multigrafo direcionado (ou
2.14.1 Grafo sem arestas
multidigrafo ou ainda quiver), em que os arcos consti-
tuem um multiconjunto, ao invés de um conjunto, de pa-
Alguns autores entendem que um termo melhor para o úl-
res ordenados de vértices. Além disso, em um digrafo
timo sentido (V, { }) para qualquer conjunto V é o mais
simples laços não são permitidos. Por outro lado, alguns
explícito grafo sem arestas. Assim se reserva o termo
textos permitem laços, arcos múltiplos, ou ambos em um
grafo nulo para o primeiro sentido: um grafo sem quais-
digrafo.
quer vértices. Outros, ainda, fazem essa distinção, apli-
cando o rótulo vazio para esses grafos sem arestas.
O grafo sem arestas de n-vértices é o grafo complemen- 2.15.1 Terminologia básica
tar para o grafo completo Kn , e por isso é comumente
denotado como K̄n . Um arco e = (x, y) é considerado ser direcionado de x
para y; y é chamado de cabeça e x é chamado de cauda
Mesmo que esta definição forneca uma base sólida para a do arco; y é dito ser um sucessor direto de x, e x é dito
definição de certas operações sobre grafos (por exemplo: ser um predecessor direto de y. Se um caminho com-
decomposição) considerando-se grafos como conjuntos posto por um ou mais arcos sucessivos leva de x para y,
de vértices e arestas (V,E), esta definição levanta um pro- então y é dito ser um successor de x, e x é dito ser um
blema na singularidade do elemento nulo dos grafos. predecessor de y. O arco (y, x) é chamado de arco (x, y)
invertido.
Um grafo direcionado G é chamado de simétrico se, para
2.15 Grafo orientado cada arco, que pertence à G, o arco invertido correspon-
dente também pertence à G. Um grafo dirigido simétrico
sem laços é equivalente a um grafo não orientado com
os pares de arcos invertidos substituído por arestas, as-
sim o número de arestas é igual ao número de arcos pela
metade.
A orientação de um grafo grafo não-direcionado simples
é obtida através da atribuição de um sentido para cada
lado. Qualquer grafo direcionado construído desta forma
é chamado de um grafo orientado. A distinção entre um
grafo direcionado simples e um grafo orientado é que se
x e y são vértices, um grafo direcionado simples permite
tanto (x, y) quanto (y, x) como arestas, enquanto apenas
uma é permitida em um grafo orientado.[5]
Um digrafo ponderado é um digrafo com pesos atribuí-
dos a seus arcos, à semelhança de um grafo ponderado.
A matriz de adjacência de um digrafo (com laços e ar-
cos múltiplos) é uma matriz inteira com linhas e colunas
Um grafo orientado (direcionado). correspondendo aos nodos do digrafo, onde uma entrada
não-diagonal aij é o número de arcos do nó i para o nó j,
Um grafo orientado,[1] grafo dirigido,[2] grafo dire- e a entrada diagonal aii é o número de laços no nó i. A
cionado[3] ou digrafo é um par G = (V, A) (algumas matriz de adjacência de um digrafo é única até as permu-
vezes G = (V, E) )(edge) de:[4][5][6] tações de linhas e colunas.
2.15. GRAFO ORIENTADO 29

Outra representação de matriz para um dígrafo é sua


matriz de incidência. 5 7 3
Veja glossário para mais definições.

2.15.2 Graus de saída e graus de entrada


11 8

2 9 10

Um grafo direcionado acíclico simples

Uma árvore enraizada naturalmente se define como um


Um digrafo com vértices rotulados (saída ou entrada) digrafo acíclico, se todas as arestas da árvore subjacentes
são dirigidas para longe da raiz.
Para um nodo, o número de pontos de extremidade adja-
cente à cabeça de um nó é chamado de grau de entrada
do nodo e o número de pontos de extremidade da cauda

1 2
é o seu grau de saída.
O grau de entrada é denotado deg− (v) e o grau de saída
como deg+ (v).. Um vértice com deg− (v) = 0 é cha-
mado de fonte, uma vez que é a origem de cada uma das
suas arestas incidentes. Da mesma forma, um vértice com
deg+ (v) = 0 é chamado de sumidouro (ou poço).
A fórmula da soma dos graus afirma que, para um grafo
direcionado

∑ ∑
deg+ (v) = deg− (v) = |A| .
v∈V v∈V

+ −
3 4
Se para cada nodo, v ∈ V, deg (v) = deg (v), o grafo
é chamado de digrafo balanceado.

um torneio com quatro vertices


2.15.3 Conectividade de digrafos
Um torneio é um grafo orientado obtido ao se escolher
Um digrafo G é chamado de fracamente conectado (ou uma direção para cada aresta em um grafo completo não-
apenas conectado[4]p. 19 ) se o grafo subjacente não- direcionado.
direcionado obtido através da substituição de todas as
Na teoria dos grupos de Lie, um quiver Q é um grafo
arestas de G por arestas não direcionadas é um grafo co-
nexo. Um digrafo é fortemente conectado ou forte se direcionado servindo como o domínio do e, portanto, ca-
ele contém um caminho orientado de u a v e um caminho racterizando a forma de, uma representação V definida
como um functor, mais especificamente um objeto da
orientado de v a u para cada par de vértices u,v. Os com-
ponentes fortes são os subgrafos máximo fortemente co-categoria functor FinVctK F(Q) onde F(Q) é a categoria
nectados. livre em Q constituída por caminhos em Q e FinVctK é
a categoria de espaços vetoriais de dimensão finita sobre
um campo K. Representações de um quiver rótulam seus
2.15.4 Classes de digrafos vértices com espaços vetoriais e suas arestas (e, portanto,
caminhos) de modo compatível com transformações line-
Um digrafo acíclico é um grafo direcionado sem ciclos ares entre eles, e transformam através das transformações
direcionados. naturais.
30 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

2.15.5 Ver também associados a pontos(vértices) ou ligações(arestas) relacio-


nados ao problema[3] . Na maioria das aplicações de gra-
• Quiver fos a problemas de engenharia, é necessário considerar-
se grandezas tais como distâncias, altitudes, capacidades,
fluxos, etc., associadas a localidades, estradas, etc. que
2.15.6 Referências definem os vértices e os arcos (ou arestas) do grafo.

[1] BOAVENTURA NETTO, Paulo Oswaldo (2001). Gra- Em muitos problemas, no entanto, interessa apenas o
fos. Teoria, Modelos Algoritmos (São Paulo: Edgard Blü- inter-relacionamento dos vértices - e não se definem fun-
cher). p. 7-8. ISBN 85-212-0292-X.. ções, ou se pode considerar que elas são constantes. Diz-
se então que o grafo é um grafo não-valorado.
[2] FURTADO, Antonio Luz (1973). Teoria dos Grafos. Al-
goritmos (Rio de Janeiro, Guanabara: LTC/Editora da
USP). CDD 511.2076.. 2.17.1 Representação
[3] SZWARCFITER, Jayme Luiz (1988). Grafos e algorit-
mos computacionais (Rio de Janeiro: Campus). p. 64. Em um grafo valorado se pode usar as representações
ISBN 85-7001-341-8. usuais para grafos. A matriz de adjacência é comu-
mente conhecida como matriz de valores das ligações
[4] BANG-JENSEN, Jørgen; GUTIN, Gregory (2000). ou simplesmente matriz de valores.[4] Na lista de ad-
Digraphs: Theory, Algorithms and Applications Springer jacência cada linha vem acompanhada de seus valores
[S.l.] ISBN 1-85233-268-9. respectivos[4] . A figura a seguir ilustra um exemplo:
[5] DIESTEL, Reinhard (2005). Graph Theory 3ª ed. Sprin-
ger [S.l.] ISBN 3-540-26182-6.
2.17.2 Referências
[6] BONDY, John Adrian; MURTY, U. S. R. (1976). Graph
Theory with Applications North-Holland [S.l.] ISBN 0- [1] GOODRICH, Michael T.; TAMASSIA, Roberto (2001).
444-19451-7.. Estruturas de Dados e Algoritmos em Java 2ª ed. (Porto
Alegre: Bookman). p. 532-560. ISBN 85-363-0043-4.

2.15.7 Ligações externas [2] FURTADO, Antonio Luz (1973). Teoria dos Grafos. Al-
goritmos (Rio de Janeiro, Guanabara: LTC/Editora da
• Oriented Graph (em inglês) USP). p. 2-3. CDD 511.2076.

[3] BOAVENTURA NETTO, Paulo Oswaldo (2001). Gra-


fos. Teoria, Modelos Algoritmos (São Paulo: Edgard Blü-
2.16 Grafo simples cher). p. 10. ISBN 85-212-0292-X.

[4] BOAVENTURA NETTO, Paulo Oswaldo; JURKI-


Em teoria dos grafos, um grafo é simples se ele não tem
EWICZ, Samuel (2009). Grafos:Introdução e Prática
laços nem mais de uma aresta ligando dois vértices. (São Paulo: Edgard Blücher). p. 19. ISBN 978-85-212-
Em grande parte dos textos o adjetivo simples (ou regular) 0473-2.
é omitido estando, no entanto, subentendido. Um grafo
que não é simples, diz-se um multigrafo.
2.17.3 Ver também
2.16.1 Número de arestas • Grafo

O número de arestas de um grafo simples G é expressado • Algoritmo de Kruskal


por:
( ) • Algoritmo de Prim
E = v2 = 2!∗(v−2)!
v!

• Algoritmo de Dijkstra

2.17 Grafo valorado


2.18 Homomorfismo de grafos
Um grafo valorado ou grafo ponderado[1] é um grafo
que possui funções relacionando o conjunto de vértices No campo da matemática da teoria dos grafos um homo-
ou o conjunto de arestas a conjunto de números.[2][3] morfismo de grafos é um mapeamento entre dois grafos
O significado das funções depende do problema. Na mai- que respeita suas estruturas. De forma mais concreta ele
oria das aplicações de grafos existem dados quantitativos mapeia vértices adjacentes a vértices adjacentes.
2.19. ISOMORFISMO DE GRAFOS 31

2.18.1 Definição em que chamaremos R uma bissimulação funcional) te-


mos um homomorfismo de grafo, tal que ←→ inclui ←− ,
Um homomorfismo de grafos f de um grafo G = (V, E) sendo uma ordenação de homomorfismos ←− definida
para um grafo G′ = (V ′ , E ′ ) , denotado por f : G −→ como:
G′ , é um mapeamento f : V −→ V ′ do conjunto de
G ←− H se φ : H −→ G , para algum homomorfismo
vértices de G para o conjunto de vértices de G′ tal que
φ
{f (u), f (v)} ∈ E ′ sempre que {u, v} ∈ E .
Os conceitos de bissimulação e ordenação de homomor-
A definição acima é estendida para dígrafos (grafos com
fismos são bastante importantes na demonstração de re-
arestas dirigidas). Então, para um homomorfismo f :
sultados sobre a confluência de sistemas de reescrita de
G −→ G′ , (f (u), f (v)) é um arco (aresta dirigida) de
grafos.
G′ se (u, v) é um arco de G .
Se há um homomorfismo f : G −→ H nós escreveremos
G −→ H , e G ̸−→ H caso contrário. Se G −→ H , G 2.18.3 Observações
é dito ser homomórfico a H ou H -colorável.
• Em termos de coloração de grafos, k-colorações de
A composição de homomorfismos é também um homo- G são exatamente homomorfismos f : G −→ Kk ,
morfismo. Se o homomorfismo f : G −→ G′ é uma em que Kk é o grafo completo com k nós. Como
bijeção cuja função inversa é também um homomorfismo conseqüência se G −→ H , o número cromático
de grafos, então f é um isomorfismo de grafo. Determi- (menor número de cores necessário para colorir um
nar se há ou não um isomorfismo entre dois grafos é um grafo) de G é no máximo o de H : N c(G) ≤
importante problema em complexidade computacional; N c(H) (onde N c(X) representa o número cromá-
veja o problema do isomorfismo de subgrafos. tico do grafo X ).

Dois grafos G e G são homomorficamente equivalen-
• O homomorfismo de grafos preserva a conectivi-
tes se G −→ G′ e G′ −→ G .
dade.
O resultado da retração de um grafo G é um subgrafo
H de G tal que existe um homomorfismo r : G −→ H • O produto tensorial de grafos é o produto categorial
, chamado retração com r(x) = x para todo vértice x para a categoria dos grafos e dos homomorfismos de
de H . Um núcleo é um grafo que não se retrai a um grafos.
subgrafo próprio. Qualquer grafo é homomorficamente • O problema de decisão associado, isto é, decidir se
equivalente a um único núcleo. existe ou não um homomorfismo de um grafo para
outro, é NP-completo.
2.18.2 Generalização
2.18.4 Referências
Tome a seguinte definição de grafo:
Um grafo G é uma estrutura • Hell, Pavol; Jaroslav Nešetřil (2004). Graphs and
Homomorphisms (Oxford Lecture Series in Mathe-
matics and Its Applications) Oxford University Press
⟨ N, args, rotulo, raiz ⟩ [S.l.] ISBN 0-19-852817-5.
em que N é o conjunto de nós do grafo, args : N −→
• Term Rewriting Systems, Terese, Cambridge Tracts in
N ∗ , rotulo : N −→ Σ (uma função parcial) e tais que:
Theoretical Computer Science, 2003.
comprimento(args(n)) = aridade(rotulo(n)) se
rotulo(n) ↓ ; ou 0 , caso contrário.
O conceito de homomorfismo de grafos pode ser gene-
2.18.5 Veja também
ralizado (usando essa estrutura para grafos) de funções • Reescrita de Grafos
(entre nós dos grafos) para relações:
Sejam G, H grafos. Uma bissimulação entre G e H é • Teoria das categorias
uma relação R ⊆ NG × NH tal que:

• raizG R raizH 2.19 Isomorfismo de grafos


• m R n −→ rotuloG (m) = rotuloH (n)
Em teoria dos grafos, um isomorfismo dos grafos G e
• m R n −→ argsG (m)i R argsH (n)i H é uma bijeção entre os conjuntos de vértices de G e H

Se há tal relação, então G e H são chamados bissimila-


res (notação G←→H ). Se R é de fato uma função (caso f : V (G) → V (H)
32 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

de tal forma que quaisquer dois vértices u e v de G são guir as propriedades de grafos inerentes às estruturas dos
adjacentes em G se e somente se ƒ(u) e ƒ(v) são adja- próprios grafos das propriedades associadas com as re-
centes em H. Este tipo de bijeção é comumente cha- presentações do grafo: desenho dos grafos, estruturas de
mado de “bijeção com preservação de arestas”, de acordo dados para grafos, rótulos de grafos, etc. Por exemplo, se
com a noção geral de isomorfismo sendo uma bijeção de um grafo tem exatamente um ciclo, em seguida, todos os
preservação-de-estrutura. grafos da sua classe de isomorfismo também têm exata-
Na definição acima, os grafos são entendidos como grafos mente um ciclo. Por outro lado, no caso comum quando
grafos não dirigidos, não-rotulados e não ponderados. No os vértices de um grafo são (representados por) inteiros
1, 2, ... N, então a expressão
entanto, a noção de isomorfismo pode ser aplicada a todas
as outras variantes da noção de grafo, somando os requi-
sitos necessários para preservar os elementos adicionais ∑
correspondentes da estrutura: as direções do arco, os pe- v · degv
v∈V (G)
sos das arestas, etc, com a seguinte exceção. Quando se
fala em rótulo com rótulos exclusivos, geralmente tirados pode ser diferente para dois grafos isomorfos.
do intervalo inteiro 1 ,...,n, onde n é o número dos vérti-
ces do grafo, dois grafos rotulados são ditos isomórficos
se os grafos subjacentes correspondentes não rotulados 2.19.3 Reconhecimento de isomorfismo de
são isomórficos. grafos
Se um isomorfismo existe entre dois grafos, então os gra-
fos são chamados de isomorfos e nós denotamos por Teorema de Whitney
G ≃ H . No caso, quando a bijeção é um mapeamento
de um grafo em si mesmo, ou seja, quando G e H são um
e o mesmo grafo, a bijeção é chamada de automorfismo
de G.
O isomorfismo de grafos é uma relação de equivalência
em grafos e, como tal, particiona as classes de todos os
grafos em classes de equivalência. Um conjunto de grafos
isomorfos entre si é chamado de classe de isomorfismo
de grafos. A exceção do teorema de Whitney: estes dois grafos não são iso-
mórficos, mas tem grafos de linha isomórfica.

2.19.1 Exemplo O teorema de isomorfismo de grafos de Whitney,[1] de-


monstrado por H. Whitney, afirma que dois grafos cone-
Os dois grafos abaixo são isomorfos, apesar de suas re- xos são isomorfos se e somente se o seu grafos de linha
presentações diferentes. são isomórficos, com uma única exceção: K 3 , o grafo
completo em três vértices, e o grafo bipartido completo
K₁,₃, que não são isomórficos, mas ambos têm K 3 como
2.19.2 Motivação seu grafo de linha. O teorema de grafos de Whitney pode
ser estendido para hipergrafos.[2]
A noção formal de “isomorfismo”, por exemplo, de “iso-
morfismo gráfico”, captura a noção informal de que al-
guns objetos têm “a mesma estrutura”, se alguém ignora Abordagem algorítmica
distinções individuais dos componentes de objetos “atô-
micos” em questão, consulte o exemplo acima. Sempre Enquanto isomorfismos de grafos podem ser estudados de
que a individualidade dos componentes “atômicos” (vér- forma clássica da Matemática, como exemplificado pelo
tices e arestas, para grafos) é importante para a correta teorema de Whitney, é reconhecido que é um problema a
representação do que é modelado por grafos, o modelo ser enfrentado com uma abordagem algorítmica. O pro-
é refinado pela imposição de restrições adicionais sobre blema computacional de determinar se dois grafos finitos
a estrutura, e outros objetos matemáticos são utilizados: são isomorfos é chamado o problema do isomorfismo de
digrafos, grafos rotulados, grafos coloridos, árvores en- grafos.
raizadas e assim por diante. A relação de isomorfismo Suas aplicações práticas incluem principalmente
pode também ser definida para todas essas generaliza- quimioinformática, matemática química (identificação
ções de grafos: o isomorfismo bijeção deve preservar os de compostos químicos), e automação de projeto
elementos da estrutura que define o tipo de objeto em eletrônico (verificação da equivalência das diferentes
questão: arcos, rótulos, cores de vértices/arestas, a raiz representações do desenho de um Circuito eletrônico
da árvore de raízes, etc. Curiosamente, é também um dos poucos problemas em
A noção de “isomorfismo de grafos” permite-nos distin- teoria computacional da complexidade pertencente à
2.20. LAÇO 33

classe NP, mas não se sabe se pertence a nenhum de seus


conhecidos subconjuntos (e, se P ≠ NP, disjuntos):P e
NP-completo. É um de apenas dois, dos 12 totais, pro-
blemas listados em Garey e Johnson (1979) cuja com- 6
plexidade está por se resolver.[3] Ou seja, eles não foram
provados ser incluídos, nem excluídos, das classes P ou
NP-completo.
3 4
Sua generalização, o problema do isomorfismo de sub-
grafos, é sabido ser NP-Completo.
As principais áreas de pesquisa para o problema é o pro-
jeto de algoritmos rápidos, tanto para o problema geral
quanto para classes especiais de grafos, e investigações
2 5
teóricas de sua complexidade computacional.

2.19.4 Ver também 1


• Homomorfismo de grafos
• Problema do isomorfismo de subgrafos
Um grafo com um laço no vértice 1
• Automorfismo de grafos

2.20.1 Grau
2.19.5 Referências
Para um grafo não direcionado, o grau de um vértice é
[1] H. Whitney, “Congruent graphs and the connectivity of
graphs”, Am. J. Math., 54(1932) pp. 160-168.
igual ao número de vértices adjacentes.
Um caso especial é um laço, que acrescenta dois para o
[2] Dirk L. Vertigan, Geoffrey P. Whittle: A 2-Isomorphism
grau. Isso pode ser entendido se deixando cada conexão
Theorem for Hypergraphs. J. Comb. Theory, Ser. B
71(2): 215-230. 1997. da contagem de arestas do laço como seu próprio vértice
adjacente. Em outras palavras, um vértice com um laço
[3] The latest one resolved was minimum-weight triangu- “vê" a si mesmo como um vértice adjacente de ambas as
lation, proved to be NP-complete in 2008. Mulzer, extremidades da aresta, assim, se soma dois e não um,
Wolfgang; Rote, Günter (2008), “Minimum-weight tri- para o grau.
angulation is NP-hard”, Journal of the ACM 55 (2): 1,
doi:10.1145/1346330.1346336, Arxiv. Para um grafo direcionado, um laço soma um ao grau de
entrada e um ao grau de saída

2.20 Laço
2.20.2 Ver também
Em teoria dos grafos, um laço ou auto-loop (em inglês:
• Ciclo (teoria dos grafos)
loop, self-loop ou buckle) é uma aresta que conecta um
vértice a ele mesmo. Um grafo simples, não contém ne-
nhum laço.
2.20.3 Referências
Dependendo do contexto, um grafo ou um multigrafo
pode ser definido de forma a permitir ou proibir a pre- [1] Balakrishnan, V. K. (1997). Graph Theory (em inglês)
sença de laços (muitas vezes em combinação com a per- (New York: McGraw-Hill). ISBN 0-07-005489-4.
missão ou proibição do uso de arestas múltiplas entre os
mesmos vértices: [2] GROSS, Jonathon L.;YELLEN, Jay (eds.) (2003). Hand-
book of Graph Theory (em inglês) CRC [S.l.] ISBN 1-
58488-090-2.
• Onde os grafos são definidos de modo a permitir la-
ços e arestas múltiplas, um grafo sem laços é muitas [3] ZWILLINGER, Daniel (2002). CRC Standard Mathema-
vezes chamado de multigrafo.[1][2][3] tical Tables and Formulae (em inglês) 31ª ed. Chapman
& Hall/CRC [S.l.] ISBN 1-58488-291-3.
• Onde os grafos são definidos de modo a não per-
mitir laços e arestas múltiplas, um multigrafo ou [4] BOLLOBÁS, Béla (2002). Modern Graph Theory (em
pseudografo é muitas vezes definido como um grafo inglês) 1ª ed. (New York/Berlin: Springer). ISBN 0-387-
que pode ter laços e arestas múltiplas.[4][5] 98488-7.
34 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

[5] DIESTEL, Reinhard (2000). Graph Theory (em inglês) 2ª • V um conjunto de vértices ou nós,
ed. (New York/Berlin: Springer). ISBN 0-387-98976-5.
• A um multiconjunto de pares ordenados de vértices,
chamado arestas dirigidas, arcos ou flechas.
2.20.4 Ligações externas
Um multigrafo misto G = (V, E, A) pode ser definido
• Grafos - Definições (UFSC)
do mesmo jeito que um grafo misto (com arestas que po-
dem ser dirigidas ou não).

2.21 Pseudografo
2.21.1 Etiquetas
Multigrafos e multidígrafos podem suportar a noção de
grafos etiquetados, de modo similar. Contudo não há
consenso na terminologia nesse caso.
As definições de multigrafos e multidígrafos etiquetados
são similares, e definiremos apenas o último:
Um multidígrafo etiquetado é um grafo etiquetado com
arcos etiquetados.
Formalmente: Um multidígrafo etiquetado G é um mul-
tigrafo com nós etiquetados e arcos. Formalmente é uma
8-tupla G = (ΣV , ΣA , V, A, s, t, ℓV , ℓA ) , em que:

• V é um conjunto de nós e A é um multiconjunto de


arcos.

• ΣV e ΣA são alfabetos finitos de nós e etiquetas de


arcos disponíveis.
Multigrafo com laços (azul) e arestas múltiplas (vermelho)
• s : A −→ V e t : A −→ V são duas funções indi-
Multigrafo ou pseudografo é um grafo não dirigido cando o nó de origem e o de destino de um arco.
que pode possuir arestas múltiplas (ou paralelas), ou seja,
arestas com mesmos nós finais. Assim, dois vértices po- • ℓV : V −→ ΣV e ℓA : A −→ ΣA são duas funções
dem estar conectados por mais de uma aresta. Formal- descrevendo a etiquetagem dos nós e arestas.
mente, um multigrafo G é um par ordenado G = (V, E)
, sendo
2.21.2 Notas
• V um conjunto de vértices ou nós,
[1] Para exemplos, veja. Bollobas, p. 7 and Diestel, p. 25.
• E um multiconjunto de pares não-ordenados de vér-
tices, chamado arestas ou linhas. [2] Graphs, Colourings and the Four-Colour Theorem, by Ro-
bert A. Wilson, 2002, ISBN 0198510624, p. 6
Alguns autores também consideram multigrafos aqueles
que têm laços, isto é, uma aresta que conecta um vértice
a ele mesmo[1] ; outros chamam estes de pseudografos, 2.21.3 Referências
reservando o termo multigrafo para os casos em que não
• http://www.utm.edu/departments/math/graph/
há laços[2] .
glossary.html#multigraph
Multigrafos podem ser usados, por exemplo, pra mode-
lar as possíveis conexões de vôo oferecidas por uma linha • Diestel, Reinhard; Graph Theory, Springer; 2nd edi-
aérea. Nesse caso o pseudografo seria um grafo dirigido tion (February 18, 2000). ISBN 0-387-98976-5.
com pares de arestas paralelas dirigidas conectando cida-
des para mostrar que é possível voar para e a partir destas
locações. 2.22 Pseudografo
Um multidígrafo é um dígrafo (grafo com arestas diri-
gidas) em que pode-se ter arestas múltiplas. Um multidí- Multigrafo ou pseudografo é um grafo não dirigido
grafo G é um par ordenado G = (V, A) , sendo que pode possuir arestas múltiplas (ou paralelas), ou seja,
2.23. QUIVER 35

2.22.1 Etiquetas

Multigrafos e multidígrafos podem suportar a noção de


grafos etiquetados, de modo similar. Contudo não há
consenso na terminologia nesse caso.
As definições de multigrafos e multidígrafos etiquetados
são similares, e definiremos apenas o último:
Um multidígrafo etiquetado é um grafo etiquetado com
arcos etiquetados.
Formalmente: Um multidígrafo etiquetado G é um mul-
tigrafo com nós etiquetados e arcos. Formalmente é uma
8-tupla G = (ΣV , ΣA , V, A, s, t, ℓV , ℓA ) , em que:

• V é um conjunto de nós e A é um multiconjunto de


arcos.

• ΣV e ΣA são alfabetos finitos de nós e etiquetas de


Multigrafo com laços (azul) e arestas múltiplas (vermelho)
arcos disponíveis.

arestas com mesmos nós finais. Assim, dois vértices po- • s : A −→ V e t : A −→ V são duas funções indi-
dem estar conectados por mais de uma aresta. Formal- cando o nó de origem e o de destino de um arco.
mente, um multigrafo G é um par ordenado G = (V, E)
, sendo • ℓV : V −→ ΣV e ℓA : A −→ ΣA são duas funções
descrevendo a etiquetagem dos nós e arestas.
• V um conjunto de vértices ou nós,
2.22.2 Notas
• E um multiconjunto de pares não-ordenados de vér-
tices, chamado arestas ou linhas. [1] Para exemplos, veja. Bollobas, p. 7 and Diestel, p. 25.

[2] Graphs, Colourings and the Four-Colour Theorem, by Ro-


Alguns autores também consideram multigrafos aqueles bert A. Wilson, 2002, ISBN 0198510624, p. 6
que têm laços, isto é, uma aresta que conecta um vértice
a ele mesmo[1] ; outros chamam estes de pseudografos,
reservando o termo multigrafo para os casos em que não 2.22.3 Referências
há laços[2] .
• http://www.utm.edu/departments/math/graph/
Multigrafos podem ser usados, por exemplo, pra mode-
glossary.html#multigraph
lar as possíveis conexões de vôo oferecidas por uma linha
aérea. Nesse caso o pseudografo seria um grafo dirigido • Diestel, Reinhard; Graph Theory, Springer; 2nd edi-
com pares de arestas paralelas dirigidas conectando cida- tion (February 18, 2000). ISBN 0-387-98976-5.
des para mostrar que é possível voar para e a partir destas
locações.
Um multidígrafo é um dígrafo (grafo com arestas diri- 2.23 Quiver
gidas) em que pode-se ter arestas múltiplas. Um multidí-
grafo G é um par ordenado G = (V, A) , sendo
Em matemática, um quiver (ou digrafo) é um grafo di-
recionado onde laços e múltiplas setas entre dois vértices
• V um conjunto de vértices ou nós, são permitidos. Eles são comumente utilizados em teoria
da representação: uma representação, V, de um quiver
• A um multiconjunto de pares ordenados de vértices, atribui um espaço vetorial V(x) para cada vértice x do
chamado arestas dirigidas, arcos ou flechas. quiver e um mapa linear V(a) para cada seta a.

f
Um multigrafo misto G = (V, E, A) pode ser definido V1 −→V2
do mesmo jeito que um grafo misto (com arestas que po- Representação de um quiver, consistindo de dois es-
dem ser dirigidas ou não). paços vetoriais (V1, V2) e um morfismo f
36 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

Uma representação é dita ser decomponível se ela é iso-


mórfica à soma direta das representações não-zero.
Uma definição categórica duma representação de quiver
pode também ser dada. O quiver em si pode ser conside-
rado uma categoria, onde os vértices são objetos e trilhas
são morfismos. Então, uma representação de Q é apenas
um funtor covariante desta categoria para a categoria de
espaços vetoriais de dimensões finitas.

2.23.2 Teorema de Gabriel


Um quiver é dum tipo finito se possui muitas representa-
ções finitas não-isomórficas indecomponíveis. O teorema
de Gabriel classifica todas as representações de quiver do
tipo finito. Mais precisamente, declara que:
Um digrafo.
1. Um quiver (conectado) é de um tipo finito se e so-
mente se o seu grafo subjacente (quando as dire-
Se K é um corpo e Γ é um quiver, então o quiver algé- ções das setas são ignoradas) é um dos seguintes
brico ou trilha algébrica KΓ é definido como se segue. diagramas de Dynkin: An , Dn , E6 , E7 , E8 .
Uma trilha em Q é uma sequência de setas a_1 a_2 a_3 ...
a_n tal que a cabeça de a_{i+1} = cauda de a_i, usando a 2. As representações indecomponíveis estão numa cor-
convenção de concatenar trilhas da direita para esquerda. respondência um-para-um com as raízes positivas
Então, a trilha algébrica é um espaço vetorial que tem to- do sistema de raízes do diagrama de Dynkin.
das as trilhas do quiver como base e a multiplicação dada
pela concatenação de trilhas. Se duas trilhas não podem
ser concatenadas porque o vértice final da primeira não é 2.23.3 Ver também
igual ao vértice inicial da segunda, seu produto é definido
• Grafo
como zero. Isto define uma álgebra associativa sobre K.
Essa álgebra é unitária se e somente se o quiver possui • Teoria dos grafos
somente muitos vértices finitos. Neste caso, os módulos
sobre KΓ são naturalmente identificados com as repre-
sentações de Γ. 2.23.4 Ligações externas
Se o quiver possui muitos vértices e setas finitos, e o vér-
tice final e o inicial de qualquer trilha são sempre distintos • Quiver Representations, Harm Derksen e Jerzy
(isto é, Q não tem ciclos orientados), então KΓ é um anel Weyman, AMS Notices
hereditário de dimensão finita sobre K. • Notas sobre representações de quivers

• Finite-dimensional algebras and quivers, Alistair Sa-


2.23.1 Representações de quivers vage, “Encyclopedia of Mathematical Physics”, eds.
J.-P. Françoise, G.L. Naber e Tsou S.T. Oxford: El-
Uma representação de um quiver, Q, é dita ser trivial se sevier, 2006, volume 2, pp. 313-320
V(x)=0 para todos os vértices x em Q.
• Digrafo em USP
Um morfismo, f:V->V', entre representações do quiver Q,
é uma coleção de mapas lineares f (x) : V (x) → V ′ (x)
tal que para cada seta em Q de x para y V ′ (a)f (x) =
f (y)V (a) , isto é, todos os quadrados que f forma com 2.24 Vértice de corte (teoria dos
as setas de V e V' se comutem. Um morfismo, f, é um grafos)
isomorfismo, se f(x) é invertível para todos os vértices x
no quiver. Com estas definições, as representações dum Em matemática e ciência da computação, um vértice de
quiver formam uma categoria. corte ou ponto de articulação[1] é um vértice de um
Se V e W são representações dum quiver Q, então a soma grafo tal que a remoção deste vértice provoca um au-
direta destas representações, V ⊕W , é definida por (V ⊕ mento no número de componentes conectados. Se o grafo
W )(x) = V (x) ⊕ W (x) para todos os vértices x em Q e era conectado antes da remoção do vértice, ele será des-
(V ⊕ W )(a) é a soma direta dos mapeamentos lineares conectado depois. Qualquer grafo conectado com um
V(a) e W(a). vértice de corte tem uma conectividade de 1.
2.24. VÉRTICE DE CORTE (TEORIA DOS GRAFOS) 37

Um grafo não-dirigido sem vértices de corte

em largura) para cada i em V com arestas incidentes b =


número de componentes em G com i removido se b > a i
é um vértice de corte C = C + {i} fimse fimpara
Um algoritmo com o tempo de execução muito melhor,
O(n + m) [2] é conhecido usando uma Busca em profun-
didade.

2.24.2 Algoritmo em C++


#include <algorithm> #include <set> #include <vector>
#include <cstring> #define MAX 100 using namespace
std; int n, time_s, visit[MAX]; vector<int> ADJ[MAX];
int dfs(int u, set<int>& ans){ int menor = visit[u] =
time_s++; int filhos = 0; for(int i = 0; i<ADJ[u].size();
i++){ if(visit[ADJ[u][i]]==0){ filhos++; int m
= dfs(ADJ[u][i], ans); menor = min(menor,m);
Um grafo não-dirigido com n=5 vertices e n−2=3 vértices de
if(visit[u]<=m && (u!=0 || filhos>=2)){ ans.insert(u); }
corte; os vértices de corte (em vermelho) são aqueles que não
estão em ambos as pontas
}else{ menor = min(menor, visit[ADJ[u][i]]); } } return
menor; } set<int> get_articulacoes(){ set<int> ans;
time_s = 1; memset(visit, 0, n*sizeof(int)); dfs(0,ans);
Embora bem definidos, mesmo para grafos dirigidos (di- return ans; }
grafos), os vértices de corte são utilizados principalmente
em grafos não dirigidos. Em geral, um grafo conectado, Teste seu código em: http://br.spoj.pl/problems/
não-dirigido, com n vértices não pode ter mais do que MANUT/
n−2 vértices de corte. Naturalmente, um grafo pode não
ter nenhum vértice de corte.
Uma ponte é uma aresta análoga a um vértice de corte, 2.24.3 Vértices de corte em árvores
ou seja, a remoção de uma ponte aumenta o número de
componentes conectados do grafo. Um vértice v de uma árvore G é um vértice de corte de
G somente se o grau do vértice é maior que 1.

2.24.1 Encontrando Vértices de corte 2.24.4 Referências


Um algoritmo trivial O(nm) é como se segue: [1] Gersting, Judith L. (1993). Fundamentos Matemáticos
para a Ciência da Computação 3ª ed. (Rio de Janeiro:
C = conjunto vazio (no final do algoritmo ele irá conter
LTC). p. 307. ISBN 85-216-1041-6.
os vértices de corte) a = número de componentes em G
(encontrado usando uma Busca em profundidade/Busca [2] Slides apresentando o algoritmo O(n+m)
38 CAPÍTULO 2. CONCEITOS BÁSICOS E DEFINIÇÕES

2.24.5 Ver também adjacências. Além disso, muitas classes importantes de


grafos podem ser definidas pelas propriedades de suas vi-
• Aresta de corte zinhanças, ou por simetrias que relacionam vizinhanças
umas com as outras.

2.24.6 Ligações externas Um vértice isolado não tem vértices adjacentes. O grau
de um vértice é igual ao número de vértices adjacentes.
• Wolfram Mathworld “Cut-Vertex” Um caso especial é um laço que une um vértice a ele pró-
prio; se tal aresta existe, o vértice pertence à sua própria
• Nirmala, K.; Ramachandra Rao, A. O número vizinhança.
de vértices de corte em um grafo regular. (em
português), Cah. Cent. Étud. Rech. Opér. 17,
295-299 (1975). 2.25.1 Propriedades locais em grafos

2.25 Vizinhança

6
4 5
1

3 2

Um grafo consistindo de 6 vértices e 7 arestas

Em teoria dos grafos, um vértice adjacente de um


vértice v em um Grafo é um vértice que está ligado a v No grafo octaédrico, a vizinhança de qualquer vértice é um 4-
por uma aresta.[1][2] A vizinhança ou adjacência de um ciclo.
vértice v em um grafo G é um subgrafo induzido de G
constituído por todos os vértices adjacentes a v e todas as
Se todos os vértices em G tem adjacências que são
arestas ligando esses dois vértices. Por exemplo, a ima- isomorfas para o mesmo grafo H,G é dito ser localmente
gem mostra um gráfico de 6 vértices e 7 arestas. O vérticeH, e se todos vértices em G tem adjacências que perten-
5 é adjacente aos vértices 1, 2 e 4, mas não é adjacente cem a alguma família de grafosF, G é dito ser localmente
aos vértices 3 e 6. A vizinhança do vértice 5 é o grafo F(Hell 1978, Sedlacek, 1983). Por exemplo, no grafo
com três vértices, 1, 2 e 4, e uma aresta conectando os octaédrico mostrado na figura, cada vértice tem uma ad-
vértices 1 e 2. jacência isomorfa a um grafo cíclico de quatro vértices,
A vizinhança é frequentemente denotada NG(v) ou de modo que o octaedro é localmente C 4 .
(quando o grafo não é ambíguo) N(v). A mesma nota- Por exemplo:
ção de vizinhança também pode ser usada para se referir
a um conjunto de vértices adjacentes ao invés dos sub-
• Qualquer grafo completo Kn é localmente Kn-1.
grafos induzidos correspondentes. A adjacência descrita
Os únicos grafos que são localmente completos são
acima não inclui v em si, e mais especificamente, a vizi-
uniões disjuntas de grafos completos.
nhança aberta de v; também é possível definir uma ad-
jacência na qual v está incluído, chamada de vizinhança
fechada e denotada por NG[v]. Quando não se afirma • Um grafo de Turán T(rs,r) é localmente
nada, a vizinhança é considerada aberta. T((r−1)s,r−1). Mais genericamente qualquer
grafo Turan é localmente Turan.
Vizinhanças podem ser usadas para representar grafos em
algoritmos de computador, através da representações de
lista de adjacência e matriz de adjacência . Vizinhan- • Todo grafo planar é localmente periplanar. No en-
ças também são usadas no coeficiente de agrupamento de tanto, nem todos os grafos localmente periplanares
um grafo, que é uma medida da densidade média de suas são planares.
2.25. VIZINHANÇA 39

• Um grafo é livre de triângulos sse é localmente


independente.

• Todo grafo k-cromático é localmente (k−1)-


cromático. Todo grafo localmente
√ k-cromático tem
um número cromático O( kn) .[3]

• Se uma família de grafos F é fechada sob a opera-


ção de tomar subgrafos induzidos, então cada grafo
em F é também localmente F. Por exemplo, todos
os grafos cordais são localmente cordais; cada grafo
perfeito é localmente perfeito; todos os grafos de
comparabilidade são localmente comparáveis.

• Um grafo é localmente cíclico se cada vizinhança é


um ciclo. Por exemplo, o octaedro é o único grafo
localmente C 4 , o icosaedro é o único grafo local-
mente C 5 e o gráfico Paley de ordem 13 é localmente
C6.

2.25.2 Referências
[1] Even, Shimon (1979). Graph Algorithms (Rockville,
Maryland: Computer Science Press). p. 249. ISBN 0-
914894-21-8.

[2] Szwarcfiter, Jayme Luiz (1988). Grafos e algoritmos com-


putacionais (Rio de Janeiro: Campus). ISBN 85-7001-
341-8.

[3] Wigderson, Avi. (1983). “Improving the performance


guarantee for approximate graph coloring”. Journal of
the ACM 30 (4): 729–735. DOI:10.1145/2157.2158.
Capítulo 3

Árvores

3.1 Árvores • G é conexo e há exatamente um caminho entre dois


vértices quaisquer. Já em uma floresta, há no má-
ximo um caminho entre dois vértices, devido à não-
Nota: Para outros significados de Árvore, veja
conectividade.
Árvore (desambiguação).
Na teoria dos grafos, uma árvore é um grafo conexo • G é acíclico, e um simples ciclo é formado se qual-
quer aresta for adicionada a G.
• G é conexo, e deixará de ser conexo se qualquer
2 aresta for removida de G.
1 • G é conexo, acíclico e tem n − 1 arestas.

3.1.2 Definições
3
• Uma árvore é denominada enraizada se um vértice
4 é escolhido como especial. Esse vértice é chamado
raiz. Uma árvore que não é enraizada é denominada
livre.
• Um grafo G é uma árvore se e somente se existir um
único caminho entre cada par de vértices de G[2] .

5
3.1.3 Referências

6 [1] BARBOSA, Ruy Madsen (1975). Combinatória e Gra-


fos 2 (São Paulo: Livraria Nobel). p. 196. Parâmetro
desconhecido |volumes= ignorado (|volume=) (Ajuda)

Uma árvore com 5 arestas e 6 vértices. [2] SZWARCFITER, Jayme Luiz (1988). Grafos e algorit-
mos computacionais (Rio de Janeiro: Campus). p. 43-45.
(existe caminho entre quaisquer dois de seus vértices) e ISBN 85-7001-341-8.
acíclico (não possui ciclos)[1][2] . Caso o grafo seja ací-
clico mas não conexo, ele é dito uma floresta. Uma flo-
resta também é definida como uma união disjunta de ár- 3.2 Árvore de extensão
vores.
Toda árvore é um grafo, mas nem todo grafo é uma ár- Uma árvore de extensão ou árvore de dispersão (em
vore. Toda árvore é um grafo bipartido e planar. Todo inglês: spanning tree) é o subconjunto de arestas de um
grafo conexo possui pelo menos uma árvore de extensão grafo que forma uma árvore contendo todos os vértices.
associada, composta de todos os seus vértices e algumas Uma árvore de extensão mínima ou árvore de exten-
de suas arestas. são de custo mínimo (em inglês: minimum spanning
tree) é o subconjunto de arestas de menor peso total em
um grafo valorado que forma uma árvore contendo todos
3.1.1 Propriedades
os nós.
Seja G um grafo. G é uma árvore se satisfaz as seguintes Uma árvore de extensão/dispersão apresenta as seguintes
condições: propriedades:

40
3.3. ÁRVORE DE EXTENSÃO MÍNIMA 41

4
1
3

2 7
8
2

3
8

A árvore de extensão mínima de um grafo plano. Cada aresta é


identificada como seu peso, o qual é aproximadamente igual ao
seu comprimento.

Exemplo de uma árvore de dispersão (composta pelas arestas


azuis) extensão calculado pela soma dos pesos das arestas que
a compõem. Uma árvore de extensão mínima (tam-
bém conhecida como árvore de extensão de peso mí-
• Define um subconjunto de arestas que mantém o
nimo ou árvore geradora mínima) é então uma árvore
grafo conectado em um único componente;
de extensão com peso menor ou igual a cada uma das ou-
• Em um grafo não-valorado qualquer árvore de dis- tras árvores de extensão possíveis. Generalizando mais,
persão é mínima; qualquer grafo não direcional (não necessariamente co-
nectado) tem uma floresta de árvores mínimas, que é
• Podem ser calculadas em tempo polinomial; uma união de árvores de extensão mínimas de cada uma
de suas componentes conexas.
Os algoritmos usuais para a determinação de árvores de Um exemplo de uso de uma árvore de extensão mínima
extensão/dispersão são o algoritmo de Prim (1957) e o seria a instalação de fibras óticas num campus de uma fa-
algoritmo de Kruskal (1956). culdade. Cada trecho de fibra ótica entre os prédios pos-
sui um custo associado (isto é, o custo da fibra, somado ao
custo da instalação da fibra, mão de obra, etc). Com es-
3.2.1 Referências ses dados em mãos (os prédios e os custos de cada trecho
de fibra ótica entre todos os prédios), podemos construir
• Eppstein, David (1999). «Spanning trees and span-
uma árvore de extensão que nos diria um jeito de conec-
ners» (PDF). Handbook of Computational Geome-
tarmos todos os prédios sem redundância. Uma árvore
try. Elsevier. pp. 425–461.
geradora mínima desse grafo nos daria uma árvore com
• Garey, Michael R.; Johnson, David S. (1979). o menor custo para fazer essa ligação.
Computers and Intractability: A Guide to the The-
ory of NP-Completeness W.H. Freeman [S.l.] ISBN
0-7167-1045-5. A2.1: ND2, pg.206. 3.3.1 Propriedades

• Wu, Bang Ye; Chao, Kun-Mao (2004). Spanning Possível Multiplicidade


Trees and Optimization Problems CRC Press [S.l.]
ISBN 1584884363. Podem existir várias árvores de extensão mínima com o
mesmo peso; Em particular, em um grafo não ponderado
(onde todos os pesos são iguais), toda árvore de extensão
3.3 Árvore de extensão mínima é mínima.

Dado um grafo não orientado conectado, uma árvore de Unicidade


extensão deste grafo é um subgrafo o qual é uma árvore
que conecta todos os vértices. Um único grafo pode ter Se cada aresta tem um peso distinto, então existirá somente
diferentes árvores de extensão. Nós podemos assinalar uma árvore de extensão mínima distinta. Isso pode ser
um peso a cada aresta, que é um número que representa provado por indução ou por contradição. Isso é verdade
quão desfavorável ela é, e atribuir um peso a árvore de em muitas situações realísticas, como no exemplo do ca-
42 CAPÍTULO 3. ÁRVORES

beamento do campus, dado acima. É muito difícil que 3.3.3 Ligações externas
tenhamos duas possibilidades de cabeamento com exata-
mente o mesmo custo. Isso pode ser generalizado para • Comparação de algoritmos para o problema da ár-
florestas de árvores mínimas. vore de extensão mínima - Explicação detalhada de
dois algoritmos diferentes para o problema da ár-
vore de extensão mínima, código completo de cada
Subgrafo de custo mínimo um deles e comparação de performance entre eles.

Se todos os pesos são não-negativos, então uma árvore de


extensão mínima é o subgrafo de custo mínimo conec-
tando todos os vértices, já que qualquer subgrafo con-
tendo cíclos vai possuir um peso total maior.

Propriedade dos ciclos

Para qualquer ciclo C no grafo, se o peso de uma aresta e


de C é maior do que os pesos das outras arestas de C, então
essa aresta não pode pertencer a uma árvore de extensão
mínima.

Propriedade do corte

Para qualquer corte C no grafo, se o peso de uma aresta


e de C é menor do que os pesos de outras arestas C, então
essa aresta pertence a todas as árvores de extensão mínima
possíveis do grafo.

3.3.2 Algoritmos

O primeiro algoritmo a encontrar uma árvore de exten-


são mínima foi desenvolvido pelo cientista checo Otakar
Borůvka em 1926 (veja algoritmo de Boruvka). Seu pro-
pósito era fornecer uma cobertura elétrica eficiente na
área rural da cidade de Morávia do Sul. Existem hoje dois
algoritmos comummente usados, o algoritmo de Prim e o
algoritmo de Kruskal. Todos são algoritmos gulosos que
rodam em tempo polinomial, então o problema de encon-
trar tais árvores pertence a classe de complexidade P.
O mais rápido algoritmo de árvore mínima de extensão
foi desenvolvido por Bernard Chazelle, e foi baseado no
algoritmo de Borůvka. Ele roda em um tempo de O(m
α(m,n)), onde m é o número de arestas, n refere-se ao nú-
mero de vértices e α é a clássica função inversa da função
de Ackermann. A função α cresce de forma extrema-
mente lenta, então para todos os propósitos práticos ele
pode ser considerado uma constante não maior que qua-
tro; portanto o algoritmo de Chazelle chega muito perto
de um tempo O(m).
Qual é o algoritmo mais rápido possível para este pro-
blema? Isto é um dos mais antigos problemas em aberto
na ciência da computação. Há claramente um limite li-
near inferior, já que é necessário examinar todas as ares-
tas ao menos uma vez.
Capítulo 4

Representação de Grafos
 
4.1 Matriz de adjacência 1 1 0 0 1 0
1 0 1 0 1 0
 
0 1 0 1 0 0
A=  

Uma matriz de adjacência é uma das formas de se re- 0 0 1 0 1 1
presentar um grafo.  1 1 0 1 0 0 
0 0 0 1 0 0
Dado um grafo G com n vértices, podemos representá-lo
em uma matriz n x n A(G)=[aij] (ou simplesmente A). A Em grafos não direcionados, as matrizes de adjacência
definição precisa das entradas da matriz varia de acordo são simétricas ao longo da diagonal principal - isto é, a
com as propriedades do grafo que se deseja representar, entrada aij é igual à entrada aji. Matrizes de adjacência
porém de forma geral o valor aij guarda informações so- de grafos direcionados, no entanto, não são assim. Num
bre como os vértices vi e vj estão relacionados (isto é, digrafo sem pesos, a entrada aij da matriz é 1 se há um
informações sobre a adjacência de vi e vj). arco de vi para vj e 0 caso contrário.
Para representar um grafo não direcionado, simples e sem Um resultado interessante ocorre quando consideramos a
pesos nas arestas, basta que as entradas aij da matriz A potência k da matriz de adjacência, ou seja, o produto
contenham 1 se vi e vj são adjacentes e 0 caso contrário.
Se as arestas do grafo tiverem pesos, aij pode conter, ao
invés de 1 quando houver uma aresta entre vi e vj, o peso Ak = A × ··· × A
| {z }.
dessa mesma aresta. k
Antes de apresentar o resultado, vamos definir um per-
curso em um grafo G. Um percurso corresponde a uma
sequência, finita e não vazia, de vértices do grafo, na qual
(v0 , v1 , ..., vi, ..., vk-1, vk) é tal que, para todo 0 ≤ i ≤
6 k-1, vi e vi+1 são vértices adjacentes. Os vértices v0 e vk
são chamados, respectivamente, de origem e fim do per-

3 4
curso, enquanto v1 , v2 , ..., vk-1 são os vértices internos ao
caminho. O inteiro k é o comprimento do percurso. Um
caminho em um digrafo é um percurso no qual todos os
arcos estão orientados no sentido origem do percurso-fim
do percurso.
Se A é a matriz de adjacência de um grafo G com con-
2 5
junto de vértices dado por V(G) = {v1 , v2 , ..., vn}, então a
entrada (i,j) de Ak , com k ≥ 1, corresponde ao número de
percursos (distintos) de comprimento k existentes entre
os vértices vi e vj.

1 Pode-se mostrar esse resultado por indução. Quando k


= 1, o resultado segue de modo natural da definição de
matriz de adjacência, uma vez que existe um percurso de
comprimento 1 entre o vértice vi e o vértice vj se e só se
{vi, vj} é uma aresta de G. Seja

[ ]
(k−1)
Por exemplo, a matriz de adjacência do grafo ao lado é Ak−1 = aij ,

43
44 CAPÍTULO 4. REPRESENTAÇÃO DE GRAFOS

e assuma que aij (k-1) é o número de percursos distintos • Matriz de incidência


de comprimento k - 1 entre os vértices vi e vj em G. Con-
siderando • Lista de adjacência

[ ]
(k)
Ak = aij ,
4.2 Matriz de incidência
e como Ak = Ak-1 . A, temos que
Uma matriz de incidência representa computacional-
mente um grafo através de uma matriz bidimensional,
(k)

n
(k−1) onde uma das dimensões são vértices e a outra dimensão
aij = aip apj .
p=1
são arestas.
Dado um grafo G com n vértices e m arestas, podemos
Observe que, na expressão acima, o elemento aij (k) é ob- representá-lo em uma matriz n x m M. A definição pre-
tido multiplicando-se os elementos da linha i de Ak-1 pe- cisa das entradas da matriz varia de acordo com as pro-
los respectivos elementos da coluna j de A e, em seguida, priedades do grafo que se deseja representar, porém de
efetuando-se a soma dos produtos obtidos. forma geral guarda informações sobre como os vértices
Todo percurso entre vi e vj de comprimento k em G con- se relacionam com cada aresta (isto é, informações sobre
[1]
siste de um percurso entre vi e vp de comprimento k - 1, a incidência de uma aresta em um vértice ).
onde vp é adjacente a vj, seguido da aresta {vp, vj} e do Para representar um grafo sem pesos nas arestas e
vértice vj. O resultado decorre da hipótese de indução e não direcionado, basta que as entradas da matriz M
da última equação. contenham 1 se a aresta incide no vértice, 2 caso seja um
O resultado permanece válido para digrafos, fazendo-se laço (incide duas vezes) e 0 caso a aresta não incida no
as devidas adequações: trocando arestas por arcos e per- vértice. Isto é,
cursos por caminhos.
Para ilustrar o resultado acima, observe as potências 2 e
3 da matriz de adjacência A correspondente ao grafo da
figura:

3 2 1 1 2 0
2 3 0 2 1 0

6
 
A 2
=
1 0 2 0 2 1 3

1 2 0 3 0 0, A



= 3 4
2 1 2 0 3 1
 0 0 1 0 1 1
7 6 3 3 6 1
6 3 5 1 7 2

3 5 0 5 1 0

3 1 5 0 6 3 .

 2 5
 
6 7 1 6 3 0
1 2 0 3 0 0
O elemento (4,6) de A2 indica que não há nenhum cami-
nho de comprimento 2 ligando os vértices 4 e 6 do grafo
1
acima. Por outro lado, o elemento (4,6) de A3 indica que
existem 3 caminhos de comprimento 3 ligando os vérti-
ces 4 e 6. São eles: (4,3,4,6), (4,5,4,6) e (4,6,4,6).
Grafos com 6 vértices.

4.1.1 Bibliografia Por exemplo, a matriz de incidência do grafo ao lado é


representada abaixo
• CHARTRAND, G., LESNIAK, L. Graphs & Di-  
graphs. Editora CRC Press, 2004. 2 1 0 0 1 0
1 0 1 0 1 0
 
0 1 0 1 0 0
 
4.1.2 Ver também 0 0 1 0 1 1
 
1 1 0 1 0 0
• Teoria dos grafos 0 0 0 1 0 0
4.3. LISTA DE ADJACÊNCIA 45

4.2.1 Ver também

• Teoria dos grafos

• Matriz de adjacência

• Lista de adjacência

4.2.2 Referências

[1] Scheinerman, Edward R. (2011). Matemática Discreta:


uma introdução (São Paulo: Cengage Learning). ISBN
978-85-221-0796-4. Lista de adjacências do grafo acima como encontrada em Cor-
men el al..

4.3 Lista de adjacência

6
4 5
1

3 2

Um grafo não dirigido com 6 vértices e 7 arestas.


Lista de adjacências do grafo acima como sugerida por van Ros-
Em teoria dos grafos, uma lista de adjacência, estru- sum.
tura de adjacência[1] ou dicionário[2] é a representação
de todas arestas ou arcos de um grafo em uma lista.
deste tipo de representação. Outro exemplo é a represen-
Se o grafo é não direcionado, cada entrada é um conjunto tação encontrada em Cormen et al. em que um array in-
(ou multiconjunto) de dois nós contendo as duas extremi- dexado pelos números dos vértices aponta para uma lista
dades da aresta correspondente; se ele for dirigido, cada simplesmente encadeada dos vizinhos de cada vértice[4] .
entrada é uma tupla de dois nós, um indicando o nó de
origem e o outro denotando o nó destino do arco corres- Uma dificuldade com a estrutura da lista de adjacência
pondente. é que ela não tem lugar óbvio para armazenar dados as-
sociados com as arestas de um grafo, tais como o com-
Normalmente, as listas de adjacência são desordenadas. primento ou custos das arestas. Para remediar isso, al-
guns textos, como o de Goodrich e Tamassia[5][6] , defen-
dem uma variante mais orientada a objeto da estrutura da
4.3.1 Aplicação em ciência da computação lista de adjacência, às vezes chamada de lista de incidên-
cia, que armazena para cada vértice uma lista de objetos
Em ciência da computação, uma lista de adjacência é uma que representam as arestas incidentes a esse vértice. Para
estrutura de dados para representar grafos. Em uma re- completar a estrutura, cada aresta deve apontar de volta
presentação de lista de adjacência, podemos manter, para para os dois vértices que compõem a sua extremidade. Os
cada vértice do grafo, uma lista de todos os outros vértices objetos extras nesta versão da lista de adjacência aumen-
com os quais ele tem uma aresta (a “lista de adjacência”, tam o uso de memória em relação à versão em que vérti-
deste vértice). Por exemplo, a representação sugerida por ces adjacentes são listados diretamente, mas estas arestas
van Rossum[3] , em que uma tabela de dispersão (tabela extras também são um local conveniente para armazenar
hash) é usada para associar cada vértice com um array informações adicionais sobre cada aresta (por exemplo, o
de vértices adjacentes, pode ser vista como um exemplo seu comprimento).
46 CAPÍTULO 4. REPRESENTAÇÃO DE GRAFOS

Ainda uma outra forma de representação é a lista de [2] BOAVENTURA NETTO, Paulo Oswaldo (2001). Gra-
adjacência com arrays em que um array indexado pe- fos. Teoria, Modelos Algoritmos (São Paulo: Edgard Blü-
los números dos vértices aponta para arrays contendo os cher). p. 11. ISBN 85-212-0292-X.
vértices[7] . [3] Guido van Rossum (1998). «Python Patterns — Imple-
menting Graphs». Consultado em 2010-10-29.

4.3.2 Conflitos de escolha [4] CORMEN, Thomas H.; LEISERSON, Charles E.; RI-
VEST Ronald L.; STEIN, Clifford (2001). Introduction
to Algorithms 2ª ed. MIT Press/McGraw-Hill. [S.l.] p.
A principal alternativa para a lista de adjacência é a
420. ISBN 0-262-03293-7.
matriz de adjacência. Para um grafo com uma matriz
de adjacência esparsa uma representação de lista de ad- [5] GOODRICH, Michael T.; TAMASSIA, Roberto (2001).
jacências do grafo ocupa menos espaço, porque ele não Estruturas de Dados e Algoritmos em Java 2ª ed. (Porto
usa nenhum espaço para representar as arestas que não Alegre: Bookman). p. 502-503. ISBN 85-363-0043-4.
estão presentes[8] . Usando uma implementação de listas
[6] GOODRICH, Michael T.; TAMASSIA, Roberto (2004).
de adjacência com um simples array em um computador Projeto de Algoritmos. Fundamentos, Análise e Exemplos
de 32 bits, uma lista de adjacência de um grafo não di- da Internet (Porto Alegre: Bookman). p. 299-303. ISBN
recionado requer cerca de 8e bytes de armazenamento, 85-363-0303-4.
onde e é o número de arestas: cada aresta dá origem a
entradas nas duas listas de adjacência e usa quatro bytes [7] SAHNI, Sartaj (2000). Data Structures, Algorithms, and
cada uma. Applications in Java (em inglês) 2ª ed. (Boston Burr
Ridge, IL: McGrawHill). p. 668-667. ISBN 0-07-
Por outro lado, pelo fato de que cada entrada em uma ma- 109217-X.
triz de adjacências requer apenas um bit, elas podem ser
representados de uma forma muito compacta, ocupando [8] EVEN, Shimon (1979). Graph Algorithms (Rockville,
Maryland: Computer Science Press). p. 4. ISBN 0-
apenas n2 /8 bytes de espaço contíguo, onde n é o número
914894-21-8.
de vértices. Além de apenas evitar desperdício de espaço,
essa compactação incentiva a localidade de referência.
Observando que um grafo pode ter no máximo n2 ares-
tas (permitindo laços) podemos fazer d = e/n2 denotar a
densidade do grafo. Então, se 8e > n2 /8, a representação
de lista de adjacência ocupa mais espaço, o que é verda-
deiro quando d > 1/64. Assim, um grafo deve ser muito
escasso para uma representação de lista de adjacência ser
mais eficiente em termos de memória do que uma ma-
triz de adjacência. No entanto, esta análise só é válida
quando a representação é usada para armazenar a estru-
tura de conectividade do grafo, sem qualquer informação
numérica sobre suas arestas.
Além do conflito de escolha relativo ao espaço, as estru-
turas de dados diferentes também facilitam operações di-
ferentes. É fácil encontrar todos os vértices adjacentes a
um vértice dada em uma representação lista de adjacên-
cia; você simplesmente le a sua lista de adjacência. Com
uma matriz de adjacência em vez disso se tem que pes-
quisar mais de uma linha inteira, gastando tempo O(n).
Se, pelo contrário, deseja realizar um teste de vizinhança
em dois vértices (isto é, determinar se eles têm uma aresta
entre eles), uma matriz de adjacência proporciona isso na
hora. No entanto, este teste de vizinhança em uma lista
de adjacências requer tempo proporcional ao número de
arestas associado com os dois vértices.

4.3.3 Referências

[1] SZWARCFITER, Jayme Luiz (1988). Grafos e algorit-


mos computacionais (Rio de Janeiro: Campus). p. 71.
ISBN 85-7001-341-8.
Capítulo 5

Automorfismo de grafos

5.1 Automorfismo de grafos

No campo da matemática da teoria dos grafos, um au-


tomorfismo de um grafo é uma forma de simetria em
que o grafo é mapeado em si, preservando a conecti-
vidade vértice-aresta. Formalmente, um automorfismo
de um grafo G = (V,E) é uma permutação σ do con-
junto de vértices V, tal que para qualquer aresta e =
(u,v), σ(e) = (σ(u),σ(v)) é também uma aresta. Ou
seja, ele é um isomorfismo de grafos de G para ele
mesmo.[1] Automorfismos podem ser definidos dessa ma-
neira, tanto para grafos direcionados quando para grafos
não-direcionados.
A composição de dois automorfismos é outro automor-
fismo, e o conjunto de automorfismos de um grafo dado,
sob a operação de composição, forma uma grupo, o grupo
de automorfismo do grafo. No sentido inverso, pelo
teorema de Frucht, todos os grupos pode ser representa-
Este desenho do grafo de Petersen mostra um subgrupo de suas
dos como o grupo de automorfismo de um grafo conexo. simetrias, isomorfo ao grupo diedro D , mas o grafo tem sime-
5
- Na verdade, de um grafo cúbico.[2][3] trias adicionais que não estão presentes no desenho(uma vez que
o grafo é simétrico, todas as ligações são equivalentes, por exem-
plo).

5.1.1 Complexidade computacional 5.1.2 Exibindo a Simetria


Construir o grupo de automorfismo é pelo menos tão di- Vários pesquisadores de desenho de grafos têm investi-
fícil (em termos de complexidade computacional) quanto gado algoritmos para desenhar grafos de tal forma que o
resolver o problema do isomorfismo de grafos, para de- automorfismo do grafo se torne visível como simetrias do
terminar se dois grafos dados correspondem vértice com desenho. Isso pode ser feito usando um método que não
vértice e aresta com aresta. Pois, G e H são isomorfos se
é projetado em torno de simetrias, mas que gera automa-
e somente se o grafo desconectado formado pelo união ticamente os desenhos simétricos, quando possível,[7] ou
disjunta de grafos G e H tem um automorfismo que troca explicitamente identificand as simetrias e usando-as para
os dois componentes.[4] orientar a colocação de vértice no desenho.[8] Nem sem-
O problema do automorfismo de grafos é o problema pre é possível mostrar todas as simetrias do grafo, simul-
de testar se um grafo tem um automorfismo não trivial. taneamente, de modo que talvez seja necessário escolher
Ele pertence à classe NP de problemas de complexidade quais simetrias mostrar e quais deixar sem visualização.
computacional. De forma semelhante ao problema do
isomorfismo de grafos, não se sabe se ele tem um algo-
ritmo que o resolva em tempo polinomial ou se é NP- 5.1.3 Famílias de grafos definidas pelos
completo. Sabe-se que o problema do automorfismo de seus automorfismos
grafos é redutível muitos-para-um em tempo polinomial
para o problema do isomorfismo de grafos, mas a redução Várias famílias de grafos são definidas por terem certos
inversa é desconhecida.[5] [6] tipos de automorfismos:

47
48 CAPÍTULO 5. AUTOMORFISMO DE GRAFOS

• Um Grafo assimétrico é um grafo não direcionado, [6] Torán, Jacobo. (PDF). SIAM Journal on Com-
sem qualquer automorfismo não trivial. puting, vol. 33, nº. 5, 2004, pp. 1093-1108,
doi:10.1137/S009753970241096X http://theorie.
• Um Grafo vértice-transitivo é um grafo não direcio- informatik.uni-ulm.de/Personen/toran/papers/hard.pdf.
nado em que cada vértice pode ser mapeado por um Texto “On the Hardness of Graph Isomorphism” ignorado
automorfismo em qualquer outro vértice. (Ajuda); delete character character in |publicado= at
position 146 (Ajuda); Falta o |titulo= (Ajuda); Ligação
• Um Grafo aresta-transitivo é um grafo não direcio- externa em |publicado= (Ajuda)
nado em que cada aresta pode ser mapeada por um [7] Di Battista, Giuseppe; Tamassia, Roberto; Tollis, Ioan-
automorfismo em qualquer outra aresta. nis G. (1992), “Area requirement and symmetry display
of planar upward drawings”, Discrete and Computational
• Um Grafo simétrico é um grafo tal que cada par de Geometry 7 (1): 381–401, doi:10.1007/BF02187850; Ea-
vértices adjacentes podem ser mapeados por um au- des, Peter; Lin, Xuemin (2000), “Spring algorithms and
tomorfismo em qualquer outro par de vértices adja- symmetry”, Theoretical Computer Science 240 (2): 379–
centes. 405, doi:10.1016/S0304-3975(99)00239-X.

• Um Grafo distância-transitivo é um grafo tal que [8] Hong, Seok-Hee (2002), “Drawing graphs symmetrically
cada par de vértices pode ser mapeada por um au- in three dimensions”, Proc. 9th Int. Symp. Graph
tomorfismo em qualquer outro par de vértices que Drawing (GD 2001), Lecture Notes in Computer Science,
2265, Springer-Verlag, pp. 106–108, doi:10.1007/3-540-
estão à mesma distância.
45848-4_16.
• Um Grafo semi-simétrico é um grafo que é aresta-
transitivo, mas não vértice-transitivo.
5.2 Grafo regular
• Um Grafo meio-transitivo é um grafo que é vértice-
transitivo e aresta-transitivo mas não simétrico.
Em Teoria dos grafos, um grafo regular é um grafo
• Um Grafo anti-simétrico é um grafo dirigido, junta- onde cada vértice tem o mesmo número de adjacências,
mente com uma permutação σ sobre os vértices que i.e. cada vértice tem o mesmo grau ou valência. Um
mapeia as arestas para arestas, mas inverte o sentido grafo direcionado regular também deve satisfazer a con-
de cada aresta. Adicionalmente, σ necessita ser uma dição mais forte de que o grau de entrada e o grau de
involução. saída de cada vértice sejam iguais uns aos outros.[1] Um
grafo regular com vértices de grau k é chamado um grafo
k‑regular ou grafo regular de grau k.
Relações de inclusão entre estas famílias estão indicadas
no quadro seguinte: Grafos regulares de grau no máximo 2 são fáceis de clas-
sificar: Um grafo 0-regular é composto por vértices des-
conectados, um grafo 1-regular consiste de arestas des-
5.1.4 Referências conectadas, e um grafo 2-regular consiste de ciclos des-
conectados.
[1] GALLIAN, Joseph A. (1994). Contemporary Abstract Al- Um grafo 3-regular é conhecido como um grafo cúbico.
gebra (Lexington, Massachusetts: D. C. Heath). ISBN 0-
669-33907-5. Um grafo fortemente regular é um grafo regular, onde
cada par de vértices adjacentes tem o mesmo número
[2] Frucht, R. (1938), “Herstellung von Graphen mit vorge- l de vizinhos em comum, e cada par de vértices não-
gebener abstrakter Gruppe.” (em German), Compositio adjacentes tem o mesmo número n de vizinhos em co-
Mathematica 6: 239–250, ISSN 0010-437X, http://www. mum. Os menores grafos que são regulares, mas não for-
numdam.org/item?id=CM_1939__6__239_0. temente regulares são os grafos ciclos e os grafos circu-
[3] Frucht, R. (1949), “Graphs of degree three with a gi- lantes em 6 vértices.
ven abstract group”, Canadian Journal of Mathematics O grafo completo Km é fortemente regular para qualquer
1: 365–378, MR0032987, ISSN 0008-414X, http://cms. m.
math.ca/cjm/v1/p365
Um teorema de Nash-Williams diz que cada k‑grafo re-
[4] Luks, Eugene M. (1982), “Isomorphism of graphs of gular em 2k + 1 vértices tem um ciclo hamiltoniano.
bounded valence can be tested in polynomial time”, Jour-
nal of Computer and System Sciences 25 (1): 42–65,
• grafo 0-regular
doi:10.1016/0022-0000(82)90009-5.
• grafo 1-regular
[5] Köbler, Johannes; Uwe Schöning, Jacobo Torán (1993),
Graph Isomorphism Problem: The Structural Comple- • grafo 2-regular
xity, Birkhäuser Verlag, ISBN 0817636803, OCLC
246882287 • grafo 3-regular
5.3. GRAFO FORTEMENTE REGULAR 49

5.2.1 Propriedades algébricas • Seja I denotando a matriz identidade (de ordem v) e


faça-se J denotar a matriz cujas entradas são todas
Seja A a matriz de adjacência de um grafo. Então, o iguais a 1. A matriz de adjacência A de um grafo
grafo é regular se e somente se j = (1, . . . , 1) é um fortemente regular satisfaz as seguintes proprieda-
autovetor de A..[2] Seu autovalor será o grau constante des:
do grafo. Autovetores correspondentes a outros autova-
lores são ortogonais a j , assim ∑como para tais autovetores • A × J = kJ (Esta é uma reafirmação trivial
n
v = (v1 , . . . , vn ) , nós temos i=1 vi = 0 . da exigência para os graus de vértices).
• A2 + (µ − λ)A + (µ − k)I = µJ (O pri-
Um grafo regular de grau k é conectado se e somente se
meiro termo indica o número de caminhos de
o autovalor k tem uma multiplicidade 1.[2]
2-passos de cada vértice para todos os vértices.
Para os pares de vértices diretamente ligados
5.2.2 Referências por uma aresta, a equação reduz-se o número
de tais caminhos em 2 passos sendo igual a λ
[1] Chen, Wai-Kai (1997). Graph theory and its engineering . Para os pares de vértices não directamente
applications World Scientific [S.l.] p. 29. ISBN 978- ligados por uma aresta, a equação reduz-se ao
981021859-1. número de tais caminhos em 2 passos sendo
igual a µ . Para os auto-pares triviais, a equa-
[2] Cvetković, D. M.; Doob, M.; and Sachs, H. Spectra of ção reduz-se para o grau igual a k).
Graphs: Theory and Applications, 3rd rev. enl. ed. New
York: Wiley, 1998. • O grafo tem exatamente três autovalores:
• k cuja multiplicidade é 1
[ √ ]
5.2.3 Ligações externas • 12 (λ − µ) + (λ − µ)2 + 4(k − µ)
cuja
[ multiplicidade ] é
• GenReg software e dados por Markus Meringer.
1
2 (v − 1) − √
2k+(v−1)(λ−µ)
(λ−µ)2 +4(k−µ)
[ √ ]
5.3 Grafo fortemente regular • 12 (λ − µ) − (λ − µ)2 + 4(k − µ)
cuja
[ multiplicidade ] é
Na teoria dos grafos, uma disciplina dentro da matemá- 1
2 (v − 1) + √
2k+(v−1)(λ−µ)
(λ−µ)2 +4(k−µ)
tica, um grafo fortemente regular é definido como se
segue. Seja G = (V,E) um grafo regular com v vértices e • Grafos fortemente regulares para os quais 2k + (v −
grau k. G é dito ser fortemente regular se houver tam- 1)(λ − µ) = 0 são chamados grafos de conferên-
bém inteiros λ e μ tais que: cia devido a sua conexão com matrizes de confe-
rência
( simétricas. Seus
) parâmetros se reduzem a
• Cada dois vértices adjacentes tem λ vizinhos em co- srg v, v−1
2 , v−5 v−1
4 , 4 .
mum.
• Grafos fortemente regulares para os quais 2k + (v −
• Cada dois vértices não-adjacentes tem μ vizinhos em 1)(λ − µ) ̸= 0 tem autovalores inteiros com multi-
comum. plicidades desiguais.
• O complemento de um gfr(v,k,λ,μ) também é for-
Um grafo deste tipo é dito às vezes ser um gfr(v,k,λ,μ). temente regular. É um gfr(v, v−k−1, v−2−2k+μ,
Alguns autores excluem grafos que satisfazem a defini- v−2k+λ)
ção trivial, ou seja, os grafos que são a união disjunta de
um ou mais grafos completos de tamanho igual, e os seus
complementares, os grafos de Turan. 5.3.2 Exemplos
Um grafo fortemente regular é um grafo distância-regular • O grafo de Shrikhande é um gfr(16,6,2,2) que não
com diâmetro 2, mas somente se μ não é zero. é um grafo distância-transitivo.
• O ciclo de comprimento 5 é um gfr(5,2,0,1).
5.3.1 Propriedades • O grafo de Petersen é um gfr(10,3,0,1).
• Os quatro parãmetros em um grs(v,k,λ,μ) não são • Os grafos de Chang são gfr(28,12,6,4).
independentes, como é fácil mostrar que:
• O grafo de Hoffman–Singleton é um gfr(50,7,0,1).
(v − k − 1)µ = k(k − λ − 1) • O grafo de Higman–Sims é um gfr(100,22,0,4).
50 CAPÍTULO 5. AUTOMORFISMO DE GRAFOS

• Os grafos de Paley de ordem q são gfr(q, (q − 1)/2,


vértices adjacentes a w e à distância j a partir de v é o
(q − 5)/4, (q − 1)/4. mesmo. Todo grafo distância-transitivo é distância re-
gular. Com efeito, grafos distância-regular foram intro-
• O grafo de rook quadrado n × n é um gfr(n2 , 2n − duzidos como uma generalização combinatória de grafos
2, n − 2, 2). distância-transitivos, tendo as propriedades de regulari-
dade numérica do último, sem ter necessariamente um
• O grafo de Brouwer–Haemers é um gfr(81,20,1,6).
grande grupo de automorfismo.
• O grafo de Schläfli é um gfr(27,16,10,8). Alternativamente, um grafo distância-regular é um
grafo para o qual existem inteiros bᵢ,cᵢ,i=0,...,d tais que
para quaisquer dois vértices x, y em G e distância
5.3.3 Bibliografia i=d(x,y), há exatamente cᵢ vizinhos de y em Gᵢ-₁(x) e bᵢ
vizinhos de y em Gᵢ₊₁(x), onde Gᵢ(x) é o conjunto de vérti-
• A.E. Brouwer, A.M. Cohen, and A. Neumaier
ces y de G com d(x,y)=i (Brouwer et al. 1989, p. 434).[1]
(1989), Distance Regular Graphs. Berlin, New
O array de inteiros caracterizando um grafo distância re-
York: Springer-Verlag. ISBN 3-540-50619-5,
gular é conhecido como o seu array de interseção.
ISBN 0-387-50619-5
Um grafo distância-regular com diâmetro 2 é fortemente
• Chris Godsil and Gordon Royle (2004), Algebraic regular, e reciprocamente (a menos que o grafo seja des-
Graph Theory. New York: Springer-Verlag. ISBN conexo).
0-387-95241-1

5.4.1 Números Intersecção


5.3.4 Ligações externas
É usual utilizar a seguinte notação para um grafo
• Eric W. Weisstein, Mathworld artigo com numero- distância-regular G. O número de vértices é n. O número
sos exemplos. de vizinhos de w (Isto é, os vértices adjacentes a w) cuja
distância de v é i, i + 1, e i − 1 é denotada por ai, bi, e ci,
• Gordon Royle, Lista dos maiores grafos e famílias.
respectivamente; estes são os números de intersecção
• Andries E. Brouwer, Parametros de grafos forte- de G. Obviamente, a0 = 0, c0 = 0, e b0 é igual a k, o grau
mente regulares. de qualquer vértice. Se G tem um diâmetro finito, então
d denota o diâmetro enós temos bd = 0. Também temos
que ai+bi+ci= k
5.4 Grafo distância-regular Os numeros ai, bi, e ci são frequentemente mostrados em
um array de três linhas.

 
− c1 ··· cd−1 cd 
a0 a1 ··· ad−1 ad ,
 
b0 b1 ··· bd−1 −

chamado o array de intersecção de G. Eles podem ser


formados também por uma matriz tridiagonal

 
a0 b0 0 ··· 0 0
 c1 a1 b1 ··· 0 0 
 
0 c2 a2 ··· 0 0 
 
B :=  . .. .. .. .. ,
 .. . . . . 
 
0 0 0 ··· ad−1 bd−1 
0 0 0 ··· cd ad

chamada de matriz de intersecção.

O grafo de Shrikhande, um grafo distância-regular. 5.4.2 Matrizes de adjacência distância


No campo da matemática da teoria dos grafos, um grafo Suponha que G é um grafo distância-regular conexo. Para
distância-regular é um grafo regular tal que para quais- cada distância i = 1, ..., d, podemos formar um grafo Gi
quer dois vértices v e w a uma distância i o número de no qual os vértices são adjacentes se sua distância em G é
5.5. GRAFO DISTÂNCIA-TRANSITIVO 51

igual a i. Façamos Ai ser a matriz de adjacência de Gi. Por 5.5 Grafo distância-transitivo
exemplo, A1 é a matriz de adjacência A de G. Além disso,
seja A0 = I, a matriz identidade. Isto nos dá d + 1 matrizes No campo da matemática da teoria dos grafos, um grafo
A0 , A1 , ..., Ad, chamadas as matrizes de distância de G. distância-transitivo é um grafo tal que, dados dois vér-
A soma é a matriz J em que cada entrada é 1. Há uma tices quaisquer v e w em qualquer distância i, e quais-
fórmula de produto importante: quer outros dois vértices x e y à mesma distância, há um
automorfismo do grafo que carrega v para x e w para y.
Um grafo distância-transitivo é vértice-transitivo e
AAi = ai Ai + bi Ai+1 + ci Ai−1 . simétrico bem como distância-regular.
A partir desta fórmula resulta que cada Ai é uma função Um grafo distância-transitivo é interessante, em parte,
polinomial de A, de grau i, e que A satisfaz um polinô- porque tem um grande grupo de automorfismo. Alguns
mio de grau d + 1. Além disso, A tem exatamente d + 1 exemplos interessantes de grupos finitos são os grupos de
autovalores distintos, dos quais o maior é k, o grau. automorfismos de grafos distância-transitivos, especial-
mente daqueles cujo diâmetro é de 2.
As matrizes de distância abrangem um subespaço veto-
rial do espaço vetorial de todas n × n matrizes reais. É Grafos distância-transitivos foram definidos primeira-
um fato notável que o produto Ai Aj de quaisquer duas mente em 1971 por Norman L. Biggs e D. H. Smith,
matrizes de distância é uma combinação linear das ma- que mostraram que existem apenas 12 grafos distância-
trizes de distância: transitivos trivalentes finitos. São eles:
Independente em 1969, um grupo de russos liderados por
Georgy Adelson-Velsky mostrou que existem grafos que

d são distância-regulares, mas não distância-transitivos. O
Ai Aj = pkij Ak . único grafo deste tipo com um grau três é o Tutte 12-
k=0 gaiola de 126 vértices. O menor grafo distância-regular
que não é a distância-transitivo é o grafo de Shrikhande.
Isto significa que as matrizes de distância geram um
Listas completas de grafos distância-transitivos são co-
esquema de associação. A teoria dos esquemas de associ-
nhecidas para alguns graus maiores do que três, mas a
ação é fundamental para o estudo dos gráficos de distân-
classificação de grafos distância-transitivos com graus de
cia regular. Por exemplo, o fato de que Ai é uma função
vértice arbitrariamente grandes continua em aberto.
polinomial de A é um fato sobre os esquemas de associ-
ação. A mais simples família de exemplos assintótica de gra-
fos distância-transitivos são os grafos Hipercubo. Outras
famílias são os grafos cubo dobrado e os grafos torre qua-
5.4.3 Exemplos drados. Todas essas três famílias têm arbitrariamente um
grau elevado.
• Grafos completos são distância regular com diâme-
tro 1 e grau v−1.
5.5.1 Referências
• Ciclos C₂d₊₁ de comprimento ímpar são distância
regular com k = 2 e diâmetro d. Os números de Primeiros trabalhos
intersecção ai = 0, bi = 1, e ci = 1, exceto para os
casos usuais especiais (ver acima) e cd = 2.
• Adel’son-Vel’skii, G. M.; Veĭsfeĭler, B. Ju.; Le-
• Todos os grafos de Moore, em particular o grafo de man, A. A.; Faradžev, I. A. (1969), “An exam-
Petersen e o grafo de Hoffman–Singleton, são dis- ple of a graph which has no transitive group of au-
tância regulares. tomorphisms”, Doklady Akademii Nauk SSSR 185:
975–976, MR0244107.
• grafos fortemente regulares são distância regular.
• Biggs, Norman (1971), “Intersection matrices for
• Grafos ímpares são distância regular. linear graphs”, Combinatorial Mathematics and its
Applications (Proc. Conf., Oxford, 1969), London:
Academic Press, pp. 15–23, MR0285421.
5.4.4 Referências

[1] BROUWER, Andries E.;COHEN, A.M.; NEUMAIER, • Biggs, Norman (1971), Finite Groups of Auto-
A. (1989). Distance Regular Graphs (Berlin, New York: morphisms, London Mathematical Society Lecture
Springer-Verlag). p. 434. ISBN 3-540-50619-5, ISBN Note Series, 6, London & New York: Cambridge
0-387-50619-5. University Press, MR0327563.
52 CAPÍTULO 5. AUTOMORFISMO DE GRAFOS

• Biggs, N. L.; Smith, D. H. (1971), “On triva-


lent graphs”, Bulletin of the London Mathemati-
cal Society 3: 155–158, doi:10.1112/blms/3.2.155,
MR0286693.

• Smith, D. H. (1971), “Primitive and imprimi-


tive graphs”, The Quarterly Journal of Mathe-
matics, Oxford, Second Series 22: 551–557,
doi:10.1093/qmath/22.4.551, MR0327584.

Pesquisas

• Biggs, N. L. (1993), “Distance-Transitive Graphs”,


Algebraic Graph Theory (2nd ed.), Cambridge Uni-
versity Press, pp. 155–163, chapter 20.

• Van Bon, John (2007), “Finite primitive


distance-transitive graphs”, European Jour- O grafo de Petersen é um grafo (cúbico) simétrico. Qualquer
nal of Combinatorics 28 (2): 517–532, par de vértices ligados pode ser mapeado para outro por um
doi:10.1016/j.ejc.2005.04.014, MR2287450. automorfismo, uma vez que qualquer anel de cinco vértices pode
ser mapeado para qualquer outro.
• Brouwer, A. E.; Cohen, A. M.; Neumaier, A.
(1989), “Distance-Transitive Graphs”, Distance-
Em outras palavras, um grafo é simétrico se seu grupo
Regular Graphs, New York: Springer-Verlag, pp.
de automorfismo age transitivamente em pares ordenados
214–234, chapter 7.
de vértices ligados (isto é, sobre as arestas consideradas
como tendo um sentido).[2] Tal grafo é chamado às vezes
• Cohen, A. M. Cohen (2004), “Distance-transitive também 1-arco-transitivo[2] ou flag-transitivo.[3]
graphs”, in Beineke, L. W.; Wilson, R. J., Topics
in Algebraic Graph Theory, Encyclopedia of Mathe- Por definição (ignorando u1 e u2 ), um grafo simé-
matics and its Applications, 102, Cambridge Uni- trico sem[1]vértices isolados deve também ser vértice-
versity Press, pp. 222–249. transitivo. Como a definição acima mapeia uma aresta
a outra, um grafo simétrico também deve ser aresta-
transitivo. Contudo, um grafo aresta-transitivo não pre-
• Godsil, C.; Royle, G. (2001), “Distance-Transitive cisa ser simétrico, uma vez que a—b pode mapear a c—
Graphs”, Algebraic Graph Theory, New York: d, mas não a d—c. Grafos simétricos, por exemplo, aão
Springer-Verlag, pp. 66–69, section 4.5. aresta-transitivos e regulares, mas não vértice-transitivos.
Todo grafo simétrico conexo deve, portanto, ser tanto
• Ivanov, A. A. (1992), “Distance-transitive graphs
vértice-transitivo quanto aresta-transitivo, e o inverso é
and their classification”, in Faradžev, I. A.; Ivanov,
verdadeiro para grafos de grau ímpar.[3] No entanto, para
A. A.; Klin, M. et al., The Algebraic Theory of Com-
graus pares, existem grafos conectados que são vértice-
binatorial Objects, Math. Appl. (Soviet Series), 84,
transitivos e aresta-transitivos, mas não simétricos.[4] Tais
Dordrecht: Kluwer, pp. 283–378, MR1321634.
grafos são denominados meio-transitivos.[5] O menor
grafo conexo meio-transitiva é o grafo de Holt, com grau
4 e 27 vértices.[1][6] De forma confusa, alguns autores
5.6 Grafo simétrico usam o termo “grafo simétrico” para significar um grafo
que é vértice-transitivo e aresta-transitivo, ao invés de um
No campo da matemática da teoria dos grafos, um grafo grafo arco-transitivo. Tal definição inclui grafos meio-
G é simétrico (ou arco-transitivo) se, dados quaisquer transitivos, que são excluídos pela definição acima.
dois pares de vértices ligados u1 —v1 e u2 —v2 de G , há Um grafo distância-transitivo é aquele em que em vez de
um automorfismo considerar pares de vértices ligados (i.e. vértices a uma
distância de um), a definição abrange dois pares de vér-
f : V(G) → V(G) tices, cada um à mesma distância. Tais grafos são auto-
maticamente simétricos, por definição.[1]
tal que Um t-arco é definido como uma sequência de t+1 vér-
tices ligados, com quaisquer vértices repetidos estando
f(u1 ) = u2 and f(v1 ) = v2 .[1] a mais de 2 passos distante. Um grafo t-transitivo é
5.7. GRAFO MEIO-TRANSITIVO 53

um grafo tal que o grupo de automorfismo atua transi- 5.6.3 Ligações externas
tivamente nos t-arcos, mas não nos (t+1)-arcos. Uma vez
que os 1-arcos são simplesmente arestas, qualquer grafo • grafos cúbicos simétricos (The Foster Census)
simétrico de grau 3 ou superior tem que ser t-transitivo
para algum t, e o valor de t pode ser usado para além • grafos trivalentes (cúbicos) simétricos com até 2048
disso classificar grafos simétricos. O cubo é 2-transitivo, vértices
por exemplo.[1]

5.6.1 Exemplos
5.7 Grafo meio-transitivo

Combinando a condição de simetria com a restrição de No campo da matemática da teoria dos grafos, um grafo
que os grafos sejam cúbicos (ou seja, todos os vértices meio-transitivo é um grafo que é tanto vértice-transitivo
tem grau 3) resulta abolutamente uma forte condição, e quanto aresta-transitivo, mas não é simétrico.[1] Em ou-
tais grafos são raros o bastante para serem citados. O tras palavras, um grafo é meio-transitivo, se o seu grupo
censo de Foster e suas extensões fornecem tais listas.[7] de automorfismo atua transitivamente em ambos os seus
O censo de Foster foi iniciado na década de 1930 por vértices e arestas, mas não em pares ordenados de vérti-
Ronald M. Foster enquanto ele era um contratado pela ces ligados.
Bell Labs,[8] e em 1988 (quando Foster estava com 92
anos de idade[1] ) o então censo de Foster corrente (lis-
tando todos os grafos cúbicos simétricos até 512 vértices)
foi publicado em forma de livro.[9]

5.6.2 Referências
[1] BIGGS, Norman (1993). Algebraic Graph Theory 2ª ed.
(Cambridge: Cambridge University Press). p. 118–140.
ISBN 0-521-45897-8.

[2] GODSIL, Chris; ROYLE, Gordon (2001). Algebraic


Graph Theory (New York: Springer). p. 59. isbn 0-387-
95220-9.

[3] BABAI, L.; GRAHAM, R. (ed.); GROETSCHEL,


M.(ed.); LOVASZ, L.(ed.) (1996). «Automorphism
groups, isomorphism, reconstruction». Handbook of
Combinatorics Elsevier [S.l.]
O grafo de Holt é o menor grafo meio-transitivo. A falta de si-
[4] BOUWER, Z.. (1970). “Vertex and Edge Transitive, But metria reflexiva neste desenho destaca o fato de que as arestas
Not 1-Transitive Graphs”. Canad. Math. Bull. 13: 231– não são equivalentes aos suas inversas.
237.

[5] GROSS, J.L.; YELLEN, J. (2004). Handbook of Graph Todo grafo simétrico conectado deve ser vértice-
Theory CRC Press [S.l.] p. 491. ISBN 1584880902. transitivo e aresta-transitivo, e o inverso é verdadeiro
para grafos de grau ímpar,[2] de modo que os grafos
[6] HOLT, Derek F.. (1981). “A graph which is edge tran- meio-transitivos de grau ímpar não existem. Contudo,
sitive but not arc transitive”. Journal of Graph Theory 5 existem grafos meio-transitivos de grau par.[3] O menor
(2): 201–204. DOI:10.1002/jgt.3190050210.. grafo meio-transitivo é o grafo de Holt, com grau 4 e 27
vértices.[4][5]
[7] Marston Conder, Trivalent symmetric graphs on up to 768
vertices, J. Combin. Math. Combin. Comput, vol. 20, pp.
41–63
5.7.1 Referências
[8] Foster, R. M. “Geometrical Circuits of Electrical
Networks.” Transactions of the American Institute of Elec- [1] GROSS, J.L. and Yellen, J. (2004). Handbook of Graph
trical Engineers 51, 309–317, 1932. Theory CRC Press [S.l.] p. 491. ISBN 1584880902.

[9] “The Foster Census: R.M. Foster’s Census of Connected [2] BABAI, L.;GRAHAM, R. (ed.); GROETSCHEL, M.;
Symmetric Trivalent Graphs”, by Ronald M. Foster, I.Z. LOVASZ, L. (1996). «Automorphism groups, iso-
Bouwer, W.W. Chernoff, B. Monson and Z. Star (1988) morphism, reconstruction». Handbook of Combinatorics
ISBN 0919611192 Elsevier [S.l.]
54 CAPÍTULO 5. AUTOMORFISMO DE GRAFOS

[3] Bouwer, Z. “Vertex and Edge Transitive, But Not 1- nik, os quatro menores grafos cúbicos semissimétricos
Transitive Graphs.” Canad. Math. Bull. 13, 231–237, possíveis, após o grafo de Gray são o grafo de Iofinova-
1970. Ivanov em 110 vértices, o grafo de Ljubljana em 112
[4] BIGGS, Norman (1993). Algebraic Graph Theory 2ª ed. vértices,[3] um grafo de 120 vértices com cintura 8 e a
(Cambridge: Cambridge University Press). ISBN 0-521- gaiola-12 de Tutte.[4]
45897-8.
[5] HOLT, Derek F.. (1981). “A graph which is edge tran- 5.8.1 Referências
sitive but not arc transitive”. Journal of Graph Theory 5
(2): 201–204. DOI:10.1002/jgt.3190050210.. [1] FOLKMAN, J. (1967). “Regular line-symmetric
graphs”. Journal of Combinatorial Theory 3: 215–232.
DOI:10.1016/S0021-9800(67)80069-3.
5.8 Grafo semissimétrico [2] BOUWER, I. Z.. (1968). “An edge but not vertex transi-
tive cubic graph”. Bulletin of the Canadian Mathematical
Society 11: 533–535.

[3] Conder, M.; Malnič, A.; Marušič, D.; Pisanski, T.; Potoč-
nik, P. (2002), “The Ljubljana Graph”, IMFM Preprints
(Ljubljana: Institute of Mathematics, Physics and Me-
chanics) 40 (845), http://www.imfm.si/preprinti/PDF/
00845.pdf

[4] Conder, Marston; Malnič, Aleksander; Marušič, Dragan;


Potočnik, Primož. (2006). “A census of semisymmetric
cubic graphs on up to 768 vertices”. Journal of Algebraic
Combinatorics 23: 255–294. DOI:10.1007/s10801-006-
7397-3..

5.9 Grafo aresta-transitivo


No campo da matemática da teoria dos grafos, um grafo
aresta-transitivo é um grafo G tal que, dadas duas ares-
O grafo de Folkman, o menor grafo semissimétrico. tas e1 e e2 de G, há um automorfismo de G que mapeia
e1 em e2 .[1]
No campo da matemática da teoria dos grafos, um grafo Em outras palavras, um grafo é aresta-transitivo, se o seu
semissimétrico é um grafo não-direcionado que é aresta- grupo de automorfismo atua transitivamente em suas ares-
transitivo e regular, mas não é vértice transitivo. tas.
Em outras palavras, um grafo é semissimétrico se cada
vértice tem o mesmo número de arestas incidentes, e 5.9.1 Exemplos e propriedades
há uma simetria tomando qualquer das suas arestas para
quaisquer outras de suas arestas, mas há algum par de Grafos aresta-transitivos incluem qualquer grafo bipar-
vértices que não podem ser mapeados entre si por uma tido completo Km,n , e qualquer grafo simétrico, como
simetria. Um grafo semissimétrico deve ser bipartido e os vértices e as arestas do cubo.[1] Grafos simétricos são
seu grupo de automorfismo deve agir transitivamente em també vértice-transitivo (se eles são conectados), mas no
cada um dos dois conjuntos de vértices da bipartição. No
geral grafos aresta-transitivos não precisam ser vértice-
diagrama da direita, os vértices verdes não podem ser ma-
transitivos. O grafo Gray é um exemplo de um grafo que é
peados para os vermelhos por qualquer automorfismo. aresta-transitivo, mas não vértice-transitivo. Todos estes
Grafos semissimétricos foram primeiramente estudados grafos são bipartidos,[1] e, portanto, podem ser coloridos,
por Jon Folkman em 1967, que descobriu o menor grafo com apenas duas cores.
semissimétrico, o grafo de Folkman em 20 vértices[1] . Um grafo aresta-transitivo que també é regular, mas não
O menor grafo cúbico semissimétrico é o grafo de Gray vértice-transitivo, é chamado semi-simétrico. O grafo
em 54 vértices. Foi observado pela primeira vez que era Gray mais uma vez dá um exemplo.
semissimétrico por Bouwer em 1968.[2] Foi provado ser o
menor grafo cúbico semissimétrico por Dragan Marušič
e Aleksander Malnič[2] . 5.9.2 Referências
Todos os grafos cúbicos semissimétricos de até 768 vér- [1] Biggs, Norman (1993). Algebraic Graph Theory 2ª ed.
tices são conhecidos. Segundo Malnič, Marušič e Potoč- (Cambridge: Cambridge University Press). p. 118. ISBN
5.10. GRAFO VÉRTICE-TRANSITIVO 55

As arestas do tetraedro truncado formam um grafo vértice-


transitivo (também um grafo de Cayley) que não é simétrico.

de Cayley finitos (como ciclos de cubos conectados) tam-


O grafo Gray é aresta-transitivo e regular, mas não é vértice- bém são vértice-transitivos, como o são os vértices e ares-
transitivo. tas dos sólidos de Arquimedes (embora apenas dois deles
sejam simétricos).
0-521-45897-8.
5.10.2 Propriedades

5.10 Grafo vértice-transitivo A conectividade de arestas de um grafo vértice-transitivo


é igual ao grau d, enquanto a conectividade de vértices
será, no mínimo, 2(d+1)/3.[2] Se o grau é de 4 ou menos,
No campo da matemática da teoria dos grafos, um grafo
ou o grafo também é aresta-transitivo, ou o grafo é um
vértice-transitivo é um grafo G tal que, dados quaisquer
grafo de Cayley mínimo, então a conectividade de vértice
dois vértices v1 e v2 de G, existe algum automorfismo
também será igual a d.[3]

f : V (G) → V (G) 5.10.3 Exemplos infinitos


tal que Grafos vértice-transitivos finitos incluem:

• caminhos infinitos (infinitos em ambas as direções)


f (v1 ) = v2 . • árvores regulares infinitas, por exemplo o grafo de
Cayley dos grupos livres
Em outras palavras, um grafo é vértice-transitivo se o
seu grupo de automorfismo atua transitivamente em seus • grafos de Cayley infinitos
[1]
vértices. Um grafo é vértice-transitivo se e somente se • o grafo de Rado
seu grafo complementar é, uma vez que as ações do grupo
são idênticas. Dois grafos vértice-transitivos contáveis são chamados
Todo grafo simétrico, sem vértices isolados é vértice- quase-isométricos se a razão de suas funções distância é
transitivo, e cada grafo vértice-transitivo é regular. No delimitada a partir de baixo e de cima. Uma conjectura
entanto, nem todos os grafos vértice-transitivos são simé- conhecida diz que todo grafo infinito vértice-transitivo
tricos (por exemplo, as arestas do tetraedro truncado), e é quase-isométrico a um grafo de Cayley. Um contra-
[4]
nem todos os grafos regulares são vértice-transitivos (por exemplo foi proposto por Diestel e Leader. Mais recen-
exemplo, o grafo de Frucht). temente, Eskin, Fisher e Whyte confirmaram o contra-
exemplo.[5]

5.10.1 Exemplos finitos


5.10.4 Ver também
Grafos vértice-transitivos finitos incluem os grafos simé-
• grafo aresta-transitivo
tricos (como o grafo de Petersen, o grafo de Heawood
e os vértices e arestas dos sólidos platônicos). Os grafos • grafo semi-simétrico
56 CAPÍTULO 5. AUTOMORFISMO DE GRAFOS

5.10.5 Referências • A cada elemento g de G é atribuído um vértice: o


conjunto de vértices V (Γ) de Γ é identificado com
[1] Godsil, Chris; Royle, Gordon (2001), Algebraic Graph G.
Theory, Graduate Texts in Mathematics, 207, New York:
Springer-Verlag • A cada gerador s de S é atribuída uma cor cs .
[2] Godsil, C. and Royle, G. (2001), Algebraic Graph Theory,
Springer Verlag
• Para qualquer g ∈ G, s ∈ S, os vértices corres-
pondentes aos elementos g e gs são unidos por uma
[3] Babai, L. (1996), Technical Report TR-94-10, University aresta de cor cs . Assim, o conjunto de arestas E(Γ)
of Chicago consiste em pares da forma (g, gs), com s ∈ S pro-
porcionando a cor.
[4] DIESTEL, Reinhard; LEADER, Imre. (2001). "A
conjecture concerning a limit of non-Cayley graphs".
Journal of Algebraic Combinatorics 14: 17–25. Na teoria geométrica de grupos, o conjunto S é geral-
DOI:10.1023/A:1011257718029. mente assumido ser finito, simétrico, isto é S = S −1 ,
e não contendo o elemento identidade do grupo. Neste
[5] Eskin, Alex; Fisher, David; Whyte, Kevin (2005), Quasi-
caso, o grafo de Cayley incolor é um grafo comum: suas
isometries and rigidity of solvable groups, Arxiv
arestas não são orientadas e não contém laços se e so-
mente se 1 ∈/S.

5.11 Grafo de Cayley


5.11.2 Exemplos

• Suponha que G = Z é o grupo cíclico infinito e


o conjunto S consiste em um gerador padrão e sua
inversa (−1 na notação aditiva), então o grafo de
Cayley é uma cadeia infinita.
b
• Similarmente, se G = Zn é o grupo cíclico finito de
ordem n e o conjunto S consiste de dois elementos,
e a o gerador padrão de G e o seu inverso, então o grafo
de Cayley é o ciclo Cn .

• O grafo de Cayley do produto direto de grupos é


o produto cartesiano dos grafos de Cayley corres-
pondentes. Assim, o grafo de Cayley do grupo abe-
liano Z2 com o conjunto de geradores que con-
siste em quatro elementos (±1, 0), (0, ±1) é a grade
no plano R2 , enquanto que para o produto direto
Zn × Zm com geradores semelhantes o grafo de
O grafo de Cayley do grupo livre em dois geradores a e b Cayley é a grade finita n × m em um toro.

Em matemática, área da teoria dos grafos, um grafo


de Cayley, também conhecido como grafo colorido de
• O grafo Cayley do grupo diedro D4 em dois gera-
Cayley, diagrama de Cayley, diagrama de grupo, ou
dores α e β é descrito à esquerda. As setas ver-
grupo colorido[1] é um grafo que codifica a estrutura abs-
melhas representam a multiplicação à esquerda pelo
trata de um grupo. Sua definição é sugerida pelo teorema
elemento α. Uma vez que o elemento β é auto-
de Cayley (nomeado em honra a Arthur Cayley) e usa um
inversível, as linhas azuis que representam a multi-
conjunto de geradores específico, usualmente finito, para
plicação à esquerda pelo elemento β são não direci-
o grupo. É um instrumento central em combinatória e
onadas. Portanto, o grafo é misto: ele tem oito vér-
teoria geométrica de grupos.
tices, oito setas, e quatro arestas. A tabela Cayley do
grupo D4 pode ser derivada a partir da apresentação
do grupo
5.11.1 Definição
Suponha que G seja um grupo e S seja um conjunto de
geradores. O grafo de Cayley Γ = Γ(G, S) é um grafo
direcionado colorido construído como se segue[2] ⟨α, β|α4 = β 2 = e, αβ = βα3 ⟩.
5.12. GRAFO ANTISSIMÉTRICO 57

Um grafo antissimétrico.

O grafo de Cayley do grupo diedro D4 em dois geradores α e β


grafos, e em grafos de implicação usados para resolver
eficientemente o problema da 2-satisfatibilidade.
5.11.3 Ver também
• Grafo vértice-transitivo
5.12.1 Definição

• Conjunto gerador de um grupo Conforme definido, por exemplo, por Goldberg e Kar-
zanov (1996)[2] , um grafo antissimétrico G é um grafo
direcionado, junto com uma função σ mapeando vérti-
5.11.4 Ligações externas ces de G a outros vértices de G, satisfazendo as seguintes
propriedades:
• Diagramas Cayley
1. Para cada vértice v, σ(v) ≠ v

5.11.5 Referências 2. Para cada vértice v, σ(σ(v)) = v

[1] Wilhelm Magnus, Abraham Karrass, Donald Solitar 3. Para cada aresta (u,v), (σ(v),σ(u)) também deve ser
(1976). Combinatorial Group Theory Dover Publications, uma aresta.
Inc [S.l.]
Pode-se usar a terceira propriedade para estender σ para
[2] CAYLEY, Arthur. (1878). “Desiderata and suggestions: uma função de inversão de orientação das arestas de G.
No. 2. The Theory of groups: graphical representation”.
Amer. J. Math. 1 (2): 174–176. O grafo transposto de G é o grafo formado pela inversão
de todas as arestas de G, e σ define um isomorfismo de
grafos de G para a sua transposição. No entanto, em um
grafico anti-simétrico, é adicionalmente necessário que o
5.12 Grafo antissimétrico isomorfismo forme pares de cada vértice com um vértice
diferente, ao invés de permitir a um vértice ser mapeado
No campo da matemática da teoria dos grafos, um grafo para si pelo isomorfismo ou agrupar mais de dois vértices
antissimétrico é um grafo orientado que é isomórfico ao em um ciclo de isomorfismos.
seu próprio grafo transposto, o grafo formado pela inver-
são de todas as suas arestas. O isomorfismo necessita ser Um caminho ou um ciclo em um grafo anti-simétrico é
uma involução sem nenhum ponto fixo. dito ser regular se, para cada vértice v do caminho ou
do ciclo, o vértice correspondente σ(v) não faz parte do
Grafos antissimétricos foram primeiramente introduzi- caminho ou do ciclo.
dos sob o nome de “dígrafos antissimétricos” por Tutte,
1967[1] . Eles surgiram quando da modelagem da busca
de caminhos alternados e ciclos alternados em algorit- 5.12.2 Grafos switch e grafos bipartidos
mos para encontrar acoplamentos em grafos, em testes
se um padrão still life no jogo da vida, desenvolvido pelo um grafo anti-simétrico pode de forma equivalente ser
matemático britânico John Horton Conway, pode ser di- definido em termos de um grafo switch (para usar a termi-
vidido em componentes mais simples, em desenho de nologia de Cook, 2003[3] ), um grafo não direcionado em
58 CAPÍTULO 5. AUTOMORFISMO DE GRAFOS

que as arestas incidentes a cada vértice são divididas em


dois subgrupos. Cada vértice do grafo switch corresponde
a dois vértices do grafo antissimétrico, e cada aresta do
grafo alternado corresponde a duas arestas do grafo antis-
simétrico. Esta equivalência é a utilizada por Goldberg e
Karzanov (1996)[2] para modelar problemas de acopla-
mento em termos de grafos antissimétricos; nesta aplica-
ção, os dois subconjuntos de arestas em cada vértice são
as arestas não acopladas e as arestas acopladas. Cook vi-
sualiza os vértices de um grafo switch como pontos onde
várias faixas de um trilho de trem se reúnem: se um trem
entra em um switch através de um trilho que vem de uma Os 8 grafos assimétricos de 6-vértices
direção, deve sair através de um trilho na outra direção.
O problema de se encontrar curvas suaves que não se
auto-interceptam entre os pontos dados em um trilho de
trem vem em testar se determinados tipos de desenhos de
grafos são válidos[4] e pode ser modelado como a busca
de um caminho comum em um grafo anti-simétrico.
Um conceito relacionado é o de grafo bidirecionado de
Edmonds e Johnson, 1969[5] , um grafo em que cada uma
das duas extremidades de cada aresta pode ser tanto uma
cabeça ou uma cauda, independentemente do outro lado.

5.12.3 Referências
[1] TUTTE, W. T.. (1967). “Antisymmetrical digraphs”.
Canadian Journal of Mathematics 19: 1101–1117.

[2] GOLDBERG, Andrew V.; KARZANOV, Ale-


xander V.. (1996). “Path problems in skew-
symmetric graphs”. Combinatorica 16 (3): 353–382. O grafo Frucht, o menor grafo cúbico assimétrico.
DOI:10.1007/BF01261321.

[3] COOK, Matthew (2003). “Still life theory”, New Construc-


tions in Cellular Automata Santa Fe Institute Studies in the quaisquer dois vértices u e v são adjacentes se e somente
Sciences of Complexity, Oxford University Press [S.l.] p. se p(u) e p(v) são adjacentes. O mapeamento identidade
93–118. de um grafo em si é sempre um automorfismo, e é cha-
mado de automorfismo trivial do grafo. Um grafo assi-
[4] HUI, Peter; SCHAEFER, Marcus; ŠTEFANKOVIČ, Da- métrico é um grafo para os quais não existem outros au-
niel (2004). Proc. 12th Int. Symp. Graph Drawing. Lec- tomorfismos.
ture Notes in Computer Science 3383 Springer-Verlag
[S.l.] p. 318–328. Parâmetro desconhecido |contribui-
ção= ignorado (Ajuda)
5.13.1 Exemplos
[5] EDMONDS, Jack; JOHNSON, Ellis L.. . “Combinato-
rial Structures and their Applications: Proceedings of the O menor grafo não trivial assimétrico tem 6 vértices[1] O
Calgary Symposium, June 1969”.. Reimpresso em Com- menor grafo regular assimétrico têm dez vértices; existem
binatorial Optimization — Eureka, You Shrink!, Springer- grafos assimétricos de dez vértices são 4-regulares e 5-
Verlag, Lecture Notes in Computer Science 2570, 2003,
regulares[2][3] .
pp. 27–30, DOI:10.1007/3-540-36478-1 3.
O menor grafo cúbico assimétrico é o grafo de Frucht de
doze vértices descoberto em 1939.[4] De acordo com uma
5.13 Grafo assimétrico versão reforçada do teorema de Frucht, há infinitamente
mais grafos cúbicos assimétricos.
No campo da matemática da teoria dos grafos, um grafo
não direcionado é chamado um grafo assimétrico se não 5.13.2 Propriedades
tiver simetrias não triviais.
Formalmente, um automorfismo de um grafo é uma A classe de grafos assimétrica é fechada em
permutação p de seus vértices com a propriedade que complementos: um grafo G é assimétrico se e so-
5.13. GRAFO ASSIMÉTRICO 59

mente se seu complemento o é.[1] Qualquer grafo


assimétrico de n-vértices pode ser feito simétrico,
adicionando e removendo um total de, no máximo n/2 +
o(n) arestas.[1]

5.13.3 Grafos aleatórios


A proporção de grafos sobre n vértices com automorfismo
não trivial tende a zero a medida que n cresce, que é in-
formalmente expressado como "quase todos grafos fini-
tos são assimétricos”. Em contraste, uma vez mais in-
formalmente, “quase todos os grafos infinitos são simé-
tricos”. Mais especificamente, grafos aleatórios infinitos
e contáveis no modelo Erdős–Rényi são, com probabili-
dade 1, isomórficos ao altamente simétrico grafo Rado.[1]

5.13.4 Árvores
A menor árvore assimétrica tem sete vértices: consiste
de três caminhos de comprimentos de 1, 2 e 3, ligados a
um terminal comum[5] Em contraste com a situação dos
grafos, quase todas as árvores são simétricas. Em parti-
cular, se uma árvore é escolhida de forma uniforme ale-
atoriamente entre todas as árvores em n nós rotulados,
em seguida, com probabilidade tendendo a 1 quando n
aumenta, a árvore terá cerca de duas folhas adjacentes
ao mesmo nó e terá simetrias trocando entre essas duas
folhas.[1]

5.13.5 Referências
[1] Erdős, P.; Rényi, A. (1963), “Asymmetric
graphs”, Acta Mathematica Hungarica 14
(3): 295–315, doi:10.1007/BF01895716,
http://www.math-inst.hu/~{}p_erdos/1963-04.pdf.

[2] Baron, G.; Imrich, W. (1969), “Asymmetrische re-


guläre Graphen”, Acta Mathematica Academiae Scientia-
rum Hungaricae 20: 135–142, doi:10.1007/BF01894574.

[3] Gewirtz, Allan; Hill, Anthony; Quintas, Louis V. (1969),


“The minimal number of points for regular asymmetric
graphs”, Universidad Técnica Federico Santa Maria. Sci-
entia 138: 103–111.

[4] Frucht, R. (1939), “Herstellung von Graphen mit vorge-


gebener abstrakter Gruppe.” (em German), Compositio
Mathematica 6: 239–250, ISSN 0010-437X, http://www.
numdam.org/item?id=CM_1939__6__239_0

[5] Quintas, Louis V. (1967), “Extrema concerning asymme-


tric graphs”, Journal of Combinatorial Theory 3 (1): 57–
82, doi:10.1016/S0021-9800(67)80018-8.
Capítulo 6

Algoritmos em Grafos

6.1 Busca em largura

Percurso realizado pelo algoritmo

a ordem de chegada dos vértices. Dessa maneira, as vi-


sitas aos vértices são realizadas através da ordem de che-
gada na estrutura fila e um vértice que já foi marcado não
pode entrar novamente a esta estrutura.
Uma analogia muito conhecida (figura ao lado) para de-
monstrar o funcionamento do algoritmo é pintando os
Ordem dos vértices explorados na busca em largura vértices de branco, cinza e preto. Os vértices na cor
branca ainda não foram marcados e nem enfileirados, os
Na teoria dos grafos, busca em largura (ou busca em da cor cinza são os vértices que estão na estrutura fila e os
amplitude, também conhecido em inglês por Breadth- pretos são aqueles que já tiveram todos os seus vértices
First Search - BFS) é um algoritmo de busca em grafos vizinhos enfileirados e marcados pelo algoritmo.
utilizado para realizar uma busca ou travessia num grafo
e estrutura de dados do tipo árvore. Intuitivamente, você Tal mecanismo permite que se descubra todos os vértices
começa pelo vértice raiz e explora todos os vértices vi- a uma distância n do vértice raiz antes de qualquer outro
zinhos. Então, para cada um desses vértices mais próxi- vértice de distancia maior que n, sendo n o número de
mos, exploramos os seus vértices vizinhos inexplorados e arestas para atingir qualquer outro vértice no grafo con-
assim por diante, até que ele encontre o alvo da busca. siderado. Essa característica do algoritmo permite cons-
truir uma árvore de distâncias mínimas (menor número
de arestas) entre o vértice raiz e os demais, sendo que
6.1.1 Definição o vértice responsável por enfileirar o seu vizinho na cor
branca que será o vértice pai deste na representação em
Formalmente, uma busca em largura é um método de árvore gerada.
busca não-informada (ou desinformada) que expande e
examina sistematicamente todos os vértices de um grafo
direcionado ou não-direcionado. Em outras palavras, po- 6.1.2 Características
demos dizer que o algoritmo realiza uma busca exaus-
tiva num grafo passando por todas as arestas e vértices Complexidade de Tempo
do grafo. Sendo assim, o algoritmo deve garantir que ne-
nhum vértice ou aresta será visitado mais de uma vez e, Considerando um grafo representado em listas de adja-
para isso, utiliza uma estrutura de dados fila para garantir cência, o pior caso, aquele em que todos os vértices e

60
6.1. BUSCA EM LARGURA 61

arestas são explorados pelo algoritmo, a complexidade Vértices Marcados= ∅; Fila(F)=∅. Vértices Marcados=
de tempo pode ser representada pela seguinte expressão 6; Fila(F)=6. Vértices Marcados= 6,4; Fila(F)=6,4.
O(|E| + |V |) , onde |E| significa o tempo total gasto nas Vértices Marcados= 6,4; Fila(F)=4. Vértices Marca-
operações sobre todas as arestas do grafo onde cada ope- dos= 6,4,3; Fila(F)=4,3. Vértices Marcados= 6,4,3,5;
ração requer um tempo constante O(1) sobre uma aresta, Fila(F)=4,3,5. Vértices Marcados= 6,4,3,5; Fila(F)=3,5.
e |V | que significa o número de operações sobre todos Vértices Marcados= 6,4,3,5,2; Fila(F)=3,5,2. Vérti-
os vértices que possui uma complexidade constante O(1) ces Marcados= 6,4,3,5,2; Fila(F)=5,2. Vértices Mar-
para cada vértice uma vez que todo vértice é enfileirado cados= 6,4,3,5,2,1; Fila(F)=5,2,1. Vértices Marca-
e desenfileirado uma unica vez. dos= 6,4,3,5,2,1; Fila(F)=2,1. Vértices Marcados=
6,4,3,5,2,1; Fila(F)=1. Vértices Marcados= 6,4,3,5,2,1;
Fila(F)=∅.
Complexidade de Espaço

Quando o número de vértices no grafo é conhecido e 6.1.5 Exemplo 2


supondo-se a representação deste em listas de adjacência,
a complexidade de espaço do algoritmo pode ser repre- Aplicando o pseudocódigo nesse grafo de cidades alemãs
sentada por O(|V |) onde |V | representa o número total e iniciando o algoritmo na cidade de Frankfurt, repare
de vértices no grafo. que para montar a árvore da figura foi necessário gra-
var na figura apenas as arestas que são processadas na
primeira condição “se” do pseudocódigo (se w não está
6.1.3 Pseudocódigo marcado então). Caso as arestas desse exemplo não fos-
sem valoradas (como no primeiro exemplo) ficaria fácil
A seguir é apresentado um pseudocódigo do algoritmo encontrar a distância para o vértice raiz com o algoritmo
busca em largura para uma estrutura de dados grafo com busca em largura, mas, para o grafo deste exemplo (que
lista de adjacência. A letra F representa uma fila (FIFO) são valoradas) pesquise por Algoritmo de Dijkstra para
inicialmente vazia, G é o grafo em questão e s, v, w re- encontrar o menor caminho de um vértice a outro.
presentam vértices do grafo onde listaDeAdjacência re-
presenta a lista de adjacência de um vértice. Frankfurt
BuscaEmLargura escolha uma raiz s de G marque s
insira s em F enquanto F não está vazia faça seja v o 85 km217 km 173 km

primeiro vértice de F para cada w ∈ listaDeAdjacência


Mannheim Würzburg Stuttgart
de v faça se w não está marcado então visite aresta entre
v e w marque w insira w em F senao se w ∈ F entao
visite aresta entre v e w fim se fim para retira v de F fim 80 km 186 km 103 km 183 km Kassel
enquanto
Karlsruhe Erfurt Nürnberg

250 km 502 km
6.1.4 Exemplo 1
Augsburg 167 km

84 km

6 München

4 5
1 Exemplo de um mapa da Alemanha com algumas conexões entre
as cidades.

3 2 C

int BuscaEmLargura(Grafo *G, Fila *F, int raiz){ int


*verticesMarcados = (int*)malloc(G->NumVertices
Grafo exemplo 1 * sizeof(int));//vetor de vertices marcados int tam-
VerticesMarcados= 0; int vertice1; no_lista *p;
Seguindo os passos do pseudocódigo acima e iniciando verticesMarcados[0] = raiz;//marca raiz tamVerti-
no vértice 6 da figura ao lado, o algoritmo estará com a cesMarcados++; PoeVerticeNaFila(F , raiz); //poe
sequência de vértices marcados e a fila assim: raiz na fila while(!FilaVazia(F)){//enquanto a fila
62 CAPÍTULO 6. ALGORITMOS EM GRAFOS

} vListaNos[7] := 'E'; { P 8 } vListaNos[8] := 'P'; //


Frankfurt
Pesquisa por elementos na árvore… Writeln('A letra
“J” esta no no numero: '+ IntToStr(busca_Largura(2,
'J'))); Writeln('A letra “B” esta no no numero: '+
Mannheim Würzburg Kassel IntToStr(busca_Largura(1, 'B'))); Writeln('A letra “R”
esta no no numero: '+ IntToStr(busca_Largura(1,
'R'))); Writeln('A letra “P” esta no no numero: '+
IntToStr(busca_Largura(4, 'P'))); Writeln('A letra “Y”
Karlsruhe Nürnberg Erfurt München
esta no no numero: '+ IntToStr(busca_Largura(1,
'Y'))); Writeln('A letra “E” esta no no numero: '+
IntToStr(busca_Largura(1, 'E'))); Writeln('A letra “Q”
Augsburg Stuttgart esta no no numero: '+ IntToStr(busca_Largura(1, 'Q')));
Readln; end.
Árvore gerada em um algoritmo BFS começando em Frankfurt.

nao esta vazia vertice1 = F->ini->vertice;//vertice 6.1.7 Usos e extensões


que esta no inicio da fila p = G->Ladj[vertice1-
• Achar componentes conectados
1].inicio;// Ladj = lista de adjacencia de vertice1
while(p!=NULL){//enquanto a lista de adjacencia • Achar todos os nódulos contectado a apenas um
do vertice1 nao acaba if(!BuscaVertice(p->vertice, componente
verticesMarcados, tamVerticesMarcados)){//busca
p->vertice no vetor verticesMarcados verticesMarca- • Achar o menor caminho entre um nó raiz e os outros
dos[tamVerticesMarcados++] = p->vertice;//marcou nós do grafo
p->vertice PoeVerticeNaFila(F , p->vertice);//poe
p->vertice na fila //arestas que compoem arvore ge- • Testar bipartição em grafos
radora mínima, aresta (vertice1, p->vertice) } else
if(WPertenceF(p->vertice, F)){//se p->vertice pertence O conjunto de nós alcançados pela busca em largura são
a F //arestas (vertice1, p->vertice) que não compoem os maiores componentes conectados que contém o nó
árvore geradora mínima } p = p->prox; } RetiraVertice- inicial. Se não houver arestas nos nós adjacentes numa
Fila(F); } return 0; } mesma camada de busca, então o grafo deve conter um
número ímpar de ciclos e não ser bipartido.

6.1.6 Exemplo de Implementação em Ob- 6.1.8 Ver também


ject Pascal
• Busca em profundidade
program Busca_em_largura; {$APPTYPE CONSOLE}
• Teoria dos Grafos
uses SysUtils; var vListaNos : array[1..8] of char;
function NoEsquerdo(pNoAtual: Integer): integer;
begin result := (2 * pNoAtual); end; function NoDi-
reito(pNoAtual: Integer): integer; begin result := (2 * 6.2 Busca em profundidade
pNoAtual) + 1; end; function busca_Largura (Inicio :
integer; Alvo: Char): integer; var vAchou : Boolean;
vLoop : integer; begin vAchou := false; vLoop :=
Inicio; Result := −1; if vListaNos[Inicio] = Alvo then
begin vAchou := true; Result := Inicio; end; while
(not vAchou) and (vLoop <= 8) do begin if vLista-
Nos[NoEsquerdo(vLoop)] = Alvo then begin vAchou
:= true; Result := NoEsquerdo(vLoop); end else if vLis-
taNos[NoDireito(vLoop)] = Alvo then begin vAchou
:= true; Result := NoDireito(vLoop); end; inc(vLoop);
end; end; begin { Busca em largura na árvore binária
} // Preenchimento da arvore, demostração gráfica e
posicionamento na mesma… vListaNos[1] := 'R'; { R 1
} vListaNos[2] := 'G'; { / \ / \ } vListaNos[3] := 'Q'; { G
Q 2 3 } vListaNos[4] := 'Y'; { /\ /\ /\ /\ } vListaNos[5]
:= 'J'; { Y J B E 4 5 6 7 } vListaNos[6] := 'B'; { / / Ordem dos vértices explorados na busca em profundidade
6.2. BUSCA EM PROFUNDIDADE 63

Na teoria dos grafos, busca em profundidade (ou busca ria suficiente. Isso pode ser resolvido estabelecendo-se
em profundidade-primeiro, também conhecido em inglês um limite de aumento na profundidade da árvore.
por Depth-First Search - DFS) é um algoritmo usado para
realizar uma busca ou travessia numa árvore, estrutura
de árvore ou grafo. Intuitivamente, o algoritmo começa 6.2.2 Exemplo
num nó raiz (selecionando algum nó como sendo o raiz,
no caso de um grafo) e explora tanto quanto possível cada
um dos seus ramos, antes de retroceder(backtracking).
Uma versão da busca em profundidade foi investigada no
A
século XIX pelo matemático francês Charles Pierre Tré-
maux[1] como estratégia para solucionar labirintos.[2][3]

B C E
6.2.1 Definição Formal

D F G

Exemplo Busca em profundidade


gráfico transversal

Para o grafo ao lado, uma busca em profundidade co-


meçando em A, assumindo-se que as arestas esquerdas
do grafo apresentado sejam escolhidas antes das arestas
direitas, e assumindo que a busca relembre os nós previ-
amente visitados e que não os repita (desde que este seja
um grafo pequeno), visitaremos os nós na seguinte ordem
: A, B, D, F, E, C, G.
Modificando essa mesma busca, sem que nos recordemos
dos nós previamente visitados, teríamos como resultado
a seguinte ordem de visita dos nós: A, B, D, F, E, A, B,
Representação visual de uma busca em profundidade D, F, E, etc, eternamente, já que a busca ficaria presa no
ciclo A,B,D,F,E e nunca alcançaria G ou C.
Formalmente, um algoritmo de busca em profundidade
realiza uma busca não-informada que progride através da O aprofundamento iterativo previne esse looping, al-
expansão do primeiro nó filho da árvore de busca, e se cançando os seguintes nós, nas seguintes profundidades,
aprofunda cada vez mais, até que o alvo da busca seja en- assumindo-se que ele prossiga da esquerda para a direita,
contrado ou até que ele se depare com um nó que não como mostrado abaixo:
possui filhos (nó folha). Então a busca retrocede (back-
track) e começa no próximo nó. Numa implementação • 0: A
não-recursiva, todos os nós expandidos recentemente são
adicionados a uma pilha, para realizar a exploração. • 1: A (repetido), B, C, E

A complexidade espacial de um algoritmo de busca em


(Perceba que o aprofundamento iterativo agora enxergou
profundidade é muito menor que a de um algoritmo de
C, ao passo que uma busca em profundidade convencio-
busca em largura. A complexidade temporal de ambos
nal não enxergaria.)
algoritmos são proporcionais ao número de vértices so-
mados ao número de arestas dos grafos aos quais eles
atravessam. • 2: A, B, D, F, C, G, E, F
Quando ocorrem buscas em grafos muito grandes, que
não podem ser armazenadas completamente na memória, (Perceba que a busca ainda enxerga C, mas que ele vem
a busca em profundidade não termina, em casos onde o depois. Perceba também que ele enxerga E via diferentes
comprimento de um caminho numa árvore de busca é in- caminhos, e passa duas vezes pelo F .)
finito. O simples artifício de “ lembrar quais nós já foram
visitados ” não funciona, porque pode não haver memó- • 3: A, B, D, F, E, C, G, E, F, B
64 CAPÍTULO 6. ALGORITMOS EM GRAFOS

Para esse grafo, quanto maior for a profundidade apli- 6.3.1 Definição matemática
cada, os dois ciclos “ABFE” e “AEFB” simplesmente fi-
carão maiores, antes que o algoritmo desista e tente outro Matematicamente: Seja G um grafo. Um caminho em G
ramo. é uma sequência de vértices de G, digamos

({vᵢ1 , v 1 } , . . ., {vᵢᵣ, v ᵣ})


6.2.3 Aplicações
• Achar componentes conectados tal que
• Achar componentes fortemente conectados
v ₐ = vᵢₐ₊₁,
• Ordenação topológica
• Resolução de quebra-cabeças como labirinto para todo 1 ≤ a ≤ r − 1.

6.2.4 Referências 6.3.2 Tipos de caminhos


[1] Charles Pierre Trémaux (1859–1882) École Polytechni- Um ciclo de comprimento r é um caminho constituído
que of Paris (X:1876) por r + 1 vértices, onde o primeiro vértice é igual ao úl-
Conferência pública, 2 de dezembro de 2010 – pelo pro-
timo. Note que a escolha do vértice inicial em um ciclo
fessor Jean Pelletier-Thibert na Académie de Macon (Bor-
é arbitrária.
gonha – França) – (Abstrato publicado nos anais da Aca-
demia, Março de 2011 – ISSN: 0980-6032) Um caminho sem vértices repetidos é chamado de ca-
[2] Even, Shimon (2011), Graph Algorithms (2nd ed.),
minho simples e um ciclo sem vértices repetidos com
Cambridge University Press, pp. 46–48, ISBN 978- exceção do inicial/final é um ciclo simples. Por vezes o
0-521-73653-4, http://books.google.com/books?id= termo “simples” é omitido de “caminho simples” e “ciclo
m3QTSMYm5rkC&pg=PA46. simples”, embora essa não seja a regra.
[3] Sedgewick, Robert (2002), Algorithms in C++: Graph Al- Um ciclo simples que envolva todos os vértices de um
gorithms (3rd ed.), Pearson Education, ISBN 978-0-201- grafo é chamado de caminho hamiltoniano.
36118-6.
Um grafo é dito conexo se para quaisquer dois vértices
existe um caminho que começa num vértice e termina no
6.2.5 Ver também outro.

• Busca em largura
6.3.3 Referências

6.2.6 Ligações externas • Bondy, J. A.; Murty, U. S. R. (1976). Graph The-


ory with Applications. North Holland. pp. 12–21.
• Explicação e exemplo da busca em profundidade ISBN 0-444-19451-7.
• C++ Boost Graph Library: Depth-First Search • Diestel, Reinhard (2005). Graph Theory (3rd ed.
• ed.). Graduate Texts in Mathematics, vol. 173,
*Springer-Verlag. pp. 6–9. ISBN 3-540-26182-6.

• Gibbons, A. (1985). Algorithmic Graph Theory.
• QuickGraph, exemplo para .Net Cambridge University Press. pp. 5–6. ISBN 0-521-
• 28881-9.

• YAGSBPL – Um template feito em biblioteca C++ • Korte, Bernhard; Lovász, László; Prömel, Hans Jür-
para procura de gráficos e planejamento gen; Schrijver, Alexander (Eds.) (1990). Paths,
Flows, and VLSI-Layout. Algorithms and Combi-
natorics 9, Springer-Verlag. ISBN 0-387-52685-4.
6.3 Caminho
Em teoria de grafos, um caminho em um grafo é uma 6.4 Caminho euleriano
sequência de vértices tal que de cada um de seus vértices
há uma aresta para o próximo vértice da sequência. O Um Caminho Euleriano é um caminho em um grafo que
primeiro vértice é chamado de vértice inicial e o último é visita cada aresta apenas uma vez. Com caso especial, um
chamado de vértice final. Circuito Euleriano é um caminho Euleriano que começa
6.5. CAMINHO HAMILTONIANO 65

vértices de grau ímpar. Nesse caso, ao se acrescentar uma


aresta ligando estes dois vértices, o novo grafo passa a ser
um circuito Euleriano.
Pode-se assim enunciar um corolário do Teorema de Eu-
ler para Grafos* como sendo: Um grafo G conexo possui
caminho euleriano se e somente se ele tem exatamente zero
ou dois vértices de grau impar.
Não confundir com caminho hamiltoniano em que o ca-
minho deve passar uma vez em cada vértice.

6.4.1 Ver também


• Algoritmo de Fleury
O grafo das pontes de Königsberg. Este grafo não é Euleriano,
portanto, uma solução não existe. • Problema do carteiro chinês

• Caminho hamiltoniano
F
6.4.2 Referências
B H
E G [1] «Grafos Eulerianos». www.inf.ufsc.br. Consultado em
C I 2015-07-15.

[2] BIGGS, N. L.; LLOYD, E. K.; WILSON, R. J. (1976).


D J Graph Theory 1736-1936 (Oxford: Clarendon Press).
ISBN 0-19-853901-0. Texto “página-8-9” ignorado
(Ajuda)

A K
6.5 Caminho hamiltoniano

Cada vértice deste grafo tem um grau par,portanto este é um grafo


Euleriano. Seguindo as arestas em ordem alfabética obtém-se um
circuito/ciclo Euleriano.

e termina no mesmo vértice. O conceito foi introduzido


por Leonard Euler para a resolução do famoso problema O caminho vermelho é hamiltoniano.
das sete pontes de Königsberg em 1736.
Grafos que possuem um circuito Euleriano são chama- Um caminho hamiltoniano é um caminho que permite
dos Grafos Eulerianos. Uma das principais condições passar por todos os vértices de um grafo G, não repetindo
para um grafo ser Euleriano é que todos os vértices pre- nenhum, ou, seja, passar por todos uma e uma só vez por
cisam ser de grau par. Entretanto, essa condição não cada. Caso esse caminho seja possível descrever um ci-
é suficiente, pois também é necessário que o grafo seja clo, este é denominado ciclo hamiltoniano (ou circuito
conexo[1] . Euler provou que uma condição necessária hamiltoniano) em G. E, um grafo que possua tal circuito
para a existência de circuitos eulerianos é de que todos é chamado de grafo hamiltoniano.
os vértices tenham grau par, e afirmou, sem prova de que
O problema de decidir se um dado grafo é hamiltoniano
grafos conexos com todos os vértices pares tem um cir-é completo em NP, o que significa que é pouco prová-
cuito Euleriano. A primeira prova completa desta última
vel que exista um algoritmo polinomial para o problema.
afirmação foi publicada em 1873 por Carl Hierholzer.[2]Outro objetivo provavelmente ambicioso demais: mos-
Há, ainda, grafos com caminhos Eulerianos se houver 2 trar que o problema está em co-NP, ou seja, obter uma
66 CAPÍTULO 6. ALGORITMOS EM GRAFOS

boa condição necessária e suficiente para existência de 6.5.2 Exemplos


ciclo hamiltoniano.
Um problema que envolve caminhos hamiltonianos é o
problema do caixeiro viajante, em que um caixeiro deseja
visitar um conjunto de N cidades (vértices), passando por
cada cidade exatamente uma vez e retornando à cidade de
origem, fazendo o caminho de menor tamanho possível.
Em 2009 conseguiu-se uma resolução para este problema
utilizando-se de bactérias[1] na implementação do algo-
ritmo, que historicamente costuma ter um custo de tempo
de computação exponencial.

6.5.1 Definições

Um ciclo Hamiltoniano em um dodecaedro. Como todos os


sólidos platônicos, o dodecaedro é Hamiltoniano.

• Um grafo completo com mais de dois vértices é Ha-


miltoniano

• Todo grafo ciclo é Hamiltoniano

• Todo torneio tem um número ímpar de caminhos


Hamiltonianos

• Todo sólido platônico, considerado como um grafo


é Hamiltoniano

Um caminho Hamiltoniano (em preto) sobre um grafo (em azul). 6.5.3 Propriedades

Um caminho Hamiltoniano ou caminho rastreável é um


caminho que visita cada vértice exatamente uma vez. Um 9
grafo que contém um caminho Hamiltoniano é chamado
um grafo rastreável. Um grafo é Hamilton-conectado
se para cada par de vértices existe um caminho Hamilto-
niano entre os dois vértices.
Um ciclo Hamiltoniano, circuito Hamiltoniano, passeio 2 3 4
em vértices ou grafo ciclo é um ciclo que visita cada vér-
tice exatamente uma vez (exceto o vértice que é tanto o 10 11 8
início quanto o fim, e portanto é visitado duas vezes). Um
grafo que contém um ciclo Hamiltoniano é chamado de
grafo Hamiltoniano.
Noções semelhantes podem ser definidas para grafos ori-
1 5
entados, onde cada aresta (arco) de um caminho ou ciclo
só pode ser atravessada em uma única direção (i.e., os
vértices são conectados com as setas e as arestas atraves-
sadas “da cauda para a ponta”). 6 7
Uma decomposição Hamiltoniana é uma decomposi-
ção de arestas de um grafo em circuitos Hamiltonianos. Um caminho hamiltoniano no grafo de Mycielski.
6.6. ORDENAÇÃO TOPOLÓGICA 67

Qualquer ciclo hamiltoniano pode ser convertido para um que o problema abordado envolve uma ordem parcial[1] ;
caminho Hamiltoniano, removendo-se uma de suas ares- algoritmos de ordenação topológica começaram a ser es-
tas, mas um caminho Hamiltoniano só pode ser estendido tudados no início dos anos 1960 no contexto da técnica
para um ciclo hamiltoniano se suas extremidades são ad- PERT para a agendamento de tarefas em gerenciamento
jacentes. de projetos.[2] Os trabalhos são representados por vérti-
O grafo linha de um grafo Hamiltoniano é Hamiltoniano. ces, e existe uma aresta de x para y se o trabalho x deve
O grafo linha de um grafo Euleriano é Hamiltoniano. estar concluído antes do trabalho y poder ser iniciado (por
exemplo, ao lavar roupas, a máquina de lavar deve termi-
Um torneio (com mais de 2 vértices) é Hamiltoniano se e nar antes de se poder colocar as roupas para secar). Em
somente se ele é fortemente conectado. seguida, uma ordenação topológica dá uma ordem na qual
Um ciclo Hamiltoniano pode ser usado como base de uma se possa realizar os trabalhos.
prova com zero conhecimentos. Em informática, as aplicações deste tipo surgem em
Número de diferentes ciclos hamiltonianos para um grafo agendamentos de instruções, ordenação de fórmulas de
completo = (n-1)! / 2. avaliação de células quando recalculando os valores de
fórmulas em planilhas, síntese lógica, determinação da
Número de diferentes ciclos hamiltonianos para um grafo ordem das tarefas de compilação para executar em arqui-
orientado completo = (n-1)!. vos "make", e resolução de dependências de símbolos em
ligadores.
6.5.4 Referências
[1] Computador feito com bactérias resolve problemas ma- 6.6.2 Algoritmos
temáticos Terra Tecnologia, acessado em 31 de julho de
2009 Os algoritmos usuais de ordenação topológica tem tempo
de execução linear no número de nós, mais o número de
arestas (O(|V|+|E|)).
6.5.5 Ver também
Um desses algoritmos, descrito pela primeira vez por
• Problema de Roteamento de Veículos Kahn[3] , trabalha escolhendo vértices na mesma ordem da
eventual ordenação topológica. Primeiro, encontra uma
• Problema do caixeiro viajante lista de nós "íniciais”, que não tem arestas de entrada e
• Caminho euleriano os insere em um conjunto S; pelo menos um nó devem
existir se o grafo é acíclico. Então:
L ← Lista vazia que irá conter os elementos ordenados S
6.5.6 Ligações externas ← Conjunto de todos os nós sem arestas de entrada en-
quanto S é não-vazio faça remova um nodo n de S insira
• Solução do problema utilizando bactérias n em L para cada nodo m com uma aresta e de n até
m faça remova a aresta e do grafo se m não tem mais
arestas de entrada então insira m em S se o grafo tem
6.6 Ordenação topológica arestas então escrever mensagem de erro (grafo tem pelo
menos um ciclo) senão escrever mensagem (ordenação
Em teoria dos grafos, uma ordenação topológica de um topológica proposta: L)
digrafo acíclico (DAG) é uma ordem linear de seus nós Se o grafo é um digrafo acíclico (DAG), a solução está
em que cada nó vem antes de todos nós para os quais contida na lista L (a solução não é única). Caso contrá-
este tenha arestas de saída. Cada DAG tem uma ou mais rio, o grafo tem pelo menos um ciclo e, portanto, uma
ordenações topológicas. ordenação topológica é impossível.
Mais formalmente, define-se a relação acessibilidade R Note-se que, reflectindo a não-exclusividade da ordena-
sobre os nós do DAG tal que xRy se e somente se existe ção resultante, a estrutura S pode ser simplesmente um
um caminho dirigido de x para y. Então, R é uma ordem conjunto ou uma fila ou uma pilha. Dependendo da or-
parcial, e uma ordenação topológica é uma extensão li- dem em que os nodos n são removidos do conjunto S,
near desta ordem parcial, isto é, uma ordem total compa- uma solução diferente é criada.
tível com a ordem parcial.
Um algoritmo alternativo para a ordenação topológica é
baseado em uma busca em profundidade. Para este algo-
6.6.1 Exemplos ritmo, as arestas apontam na direção oposta, como o al-
goritmo anterior (e no sentido oposto ao mostrado no di-
A aplicação canônica da ordenação topológica (ordem to- agrama na seção de exemplos acima). Existe uma aresta
pológica) está na programação de uma sequência de tra- de x para y se a tarefa x depende da tarefa y (em outras
balhos ou tarefas; tem uso potencial todas as vezes em palavras, se a tarefa y deve ser concluída antes da tarefa
68 CAPÍTULO 6. ALGORITMOS EM GRAFOS

x poder ser iniciada). O algoritmo faz um loop através • make


de cada nó do grafo, em uma ordem arbitrária, inici-
ando uma busca em profundidade que termina quando
se atinge qualquer nó que já foi visto desde o início da 6.6.5 Ligações externas
ordenação topológica:
• Dicionário (NIST) de Algoritmos e Estruturas de
L ← Lista vazia que irá conter os elementos ordenados S Dados: ordenação topológica
← Conjunto de todos os nós sem arestas de entrada fun-
ção visita(nodo n) se n não foi visitado ainda então mar-
que n como visitado para cada nodo m com uma aresta 6.6.6 Referências
de n para m faça visite(m) adicione n em L para cada
nodo n em S faça visite(n) [1] Markenzon, Lilian; Szwarcfiter, Jayme Luiz (1997). Es-
truturas de Dados e seus Algoritmos (Rio de Janeiro: LTC).
Note que cada nodo n é adicionado à lista de saída L so- ISBN 85-2161-014-9.
mente após considerar todos os outros nodos dos quais
n depende (todos os nodos descendentes de n no grafo). [2] Jarnagin, M. P. (1960), Automatic machine methods of
Especificamente, quando o algoritmo acrescenta o nodo testing PERT networks for consistency, Technical Memo-
n, temos a garantia que todos os nodos dos quais n de- randum No. K-24/60, Dahlgren, Virginia: U. S. Naval
Weapons Laboratory.
pende já estão na lista de saída L: eles foram adiciona-
dos a L tanto pela chamada recursiva anterior à visite(), [3] • Kahn, A. B. (1962), “Topological sorting of large
ou por uma chamada anterior à visite(). Uma vez que networks”, Communications of the ACM 5 (11):
cada aresta e nodo é visitado uma vez, o algoritmo exe- 558–562, doi:10.1145/368996.369025.
cuta em tempo linear. Note que o simples pseudocódigo
[4] CORMEN, Thomas H.; LEISERSON, Charles E.; RI-
acima não consegue detectar o caso de erro, onde o grafo
VEST Ronald L.; STEIN, Clifford (2001). «Topological
de entrada contém ciclos. O algoritmo pode ser refinado sort( seção 22.4)». Introduction to Algorithms 2ª ed. MIT
para detectar os ciclos, observando nodos que são visita- Press/McGraw-Hill. [S.l.] pp. 549–552. ISBN 0-262-
dos mais de uma vez durante toda a seqüência de chama- 03293-7.
das recursivas aninhadas à visite() (por exemplo, passar
uma lista adiante como um argumento extra para visite(), [5] Tarjan, Robert E. (1976), “Edge-disjoint spanning trees
indicando que nodos já foram visitados na pilha de cha- and depth-first search”, Algorithmica 6 (2): 171–185,
doi:10.1007/BF00268499.
mada corrente).
Este algoritmo de busca em profundidade é o descrito por [6] Vernet, Oswaldo; Markenzon, Lilian (1997), “Ha-
Cormen, Leiserson, Rivest e Stein[4] ; parece ter sido des- miltonian problems for reducible flowgraphs”, Proc.
17th International Conference of the Chilean Com-
crito pela primeira vez em artigo por Tarjan[5]
puter Science Society (SCCC '97), pp. 264–267,
doi:10.1109/SCCC.1997.637099.
6.6.3 Unicidade
Se uma ordenação topológica tem a propriedade de to- 6.7 Algoritmo de Bellman-Ford
dos os pares de vértices consecutivos na ordem de classi-
ficação serem conectados por arestas, essas arestas for- O Algoritmo de Bellman-Ford é um algoritmo de busca
mam um caminho hamiltoniano dirigido no DAG. Se de caminho mínimo em um dígrafo ponderado, ou seja,
existe um caminho Hamiltoniano, a ordenação topoló- cujas arestas têm peso, inclusive negativo. O Algoritmo
gica é única, nenhuma outra ordem respeita as arestas ca- de Dijkstra resolve o mesmo problema, num tempo me-
minho. Inversamente, se uma ordenação topológica não nor, porém exige que todas as arestas tenham pesos po-
formar um caminho Hamiltoniano, o DAG terá duas ou sitivos. Portanto, o algoritmo de Bellman-Ford é nor-
mais ordenações topológicas válidas, porque neste caso, malmente usado apenas quando existem arestas de peso
é sempre possível formar-se uma segunda ordenação vá- negativo.[1]
lida ao se trocar dois vértices consecutivos, que não são
ligados por uma aresta, uns com os outros. Portanto, é O algoritmo de Bellman-Ford executa em tempo O(v ×
possível testar em tempo polinomial se existe uma única a) onde v é o número de vértices e a o número de
ordenação, e se existe um caminho hamiltoniano, apesar arestas.[2][3]
da característica NP-hard do problema do caminho ha-
miltoniano para grafos dirigidos mais gerais[6] 6.7.1 Ver também
• Teoria dos grafos
6.6.4 Ver também
• Problema do caminho mínimo
• tsort, um programa do Unix para a ordenação topo-
lógica • Algoritmo de Dijkstra
6.9. ALGORITMO DE FLOYD-WARSHALL 69

6.7.2 Referências 6. Adicione os caminhos estendidos a Q e vá ao passo


2;
[1] Thomas H. Cormen, Charles Leiserson, Ronald L. Rivest,
Clifford Stein: Algorithmen – Eine Einführung. 2. Au-
caminhos expandidos;
flage. Oldenbourg Wissenschaftsverlag, München 2007,
ISBN 978-3-486-58262-8, S. 585-586. Uma estimativa que sempre subestima o comprimento
real do caminho ate o objetivo é chamada de admissível.
[2] RFC 1058
O uso de uma estimativa admissível garante que a busca
[3] de custo-uniforme ainda encontrará o menor caminho.

6.7.3 Ligações externas 6.8.2 Ligações externas


• Código C++ (em inglês) • (em português) A* Pathfinding para Iniciantes
• (em português) Projeto de Pesquisa de Algoritmos
de Busca
6.8 Algoritmo A*
• (em inglês) Amit’s A* Pages -- Path finding Texto
bastante completo sobre busca de caminhos (Path
Nota: Se procura o conto de Arthur Charles Clarke, finding) usando o Algoritmo A*
veja A estrela.

Algoritmo A* (Lê-se: A-estrela) é um algoritmo para 6.9 Algoritmo de Floyd-Warshall


Busca de Caminho. Ele busca o caminho em um grafo
de um vértice inicial até um vértice final. Ele é a com- Na ciência da computação, o algoritmo de Floyd-
binação de aproximações heurísticas como do algoritmo Warshall (também conhecido como: Floyd’s algo-
Best-first Search e da formalidade do Algoritmo de Dijks- rithm, Roy–Warshall algorithm, Roy–Floyd algo-
tra. rithm, ou WFI algorithm) é um algoritmo que resolve
O algoritmo foi descrito pela primeira vez em 1968 por o problema de calcular o caminho mais curto entre todos
Peter Hart, Nils Nilsson, e Bertram Raphael. Na publi- os pares de vértices em um grafo orientado (com direção)
cação deles, ele foi chamado de algoritmo A; usando este e valorado (com peso). O algoritmo Floyd-Warshall foi
algoritmo com uma heurística apropriada atinge-se um publicado por Robert Floyd em 1962. Este algoritmo é
comportamento ótimo, e passou a ser conhecido por A*. o mesmo que foi publicado por Bernard Roy em 1959 e
também por Stephen Warshall em 1962 para determinar
Sua aplicação vai desde aplicativos para encontrar rotas
o fechamento transitivo de um grafo.[1] O formato atual
de deslocamento entre localidades a resolução de pro-
do algoritmo de Floyd-Warshall com três loops de repe-
blemas, como a resolução de um quebra-cabeças. Ele é
tição foi descrito por Peter Ingerman em 1962.
muito usado em jogos.
O algoritmo é um bom exemplo de programação dinâ-
mica.
6.8.1 Algoritmo
Sejam 6.9.1 Definição
Q = conjunto de nós a serem pesquisados; S = o estado
O algoritmo de Floyd-Warshall recebe como entrada uma
inicial da busca
matriz de adjacência que representa um grafo (V, E) ori-
Faça: entado e valorado. O valor de um caminho entre dois
vértices é a soma dos valores de todas as arestas ao longo
1. Inicialize Q com o nó de busca (S) como única en- desse caminho. As arestas E do grafo podem ter valo-
trada; res negativos, mas o grafo não pode conter nenhum ciclo
de valor negativo. O algoritmo calcula, para cada par de
2. Se Q está vazio, interrompa. Se não, escolha o me- vértices, o menor de todos os caminhos entre os vértices.
lhor elemento de Q; Por exemplo, o caminho de menor custo. Sua ordem de
3. Se o estado (n) é um objetivo, retorne n; complexidade é θ(|V |3 ) .
O algoritmo se baseia nos passos abaixo:
4. (De outro modo) Remova n de Q;
5. Encontre os descendentes do estado (n) que não es- • Assumindo que os vértices de um grafo orientado G
tão em visitados e crie todas as extensões de n para são V = 1, 2, 3, . . . , n , considere um subconjunto
cada descendente; 1, 2, 3 . . . , k ;
70 CAPÍTULO 6. ALGORITMOS EM GRAFOS

• Para qualquer par de vértices (i, j) em V , considere 6.9.3 Ligações externas


todos os caminhos de i a j cujos vértices intermédios
pertencem ao subconjunto 1, 2, 3 . . . , k , e p como • Algoritmo de Floyd-Warshall em C++
o mais curto de todos eles;
[1] Cormen, Thomas H.; Leiserson, Charles E., Rivest, Ro-
• O algoritmo explora um relacionamento entre o
nald L. (1990). Introduction to Algorithms (1st ed.). MIT
caminho p e os caminhos mais curtos de i a j com Press and McGraw-Hill. ISBN 0-262-03141-8. Sec-
todos os vértices intermédios em 1, 2, 3 . . . , k − 1 ; tion 26.2, “The Floyd–Warshall algorithm”, pp. 558–565;
• O relacionamento depende de k ser ou não um vér- Section 26.4, “A general framework for solving path pro-
blems in directed graphs”, pp. 570–576.
tice intermédio do caminho p .

Abaixo segue uma implementação em pseudocódigo do


algoritmo de Floyd-Warshall: 6.10 Algoritmo de Johnson
ROTINA fw(Inteiro[1..n,1..n] grafo) # Inicializa-
ção VAR Inteiro[1..n,1..n] dist := grafo VAR In- Algoritmo de Johnson é uma forma de encontrar o me-
teiro[1..n,1..n] pred PARA i DE 1 A n PARA j DE nor caminho entre entre dois pontos. Ele permite que
1 A n SE dist[i,j] < Infinito ENTÃO pred[i,j] := i # algumas bordas tenham número negativo, mas ciclos ne-
Laço principal do algoritmo PARA k DE 1 A n PARA gativos não devem existir. Este algoritmo trabalha com
i DE 1 A n PARA j DE 1 A n SE dist[i,j] > dist[i,k] + base no Algoritmo de Bellman-Ford, para computar uma
dist[k,j] ENTÃO dist[i,j] = dist[i,k] + dist[k,j] pred[i,j] transformação de um grafo de entrada, que remove to-
= pred[k,j] RETORNE dist das os pesos negativos, permitindo o uso do algoritmo de
Dijkstra no grafo transformado. Recebe esse nome em
homenagem a Donald B. Johnson, o primeiro a descrevê-
6.9.2 Aplicações lo, em 1977.

O algoritmo de Floyd-Warshall pode ser utilizado para


resolver os problemas abaixo: 6.10.1 Descrição do algoritmo
• Caminhos mais curtos em grafos orientados (algo- É formado pelos seguintes passos:
ritmo de Floyd). Para funcionar, os valores de to-
das as arestas são configurados para o mesmo nú- w 2 w 1
4 w h(w) = –1 1
mero positivo. Esse número é normalmente esco- 6 0
lhido como único, tanto é que o valor de um caminho 3 x –7 h(x) = –7 0 x 0
y z x y z
coincide com o número de arestas ao longo desse ca- 5 1
y z q
minho; –3
h(y) = –4 h(z) = 0
1

• Proximidade transitiva de grafos orientados (algo- original graph


with negative edges
shortest path tree
found by Bellman-Ford
reweighted graph with
no negative edges
ritmo de Warshall). Na formulação original deste
último, o grafo se torna desvalorado (perde valores)
e é representado por uma matriz booleana de adja-
cência. Depois, a operação de soma é substituída 1. Primeiro, um novo nó q é adicionado ao grafo, co-
por conjunção lógica (E) e a operação de subtração nectado com peso zero (0) com cada um dos outros
por disjunção lógica (OU); nós.
• Encontrar uma expressão regular denotando a 2. Segundo, é usado o algoritmo de Bellman–Ford, co-
linguagem regular aceita por um autômato finito (al- meçando a partir do novo nó q, para encontrar cada
goritmo de Kleene); um dos vértices v, o de menor peso h(v) do cami-
• Inversões de matrizes de números reais (algoritmo nho de q para v. Se esse passo detectar um ciclo
de Gauss-Jordan); negativo, o algoritmo é terminado.

• Roteamento otimizado. Nesta aplicação, o interesse 3. O próxima borda do grafo original é reponde-
é encontrar o caminho com o máximo fluxo entre rada usando os valores calculados pelo algoritmo
dois vértices. Isto significa que, em vez de calcular Bellman–Ford: uma borda de u para v, tendo com-
o mínimo no pseudocódigo acima, calcula-se o má- primento w(u,v), é dada pelo novo comprimento
ximo. Os pesos das arestas representam constantes w(u,v) + h(u) −h(v).
fixas de fluxo. Valores do caminho representam gar-
4. Finalmente, q é removido, e o algoritmo de Dijkstra
galos, logo a operação de soma acima é substituída
é usado para encontrar o menor caminho para cada
pela operação de subtração;
um dos nós s para todos os outros vértices no grafo
• Testar se um grafo não-orientado é bipartido.[1] reponderado.
6.10. ALGORITMO DE JOHNSON 71

6.10.2 Veja também


algoritmo de Bellman-Ford
Algoritmo de Dijkstra
Problema do caminho mais curto
Grafo

6.10.3 Ligações externas


• Boost: All Pairs Shortest Paths
Capítulo 7

Algoritmos para obter a árvore de


extensão mínima

7.1 Algoritmo de Kruskal 7.2 Algoritmo de Prim


O algoritmo de Kruskal é um algoritmo em teoria dos Na ciência da computação o algoritmo de Prim é um
grafos que busca uma árvore geradora mínima para um algoritmo guloso (greedy algorithm) empregado para en-
grafo conexo com pesos. Isto significa que ele encon- contrar uma árvore geradora mínima (minimal spanning
tra um subconjunto das arestas que forma uma árvore tree) num grafo conectado, valorado e não direcionado.
que inclui todos os vértices, onde o peso total, dado pela Isso significa que o algoritmo encontra um subgrafo do
soma dos pesos das arestas da árvore, é minimizado. Se o grafo original no qual a soma total das arestas é minimi-
grafo não for conexo, então ele encontra uma floresta ge- zada e todos os vértices estão interligados. O algoritmo
radora mínima (uma árvore geradora mínima para cada foi desenvolvido em 1930 pelo matemático Vojtěch Jar-
componente conexo do grafo). O algoritmo de Kruskal é ník e depois pelo cientista da computação Robert Clay
um exemplo de um algoritmo guloso (também conhecido Prim em 1957 e redescoberto por Edsger Dijkstra em
como ganancioso ou greedy). 1959.
Seu funcionamento é mostrado a seguir: Outros algoritmos conhecidos para encontrar árvores ge-
radoras mínimas são o algoritmo de Kruskal e algoritmo
• crie uma floresta F (um conjunto de árvores), onde de Boruvka. No entanto estes algoritmos podem ser em-
cada vértice no grafo é uma árvore separada pregados em grafos desconexos, enquanto o algoritmo
• crie um conjunto S contendo todas as arestas do de Prim precisa de um grafo conexo.
grafo
• enquanto S for não-vazio, faça: 7.2.1 Descrição
• remova uma aresta com peso mínimo de S
O algoritmo de Prim encontra uma árvore geradora mí-
• se essa aresta conecta duas árvores diferentes,
nima para um grafo desde que ele seja valorado e não di-
adicione-a à floresta, combinando duas árvores
recionado. Por exemplo, se na figura 1 os vértices deste
numa única árvore parcial
grafo representassem cidades e as arestas fossem estradas
• do contrário, descarte a aresta de terra que interligassem estas cidades, como podería-
mos determinar quais estradas asfaltar gastando a menor
Ao fim do algoritmo, a floresta tem apenas um compo- quantidade de asfalto possível para interligar todas as ci-
nente e forma uma árvore geradora mínima do grafo. dades. O algoritmo de Prim neste caso fornecerá uma
Com o uso de uma estrutura de dados aceitável, o algo- resposta ótima para este problema que não necessaria-
ritmo de Kruskal pode ser demonstrado que executa em mente é única. A etapa f) da figura 1 demonstra como
tempo O (m log n), onde m é o número de arestas e n o estas cidades devem ser conectadas com as arestas em
número de vértices. negrito.

7.1.1 Exemplo Algoritmo genérico

7.1.2 Ver também Um algoritmo genérico para o algoritmo de Prim é dado


da seguinte forma:
• Joseph Kruskal
• Algoritmo de Prim Escolha um vértice S para iniciar o subgrafo

72
7.2. ALGORITMO DE PRIM 73

7.2.3 Complexidade
A complexidade do algoritmo de Prim pode mudar de
acordo com a estrutura de dados utilizada para represen-
tar o grafo. As implementações mais comuns para um
grafo são por listas de adjacência e por matrizes de adja-
cência e suas respectivas complexidades O(|A|log|V |) e
O(V 2 ) no pior caso.

7.2.4 Exemplo de execução


Repare neste exemplo de execução do algoritmo como as
arestas são escolhidas para entrar no subgrafo. O con-
junto V\U são os vértices que ainda não entraram no sub-
grafo, o conjunto U são os vértices que já estão no sub-
grafo, as arestas possíveis é uma lista de arestas que
poderiam ser incluidas no subgrafo, pois conectam vér-
tices contidos no subgrafo com os que ainda não estão
e as arestas incluídas são aquelas que já estão no sub-
grafo. Dessa maneira e segundo o algoritmo genérico
dado acima, para escolhermos uma aresta segura deve-
mos observar o conjunto de arestas possíveis e selecio-
nar aquelas que não formam ciclos com o subgrafo até
entao formado e cujo peso é o mínimo possível naquele
Figura 1: passo a passo da execução do algoritmo de Prim ini-
momento. Se uma aresta apresentar todos estes quesitos
ciado pelo vértice 0
podemos considerá-la uma aresta segura.

enquanto houver vértices que não


estão no subgrafo
7.2.5 Implementações
selecione uma aresta se- Implementação em C
gura
insira a aresta segura e seu int primMST(LAdj *g, int p[], int w[]) { int i, imin, v,
vértice no subgrafo r=0, cor[g->nvert]; Nodo *aux; int fsize=0, fringe[g-
>nvert]; // ORLA (stack de vértices) // Inicializações...
for (i=0; i<g->nvert; i++) { p[i] = −1; cor[i] = WHITE;
7.2.2 Pseudocódigo } cor[0] = GREY; w[0] = 0; fringe[fsize++] = 0; //f =
addV(f, 0, 0); //ciclo principal... while (fsize>0) { //
prim(G) # G é grafo # Escolhe qualquer vértice do Retirar melhor elemento da orla (“f = nextF(f, &v);"):
grafo como vértice inicial/de partida s ← seleciona-um- // (1) encontrar mínimo imin = 0; for (i=1; i<fsize;
elemento(vertices(G)) para todo v ∈ vertices(G) π[v] ← i++) if (w[fringe[i]] < w[fringe[imin]]) imin = i; //
nulo Q ← {(0, s)} S ← ø enquanto Q ≠ ø v ← extrair- (2) remover elemento v = fringe[imin]; fringe[imin] =
mín(Q) S ← S ∪ {v} para cada u adjacente a v se u ∉ fringe[--fsize]; // FIM DE “retirar” cor[v] = BLACK;
S e pesoDaAresta(π[u]→u) > pesoDaAresta(v→u) Q ← r += w[v]; for (aux=g->adj[v]; aux; aux=aux->prox)
Q \ {(pesoDaAresta(π[u]→u), u)} Q ← Q ∪ {(pesoDa- switch (cor[aux->dest]) { case WHITE: cor[aux->dest]
Aresta(v→u), u)} π[u] ← v retorna {(π[v], v) | v ∈ verti- = GREY; fringe[fsize++] = aux->dest; //f = addV(f,
ces(G) e π[v] ≠ nulo} aux->dest, aux->peso); w[aux->dest] = aux->peso;
p[aux->dest] = v; break; case GREY: if (aux->peso <
π[v] indica o predecessor de v. Após o término do algo- w[aux->dest]) { //f = updateV(f, aux->dest, aux->peso);
ritmo, para cada v pertencente aos vértices de G, π[v]→v p[aux->dest] = v; w[aux->dest] = aux->peso; } break;
representa uma aresta selecionada para a árvore gera- default: break; } } return r; }
dora mínima se π[v] ≠ nulo. O algoritmo retorna o con-
junto dessas arestas, formado pelos pares (π[v], v). Q é
um conjunto de pares (peso, vértice). O método extrair-
mín(Q) deve extrair o menor elemento de Q; um par (a,b) Implementação em Python
é menor que um par (c,d) se a < c ou se a = c e b < d. S é
um conjunto que armazena os vértices cujas adjacências A implementação a seguir usa uma lista de adjacência
já foram analisadas. para representar o grafo. A complexidade de tempo é
74 CAPÍTULO 7. ALGORITMOS PARA OBTER A ÁRVORE DE EXTENSÃO MÍNIMA

O(|V | + |A|log|V |) . Uma função adicional, primDes- utf8_decode(“Início”); echo utf8_decode("<br> T: ");
conexo, resolve o problema para grafos desconexos, sem print_r($t); echo utf8_decode("<br> V: "); print_r($v);
alterar a complexidade de tempo do algoritmo. echo utf8_decode("<br>"); // ------ Fim do passo inicial
# Implementacao do algoritmo de Prim O(E log V) $total_nos = count($origem); for($x =1 ; $x <= ($nos-1)
em Python # Note que a unica funcao que repre- ; $x++) { // Verifica origem -> destino $minimo1 =
senta a implementacao do algoritmo eh a funcao $infinito; for($i =1 ; $i <= $narcos ; $i++) { for($j
prim(graph,Vi=0,edge=[],vis=[]) # A funcao add_edge =1 ; $j <= $nos ; $j++) { if($origem[$i] == $t[$j]) {
eh apenas auxiliar, e a funcao primDesconexo(graph) for($k =1 ; $k <= $nos ; $k++) { if($destino[$i] ==
$v[$k]) { if($custo[$i] < $minimo1) { $minimo1 =
eh um adicional, e nao costuma sequer ser # im-
plementada para o algoritmo de Prim (pois no caso $custo[$i]; $aux1 = $i; } } } } } } // Verifica destino
-> origem $minimo2 = $infinito; for($i =1 ; $i <=
de um grafo ser desconexo, Kruskal eh a solucao
ideal). from heapq import heappop, heappush MAXV $narcos ; $i++) { for($j =1 ; $j <= $nos ; $j++) {
if($destino[$i] == $t[$j]) { for($k =1 ; $k <= $nos ;
= 1000 # numero de vertices no grafo graph = [[]
for x in xrange(MAXV)] def add_edge(v, u, w): $k++) { if($origem[$i] == $v[$k]) { if($custo[$i] <
$minimo2) { $minimo2 = $custo[$i]; $aux2 = $i; } } }
graph[v].append((u,w)) graph[u].append((v,w)) # con-
sidera que o grafo eh nao direcionado # Se o grafo } } } if($minimo2 < $minimo1) { $cont = 1; $minimo
for totalmente conectado, Vi pode receber qualquer = $minimo1; $aux = $aux1; echo utf8_decode("<br>
vertice sem diferenca no peso total da arvore gerada Aresta ($origem[$aux],$destino[$aux]) escolhida
# Se o grafo for desconexo, apenas a parte conectada de custo $custo[$aux]"); } else { $minimo = $mi-
a Vi tera sua arvore geradora minima calculada # nimo2; $aux = $aux2; echo utf8_decode("<br>
O retorno eh uma lista de tuplas edge[v]=(w,u), que Aresta ($destino[$aux],$origem[$aux]) escolhida de
representa, para cada v, a aresta u->v com peso w, custo $custo[$aux]"); $cont = 2; } if($cont == 1) {
usada para # conectar a sub-arvore de v a sub-arvore $t[$destino[$aux]] = $destino[$aux]; $v[$destino[$aux]]
de u na arvore geradora minima def prim(graph, Vi=0, = “nulo"; } else { $t[$origem[$aux]] = $origem[$aux];
edge=[], vis=[]): # edge[v] = (pesoDaAresta(u->v), u) $v[$origem[$aux]] = “nulo"; } echo utf8_decode("<br>
# Se edge[] ou vis[] nao tiverem sido gerados ainda, ".$x."° iteração”); echo utf8_decode("<br> T: ");
geramos. Geralmente esta condicao nao existe, e ambas print_r($t); echo utf8_decode("<br> V: "); print_r($v);}
as listas # sao geradas dentro do proprio prim; porem,
para manter o primDesconexo em O(V + E log V),
permitimos que sejam # passadas pelos parametros da
7.2.6 Referências
funcao. if edge == []: edge = [(−1,−1)] * len(graph) if
vis == []: vis = [False] * len(graph) edge[Vi] = (0,−1)
heap = [(0,Vi)] while True: v = −1 while len(heap) 7.2.7 Bibliografia
> 0 and (v < 0 or vis[v]): v = heappop(heap)[1] if
v < 0 or edge[v][0] < 0: break vis[v] = True for (u, • Cormen, Thomas; Stein, Clifford (2001). «23». In-
w) in graph[v]: if edge[u][0] < 0 or edge[u][0] > w: troduction to Algorithms (em inglês) 2 ed. MIT Press
edge[u] = (w, v) heappush(heap, (edge[u][0],u)) return and McGraw-Hill [S.l.] ISBN 0-262-03293-7.
edge # Se o grafo for desconexo, pode-se usar: def
primDesconexo(graph): edge = [(−1,−1)] * len(graph)
vis = [False] * len(graph) for i in xrange(len(graph)):
7.2.8 Ligações externas
if edge[i][0] == −1: prim(graph, i, edge, vis) return edge
• Algoritmo de Prim

• Exemplo animado de um algoritmo de Prim

Implementação em PHP • Demonstração em Python de uma árvore mínima

$origem = array( 1 => 1,1,2,2,2,3,4,4,5); $destino = • Implementção em Java do algoritmo de Prim


array( 1 => 2,3,3,4,5,5,6,5,6); $custo = array( 1 => • Implementação em C# do algoritmo de Prim
1,3,1,2,3,2,3,−3,2); $nos = 6; $narcos = 9; // Define o
infinito como sendo a soma de todos os custos $infinito
= array_sum($custo); // Imprimindo origem destino e
custo echo utf8_decode(“Grafo:<br>"); for($i =1 ; $i <= 7.3 Algoritmo de Dijkstra
count($origem) ; $i++) { echo utf8_decode("$origem[$i]
$destino[$i] $custo[$i]<br>"); } // ------ Passo inicial O algoritmo de Dijkstra, concebido pelo cientista da
// Seta os valores de T for($i =1 ; $i <= 6 ; $i++) { computação holandês Edsger Dijkstra em 1956 e pu-
if($i == 1) { $t[$i] = $i; } else { $t[$i] = “nulo"; } } // blicado em 1959[1][2] , soluciona o problema do cami-
Seta os valores de V for($i =1 ; $i <= 6 ; $i++) { if($i nho mais curto num grafo dirigido ou não dirigido com
== 1) { $v[$i] = “nulo"; } else { $v[$i] = $i; } } echo arestas de peso não negativo, em tempo computacional
7.3. ALGORITMO DE DIJKSTRA 75

O([m+n]log n) onde m é o número de arestas e n é o nú- u e v são vértices quaisquer e s é o vértice inicial. ffd
mero de vértices. O algoritmo que serve para resolver o extrair-mín(Q), pode usar um heap de mínimo ou uma
mesmo problema em um grafo com pesos negativos é o lista de vértices onde se extrai o elemento u com menor
algoritmo de Bellman-Ford, que possui maior tempo de valor d[u].
execução que o Dijkstra. No final do algoritmo teremos o menor caminho entre s
O algoritmo de Dijkstra assemelha-se ao BFS, mas é e qualquer outro vértice de G. O algoritmo leva tempo
um algoritmo guloso, ou seja, toma a decisão que parece O(m + n log n) caso seja usado um heap de Fibonacci,
ótima no momento. Para a teoria dos grafos uma “es- O(m log n) caso seja usado um heap binário e O(n²) caso
tratégia gulosa” é conveniente já que sendo P um menor seja usado um vetor para armazenar Q.
caminho entre 2 vértices U e V, todo sub-caminho de P
é um menor caminho entre 2 vértices pertencentes ao ca-
minho P, desta forma construímos os melhores caminhos 7.3.2 Problemas relacionados
dos vértices alcançáveis pelo vértice inicial determinando
todos os melhores caminhos intermediários. Nota: diz-se O algoritmo de Dijkstra não consegue encontrar o menor
'um menor caminho' pois caso existam 2 'menores cami- caminho em um grafo com pesos negativos. Para esse
nhos’ apenas um será descoberto. propósito, pode-se usar o algoritmo de Floyd-Warshall,
que consegue descobrir a menor distância entre todos os
O algoritmo considera um conjunto S de menores cami-
pares de vértices de qualquer grafo sem ciclos com peso
nhos, iniciado com um vértice inicial I. A cada passo do
negativo em uma complexidade de tempo O(V³). Se o
algoritmo busca-se nas adjacências dos vértices perten-
problema não exigir o cálculo da distância entre todos os
centes a S aquele vértice com menor distância relativa a
pares de vértices ou se existirem ciclos com peso nega-
I e adiciona-o a S e, então, repetindo os passos até que
tivo, pode-se aplicar o algoritmo de Bellman-Ford, com
todos os vértices alcançáveis por I estejam em S. Arestas
complexidade de tempo O(V*E). Em uma árvore, é pos-
que ligam vértices já pertencentes a S são desconsidera-
sível encontrar a distância entre um vértice inicial e todos
das.
os outros vértices em tempo O(V+E), utilizando busca
Um exemplo prático do problema que pode ser resolvido em profundidade (também conhecida como DFS). Em
pelo algoritmo de Dijkstra é: alguém precisa se deslocar um grafo cujas arestas têm todas o mesmo peso, pode-
de uma cidade para outra. Para isso, ela dispõe de várias se encontrar a distância entre um vértice inicial e todos
estradas, que passam por diversas cidades. Qual delas os outros vértices, para um grafo qualquer, em O(V+E),
oferece uma trajetória de menor caminho? utilizando busca em largura (também conhecida como
BFS). O processo utilizado no algoritmo de Dijkstra é
bastante similar ao processo usado no algoritmo de Prim.
7.3.1 Algoritmo de Dijkstra O propósito deste último, entretanto, é encontrar a árvore
geradora mínima que conecta todos os nós de um grafo.
• 1º passo: iniciam-se os valores:

7.3.3 Ver também


para todo v ∈ V[G] d[v]← ∞ π[v] ← −1 d[s] ← 0
V[G] é o conjunto de vértices(v) que formam o Grafo G. • Algoritmo de Floyd-Warshall
d[v] é o vetor de distâncias de s até cada v. Admitindo-se
a pior estimativa possível, o caminho infinito. π[v] iden- • Algoritmo de Bellman-Ford
tifica o vértice de onde se origina uma conexão até v de
• Algoritmo A*
maneira a formar um caminho mínimo.
• Busca em profundidade
• 2º passo: temos que usar o conjunto Q, cujos vér-
• Busca em largura
tices ainda não contém o custo do menor caminho
d[v] determinado.
7.3.4 Ligações externas
Q ← V[G]
• Artigo explicativo sobre o algoritmo
• 3º passo: realizamos uma série de relaxamentos
• Artigo e Implementação do Algoritmo de Dijkstra
das arestas, de acordo com o código:
em C

enquanto Q ≠ ø u ← extrair-mín(Q) //Q ← Q - {u} para • (em inglês) Algoritmo de Dijkstra em C#


cada v adjacente a u se d[v] > d[u] + w(u, v) //relaxe (u,
v) então d[v] ← d[u] + w(u, v) π[v] ← u Q ← Q ∪ {v} • (em inglês) Applet do algoritmo de Dijkstra

w(u, v) é o peso(weight) da aresta que vai de u a v. • (em inglês) Simulação do algoritmo de Dijkstra
76 CAPÍTULO 7. ALGORITMOS PARA OBTER A ÁRVORE DE EXTENSÃO MÍNIMA

7.3.5 Referências tivo agora será voltar a executar os passos 1 a 3 até que
existam apenas 2 vértices e um único arco.
[1] Dijkstra, Edsger; Thomas J. Misa, Editor (2010-08).
A título de exemplo
«An Interview with Edsger W. Dijkstra». Commu-
nications of the ACM [S.l.: s.n.] 53 (8): 41–47. Seja V um grafo não orientado cuja representação matri-
doi:10.1145/1787234.1787249. «What is the shortest cial é a seguinte:
way to travel from Rotterdam to Groningen? It is the al-
gorithm for the shortest path which I designed in about 20 Nota: As posições (i,j) e (j,i) da matriz anterior têm os mesmos
minutes. One morning I was shopping with my young fi- valores. Isso indica que o grafo em análise é não orientado.
anceé, and tired, we sat down on the café terrace to drink Executando o passo 1 acima referido sobre esta matriz
a cup of coffee and I was just thinking about whether I
passaríamos a ter a seguinte matriz:
could do this, and I then designed the algorithm for the
shortest path.» Analisando esta nova matriz podemos ver que existem
duas linhas a zero (e e f), o que claramente indica a exis-
[2] Dijkstra 1959 tência de dois subgrafos. Como verificar quais os subgra-
fos? É um processo simples de verificar quais as linhas
e colunas que se cruzam. Neste caso os novos subgrafos
7.4 Algoritmo de Boruvka são dados pelas seguintes matrizes:
Notar que é necessário reter,da matriz original os valores
O algoritmo de Borůvka (ou Barůvka como também que cruzam os vértices dos diferentes subgrafos gerados
é conhecido) é um algoritmo para encontrar uma árvore no passo 1, ou seja, a arco a-b (com peso 4), o arco c-b
geradora mínima em um grafo para o qual todos os pesos (com peso 2), o arco b-e (com peso 5) e o arco e-f (com
de arestas sejam distintos. peso 2). Estes arcos são usados para unir os vértices do
arco gerado no passo 3.
Este algoritmo caracteriza-se pela divisão do grafo origi-
nal em vários subgrafos para os quais é calculado a Mini- Neste exemplo bastante simples, o passo 2 representado
mum Spanning Tree (árvore geradora mínima). Ou seja, pelas duas matrizes anteriores. Deste modo, não é ne-
no fundo, pode ser considerada uma variação de algorit- cessário encontrar a Minimum Spanning Tree para cada
mos como os de Prim e Kruskal. É um algoritmo que, de uma destas matrizes já que quando se executa o passo 1
modo diverso dos algoritmos de Kruskal e Prim, não usa estas são encontradas automaticamente (outros exemplos
uma fila de prioridades[1] . há em que é necessário executar o passo 2). Isto leva,
então, à geração do grafo do passo 3 em que temos dois
É um algoritmo com uma velocidade de convergência (ou
vértices (um para cada uma das matrizes anteriores) e que
resolução) bastante rápida sendo ideal para implementa-
pode ser representado sob a seguinte forma
ção em computadores paralelos já que a Minimum Span-
ning Tree de cada um dos subgrafos pode ser calculada Note-se que a diagonal principal da matriz está a zero
numa máquina diferente. mas a outra diagonal não (é apenas uma questão de re-
presentacão. (matriz transposta esta matriz ir-se-ia obter
Este algoritmo é recursivo e só termina quando existe ape-
a diagonal principal não nula e a outra diagonal a zero.)
nas um vértice.
Estes valores indicam possíveis arcos que ligam os vérti-
O algoritmo de Baruvka compreende os seguintes passos: ces deste grafo. Então, volta-se a executar o passo 1 sobre
1 - para cada vértice escolher o seu arco com peso mí- este grafo pelo que se chega à conclusão de que o grafo
nimo. Deste passo poderão resultar vários subgrafos. inicial deu origem a um grafo final cuja representação é a
seguinte:
2 - caso o passo 1 dê origem a grafos não conecta-
dos, considere-se cada subgrafo gerado no passo anterior
como um vértice do grafo final. Estes vértices do grafo 7.4.1 Ver também
final conterão os vértices de cada umdos subgrafos ge-
rados no passo 1. Para cada um dos subgrafos gerados • Otakar Borůvka
execute-se de novo o passo 1 (recursividade). Neste mo-
• algoritmo de Prim
mento pode-se, caso existam várias máquinas diferentes,
correr este algoritmo nas várias máquinas sendo que cada • algoritmo de Kruskal
máquina irá ter assignada a si um dos subgrafos gerados
no passo 1 (este tipo de distribuição de processamento é
mais conhecido como Single Instruction Multiple Data já 7.4.2 Referências
que cada máquina vai executar as mesmas instruções mas
sobre um conjunto de dados diferentes). [1] GOODRICH, Michael T.; TAMASSIA, Roberto (2004).
Projeto de Algoritmos. Fundamentos, Análise e Exemplos
3 - Quando for encontrada a Minimum Spanning Tree da Internet (Porto Alegre: Bookman). p. 369-370. ISBN
para cada um dos grafos gerar um novo grafo onde cada 85-363-0303-4.
um vértices deste grafo é um dos subgrafos. O objec-
Capítulo 8

Grafos individuais

8.1 Grafo de Biggs-Smith [2] Brouwer, A. E.; Cohen, A. M.; and Neumaier, A.
Distance-Regular Graphs. New York: Springer-Verlag,
1989.
No campo da matemática da teoria dos grafos o grafo
de Biggs–Smith é um grafo não-orientado 3-regular com [3] Royle, G. F102A data
102 vértices e 153 arestas.[1]
[4] Conder, M. and Dobcsányi, P. “Trivalent Symmetric
Ele tem número cromático 3, índice cromático 3, raio
Graphs Up to 768 Vertices.” J. Combin. Math. Combin.
7, diâmetro 7 e cintura 9. É tanto 3-vértice-conectado Comput. 40, 41–63, 2002
quanto 3-aresta-conectado.
Todos os grafos distância-regular cúbicos são [5] E. R. van Dam and W. H. Haemers, Spectral Characte-
conhecidos.[2] O grafo Biggs–Smith é um destes 13 rizations of Some Distance-Regular Graphs. J. Algebraic
Combin. 15, pages 189–202, 2003
grafos.

8.1.1 Propriedades algébricas 8.2 Grafo de Brouwer-Haemers


O grupo de automorfismo do grafo de Biggs–Smith é um No campo da matemática da teoria dos grafos, o Grafo
grupo de ordem 2448[3] isomórfico ao PGL(2,17). Ele de Brouwer–Haemers é um grafo não direcionado 20-
age transitivamente sobre os vértices, nas arestas e nos ar- regular com 81 vértices e 810 arestas. É o único grafo
cos do grafo. Portanto, o grafo de Biggs–Smith é im grafo fortemente regular com parâmetros (81, 20, 1, 6).
simétrico. Ele tem automorfismos que levam qualquer
vértice para qualquer outro vértice e qualquer aresta para
qualquer outra aresta. De acordo com o censo de Foster, Propriedades algébricas
o grafo de Biggs-Smith, referenciado como F102A, é o
único grafo cúbico simétrico em 102 vértices.[4] O automorfismo de grupo do grafo de Brouwer-Haemers
O grafo de Biggs–Smith é também singularmente deter- é um grupo da oredem de 233280. O polinômio caracte-
minado por seu espectro de grafo, o conjunto de autova- rístico do grafo de Brouwer-Haemers é: −(x − 20)(x −
lores do grafo de sua matriz de adjacência.[5] 2)60 (x + 7)20 .
O polinômio característico do grafo de Biggs–Smith é:
(x − 3)(x − 2)18 x17 (x2 − x − 4)9 (x3 + 3x2 − 3)16 . 8.2.1 Ligações externas
• Weisstein, Eric W. “Brouwer–Haemers Graph.”
8.1.2 Galeria From MathWorld—A Wolfram Web Resource.
• O número cromático do grafo de Biggs–Smith graph • Página de Andries E. Brouwer.
é 3.

• O índice cromático do grafo de Biggs–Smith graph


é 3. 8.3 Grafo de Desargues
• Desenho alternativo do grafo de Biggs–Smith.
No campo da matemática da teoria dos grafos o grafo de
Desargues é um grafo cúbico, distância-transitivo com
8.1.3 Referências 20 vértices e 30 arestas.[1] É nomeado em honra a Girard
Desargues, surge a partir de diferentes construções com-
[1] Eric W. Weisstein, Biggs–Smith Graph em MathWorld binatória, tem um elevado nível de simetria, é o único

77
78 CAPÍTULO 8. GRAFOS INDIVIDUAIS

conhecido cubo parcial cúbico não-planar , e tem sido Pode-se interpretar esta representação de produtos do
aplicado em bases de dados químicos. grupo de simetria em termos de construções do grafo de
O nome “grafo de Desargues” também tem sido usado Desargues: o grupo simétrico em cinco pontos é o grupo
para se referir ao complemento do grafo de Petersen[2] . de simetria da configuração de Desargues, e o subgrupo
de ordem-2 troca os papéis dos vértices que represen-
tam pontos da configuração de Desargues e os vértices
8.3.1 Construções que representam as linhas. Como alternativa, em ter-
mos do grafo bipartido de Kneser, o grupo simétrico em
Existem várias maneiras diferentes de construir o grafo cinco pontos de age em separado sobre os subconjuntos
de Desargues: de cinco pontos de dois elementos e de três elementos, e a
complementação dos subconjuntos formam um grupo de
ordem dois que transforma um tipo de subconjunto em
• É o grafo de Petersen generalizado G(10, 3). Para outro. O grupo simétrico em cinco pontos é também o
formar o grafo de Desargues desta forma, conecte grupo de simetria do grafo de Petersen, e o subgrupo de
dez dos vértices em um decágono regular, e conecte ordem-2 troca os vértices dentro de cada par de vértices
os outros dez vértices em uma estrela de dez pon- formados na construção da dupla cobertura.
tas que conecta os pares de vértices a uma distância
três em um segundo decágono. O grafo de Desargue O grafo de Petersen generalizado G(n, k) é vértice-
2
consiste das 20 arestas destes dois polígonos junta- transitivo se e somente se n = 10 e k = 2 ou se k ≡ ±1
mente com 10 arestas adicionais de pontos de cone- (mod n) e é aresta-transitivo somente nos seguintes sete
xão de um decágono para os pontos correspondentes casos: (n, k) = (4, 1), (5, 2), (8, 3), (10, 2), (10, 3), (12, 5),
do outro. (24, 5).[3] Assim, o grafo de Desargues é um dos apenas
sete grafos de Petersen generalizados simétricos. Entre
• É o grafo de Levi da configuração de Desargues. estes sete grafos estão o grafo cúbico G(4, 1), o grafo de
Esta configuração é composta por dez pontos e dez Petersen G(5, 2), o grafo de Möbius–Kantor G(8, 3), o
linhas descrevendo dois triângulos em perspectiva, grafo dodecaédrico G(10, 2) e o grafo de Nauru G(12, 5).
seu centro de perspectiva, e seu eixo de perspec-
O polinômio característico do grafo de Desargues é:
tiva. O grafo de Desargues tem um vértice para cada
ponto, um vértice para cada linha, e uma aresta para
cada par de linhas de ponto incidente. O teorema
de Desargues, nomeado em honra ao matemático (x − 3)(x − 2) (x − 1) (x + 1) (x + 2) (x + 3).
4 5 5 4

francês do século 17 Girard Desargues, descreve um


conjunto de pontos e linhas que formam essa confi- Portanto o grafo de Desargues é um grafo integral: seu
guração, e a configuração e o grafo devem seu nome espectro consiste inteiramente de inteiros.
a ela.

• É a cobertura bipartida dupla do grafo de Petersen, 8.3.3 Aplicações


formada pela substituição de cada vértice do grafo
de Petersen por um par de vértices e cada aresta do Em química, o grafo de Desargues é conhecido como
grafo de Petersen por um par de arestas cruzadas. o grafo de Desargues-Levi; é utilizado para organi-
• É o grafo de Kneser bipartido H₅,₂. Seus vértices zar sistemas de estereoisômeros de compostos 5-ligantes.
podem ser rotulados pelos dez subconjuntos de dois Nesta aplicação, as trinta arestas do grafo correspondem
[4][5]
elementos e os dez subconjuntos de três elementos a pseudorotações dos ligantes .
de um conjunto de cinco elementos, com uma aresta
conectando dois vértices quando um dos conjuntos
correspondentes é um subconjunto do outro. 8.3.4 Outras propriedades
• O grafo de Desargues é Hamiltoniano e pode ser O grafo de Desargues tem um número de cruzamento re-
construído pela notação LCF: [5,−5,9,−9]5 tilíneo 6, e é o menor grafo cúbico com este número de
cruzamento (sequência A110507 na OEIS). É o único co-
nhecido cúbico não planar cubo parcial[6] .
8.3.2 Propriedades algébricas
O grafo de Desargues tem um número cromático 2, índice
O grafo de Desargues é um grafo simétrico: tem simetrias cromático 3, raio 5, diâmetro 5 e cintura 6. É também
que levam qualquer vértice para qualquer outro vértice e um grafo hamiltoniano, 3-vértice-conectado, e 3-aresta-
qualquer aresta para qualquer outra aresta. Seu grupo de conectado.
simetria tem ordem 240, e é isomórfico ao o produto de Todos os grafos distância-regular cúbicos são
um grupo simétrico em 5 pontos, com um grupo de ordem conhecidos.[7] O grafo de Desargues é um destes
2. 13 grafos.
8.5. GRAFO DE FOSTER 79

8.3.5 Galeria Como um grafo semi-simétrico, o gráfico de Folkman é


bipartido, e seu grupo de automorfismo age transitiva-
• O grafo de Desargues colorido para sobresaltar vá- mente em cada um dos dois conjuntos de vértices da bi-
rios ciclos. partição. No diagrama abaixo, indicando o número cro-
mático do grafo, os vértices verdes não podem ser mape-
• O índice cromático do grafo de Desargues é 3. ados para os vermelhos por qualquer automorfismo, mas
• O número cromático do grafo de Desargues é 2. qualquer vértice vermelho pode ser mapeado em qualquer
outro vértice vermelho e qualquer vértice verde pode ser
mapeado em qualquer outro vértice verde.
8.3.6 Referências O polinômio característico do grafo de Folkman é (x −
4)x10 (x + 4)(x2 − 6)4 .
[1] Eric W. Weisstein, Desargues Graph em MathWorld

[2] KAGNO, I. N.. (1947). "Desargues’ and Pappus’ graphs


and their groups". American Journal of Mathematics 69
8.4.2 Galeria
(4): 859–863. DOI:10.2307/2371806.
• O índice cromático do grafo de Folkman é 4.
[3] FRUCHT, R.; GRAVER, J. E.; WATKINS, M. E..
• O número cromático do grafo de Folkman é 2.
(1971). “The groups of the generalized Petersen graphs”.
Proceedings of the Cambridge Philosophical Society 70: • O grafo de Folkman é Hamiltoniano.
211–218. DOI:10.1017/S0305004100049811..

[4] Balaban, A. T.; FǎRCAşIU, D.; BǎNICǎ, R.. (1966).


8.4.3 Referências
“Graphs of multiple 1, 2-shifts in carbonium ions and re-
lated systems”. Rev. Roum. Chim. 11: 1205. [1] Eric W. Weisstein, Folkman graph em MathWorld
[5] MISLOW, Kurt. (1970). “Role of pseudorotation [2] Skiena, S. Implementing Discrete Mathematics: Combi-
in the stereochemistry of nucleophilic displacement re- natorics and Graph Theory with Mathematica. Reading,
actions”. Acc. Chem. Res. 3 (10): 321–331. MA: Addison-Wesley, pp. 186-187, 1990
DOI:10.1021/ar50034a001.
[3] FOLKMAN, J.. (1967). “Regular line-symmetric
[6] KLAVŽAR, Sandi; LIPOVEC, Alenka. (2003). “Par- graphs”. Journal of Combinatorial Theory 3: 215–232.
tial cubes as subdivision graphs and as generalized Pe- DOI:10.1016/S0021-9800(67)80069-3.
tersen graphs”. Discrete Mathematics 263: 157–165.
DOI:10.1016/S0012-365X(02)00575-7.

[7] Brouwer, A. E.; Cohen, A. M.; and Neumaier, A. 8.5 Grafo de Foster
Distance-Regular Graphs. New York: Springer-Verlag,
1989. No campo da matemática da teoria dos grafos, o Grafo
de Foster é um grafo 3-regular com 90 vértices e 135
arestas.[1]
8.4 Grafo de Folkman O grafo de Foster é Hamiltoniano e tem número cromá-
tico 2, índice cromático 3, raio 8, diâmetro 8 e cintura 10.
No campo da matemática da teoria dos grafos o grafo de Ele é também um grafo 3-vértice-conectado e 3-aresta-
Folkman, nomeado em honra a Jon Folkman, é um grafo conectado.
bipartido 4-regular com 20 vértices e 40 arestas.[1]
Todos os grafos distância-regular cúbicos são
O grafo de Folkman é Hamiltoniano e tem número cro- conhecidos.[2] O grafo de Foster é um destes 13
mático 2, índice cromático 4, raio 3, diâmetro 4 e cintura grafos. É o único grafo distância-transitivo com array de
4. e é um grafo perfeito tanto 4-vértice-conectado quanto intersecção {3,2,2,2,2,1,1,1;1,1,1,1,2,2,2,3}.[3] Pode ser
4-aresta-conectado. construído como o grafo de incidência do espaço parcial
linear, que é a única cobertura tripla com nenhum 8-gono
do quadrângulo generalizado GQ(2,2). É nomeado em
8.4.1 Propriedades algébricas honra a R. M. Foster, cujo censo de Foster de grafos
simétricos cúbicos incluíam este grafo.
O grupo de automorfismo do grafo de Folkman age tran-
sitivamente em suas arestas, mas não em seus vértices. É
o menor grafo não direcionado, que é aresta-transitivo e 8.5.1 Propriedades algébricas
regular, mas não é vértice-transitivo.[2] Esses grafos são
chamados semi-simétricos e foram estudados pela pri- O grupo de automorfismo do grafo de Foster é um grupo
meira vez por Folkman em 1967 que descobriu o grafo de ordem 4320.[4] Ele age transitivamente sobre os vér-
de 20 vértices, que agora é nomeado em sua honra.[3] tices, nas arestas e nos arcos do grafo. Portanto o grafo
80 CAPÍTULO 8. GRAFOS INDIVIDUAIS

de Foster é um grafo simétrico. Ele tem automorfismos deste teorema também devido à Frucht afirma que qual-
que levam qualquer vértice para qualquer outro vértice e quer grupo pode ser percebido como as simetrias de um
qualquer aresta a qualquer outra aresta. Segundo o censo grafo 3-regular;[4] o grafo de Frucht fornece um exemplo
de Foster, o grafo de Foster, referenciado como F90A, é desta realização para o grupo trivial.
o único grafo cúbico simétrico em 90 vértices.[5] O polinômio característico do grafo de Frucht é igual a
O polinômio característico do grafo de Foster é igual a (x − 3)(x − 2)x(x + 1)(x + 2)(x3 + x2 − 2x − 1)(x4 +
(x − 3)(x − 2)9 (x − 1)18 x10 (x + 1)18 (x + 2)9 (x + x3 − 6x2 − 5x + 4) .
3)(x2 − 6)12 .

8.6.2 Galeria
8.5.2 Galeria
• O grafo de Frucht é planar.
• Grafo de Foster colorido para ressaltar vários ciclos.
• O número cromático do grafo de Frucht é 3.
• O número cromático do grafo de Foster é 2.
• O grafo de Frucht é Hamiltoniano.
• O índice cromático do grafo de Foster é 3.

8.6.3 Referências
8.5.3 Referências
[1] Eric W. Weisstein, Frucht Graph em MathWorld
[1] Eric W. Weisstein, Foster Graph em MathWorld
[2] Frucht, R. (1939), “Herstellung von Graphen mit vorge-
[2] Brouwer, A. E.; Cohen, A. M.; and Neumaier, A. gebener abstrakter Gruppe.” (em German), Compositio
Distance-Regular Graphs. New York: Springer-Verlag, Mathematica 6: 239–250, ISSN 0010-437X, http://www.
1989. numdam.org/item?id=CM_1939__6__239_0

[3] Cubic distance-regular graphs, A. Brouwer. [3] Skiena, S. Implementing Discrete Mathematics: Combi-
natorics and Graph Theory with Mathematica. Reading,
[4] Royle, G. F090A data MA: Addison-Wesley, 1990
[5] Conder, M. and Dobcsányi, P. “Trivalent Symmetric [4] FRUCHT, R.. (1949). "Graphs of degree three with a
Graphs Up to 768 Vertices.” J. Combin. Math. Combin. given abstract group". Canadian Journal of Mathematics
Comput. 40, 41-63, 2002 1: 365–378. ISSN 0008-414X.

8.6 Grafo de Frucht 8.7 Grafo de Gray


No campo da matemática da teoria dos grafos, o Grafo No campo da matemática da teoria dos grafos o grafo
de Frucht é um grafo 3-regular com 12 vértices e 18 ares- de Gray é um grafo não direcionado bipartido, com 54
tas e nenhuma simetria não-trivial.[1] Foi descrito pela vértices e 81 arestas. É um grafo cúbico: todo vértice
primeira vez por Robert Frucht em 1939.[2] toca exatamente três arestas. Foi descoberto por Marion
O grafo de Frucht é um grafo Halin com número cromá- C. Gray, em 1932, (de forma inédita), em seguida, des-
tico 3, índice cromático 3, raio 3, diâmetro 4, e cintura coberto independentemente por Bouwer 1968, em res-
3. Como em todos os grafos Halin, o grafo de Frucht é posta a uma pergunta feita por Jon Folkman em 1967[1] .
planar, 3-vértice-conectado, e poliédrico. É também um O grafo de Gray é interessante como o primeiro exem-
grafo 3-aresta-conectado. plo conhecido de um grafo cúbico tendo a propriedade
algébrica de ser aresta-transitivo, mas não sendo vértice-
O grafo de Frucht é hamiltoniano e pode ser construído a
transitivo (ver abaixo).
partir da notação LCF: [−5,−2,−4,2,5,−2,2,5,−2,−5,4,2].
O grafo de Gray tem um número cromático 2, índice cro-
mático 3, raio 6 e diâmetro 6. Ele é também um grafo
8.6.1 Propriedades algébricas 3-vértice-conectado e 3-aresta-conectado não-planar.

O grafo de Frucht é o menor grafo cúbico pos-


suindo somente um único automorfismo de grafos, a 8.7.1 Construção
identidade[3] (ou seja, cada vértice pode ser distinguido to-
pologicamente de todos os outros vértices). Tais grafos O grafo de Gray pode ser construído [2] dos 27 pontos de
são chamados assimétricos (ou identidade). O teorema uma grade de 3 × 3 × 3 e as 27 linhas de eixo paralelo
de Frucht diz que qualquer grupo pode ser compreendido a esses pontos. Esta coleção de pontos e linhas formam
como o grupo de simetrias de um grafo,[2] e um reforço um configuração projetiva: cada ponto tem exatamente
8.8. GRAFO DE HEAWOOD 81

três linhas, através dele, e cada linha tem exatamente três [3] Monson, B.; Pisanski, T.; Schulte, E.; Ivic-Weiss, A.
pontos sobre ela. O grafo de Gray é o grafo de Levi dessa (2007), “Semisymmetric Graphs from Polytopes”, Jour-
configuração, que tem um vértice para cada ponto e para nal of Combinatorial Theory, Series A 114: 421–435
cada linha da configuração, e uma aresta para cada par [4] v, Dragan; Pisanski, Tomaž. (2000). “The Gray
de um ponto e uma linha que se tocam. Esta construção graph revisited”. Journal of Graph Theory 35:
generaliza (Bouwer 1972) para qualquer dimensão n ≥ 3, 1–7. DOI:<1::AID-JGT1>3.0.CO;2-7 10.1002/1097-
rendendo um grafo de Levi n-valente com propriedades 0118(200009)35:1<1::AID-JGT1>3.0.CO;2-7..
algébricas semelhantes às do gráfico deGray.
[5] Marušič, Dragan; Pisanski, Tomaž; Wilson, Steve.
Em (Monson, Pisanski, Schulte, Ivic-Weiss 2007)[3] , o (2005). “The genus of the Gray graph is 7”. Euro-
grafo de Gray aparece como um tipo diferente de grafo pean Journal of Combinatorics 26 (3–4) p. 377–385.
de Levi com as arestas e faces triangulares de uma deter- DOI:10.1016/j.ejc.2004.01.015..
minada localmente toroidal resumo regular 4 politopo.
É, portanto, o primeiro de uma família infinita de grafos
cúbicos similarmente construídos. 8.7.4 Ligações externas
Marušič e Pisanski (2000)[4] indicaram vários métodos • O grafo de Gray é o menor grafo de seu tipo , em
alternativos de construção do grafo de Gray. Como acon- MathWorld.
tece com qualquer grafo bipartido, não há ciclos de com-
primento impar, e também não há ciclos de quatro ou
seis vértices, de modo que a cintura do gráfico Gray é 8. 8.7.5 Galeria
A superfície orientada mais simples sobre a qual o grafo
de Gray pode ser incorporado tem gênero 7[5] . O grafo • O grafo de Gray
de Gray é hamiltoniano e pode ser construído a partir da
notação LCF: • O número cromático do grafo de Gray é 2.
• O índice cromático do grafo de Gray é 3.

[−25, 7, −7, 13, −13, 25]9 . • A configuração básica do grafo de Gray.

8.7.2 Propriedades algébricas 8.8 Grafo de Heawood


O grupo de automorfismo do grafo de Gray é um grupo No campo da matemática da teoria dos grafos o grafo
de ordem 1296. Ele atua transitivamente nas arestas do de Heawood é um grafo não-orientado com 14 vértices e
grafo, mas não em seus vértices : existem simetrias le- 21 arestas.[1] O grafo é cúbico, e todos os ciclos do grafo
vando cada aresta para qualquer outra aresta mas não to- têm seis ou mais arestas. Todos os menores grafos cúbi-
mando cada vértice para qualquer outro vértice. Os vér- cos têm ciclos mais curtos, de modo que este grafo é o
tices que correspondem a pontos da configuração subja- gaiola−6, o menor grafo cúbico de cintura 6.
centes apenas podem ser simétricos para outros vértices
É também o grafo de Levi do plano de Fano, o grafo que
que correspondem a pontos, e os vertices que correspon-
representa a incidência entre os pontos e linhas nesta ge-
dem a linhas só podem ser simétricos para outros vértices
ometria. É um grafo distância-regular; o seu grupo de
que correspondem a linhas. Portanto, o grafo de Gray é
simetrias é PGL2 (7).[2]
um grafo semi-simétrico, o menor possível grafo semi-
simétrico cúbico. Há 24 correspondências perfeitas no grafo de Heawood;
para cada correspondência, o conjunto de arestas fora
O polinômio característico do grafo de Gray é
das correspondências forma um ciclo Hamiltoniano. Por
exemplo, a figura mostra os vértices do grafo colocados
em um ciclo, com as diagonais internas do ciclo formando
(x − 3)x16 (x + 3)(x2 − 6)6 (x2 − 3)12 . uma correspondência. Subdividindo as arestas do ciclo
em duas correspondências, podemos particionar o grafo
de Heawood em três correspondências perfeitas (isto é,
8.7.3 Referências usando 3 cores em suas arestas) em oito formas diferen-
tes (Brouwer).
[1] Folkman, Jon. (1967). “Regular line-symmetric
O grafo de Heawood foi batizado em honra de Percy John
graphs”. Journal of Combinatorial Theory 3 p. 533-535.
DOI:10.1016/S0021-9800(67)80069-3.. Heawood, que em 1890 provou que cada subdivisão do
toro em polígonos pode ser colorida, no máximo, com
[2] Bouwer, I. Z.. (1972). “An edge but not vertex transitive sete cores.[3][4] O grafo de Heawood forma uma subdi-
regular graphs”. Journal of Combinatorial Theory, Series visão do toro com sete regiões adjacentes mutuamente,
B 12: 32–40. DOI:10.1016/0095-8956(72)90030-5.. mostrando que esse limite é apertado.
82 CAPÍTULO 8. GRAFOS INDIVIDUAIS

O grafo de Heawood tem número de cruzamento 3, e é [3] BROWN, Ezra. (2002). "The many names of
o menor grafo cúbico com este número de cruzamento. (7,3,1)". Mathematics Magazine 75 (2): 83–94.
Incluindo o grafo de Heawood, existem 8 grafos distintos DOI:10.2307/3219140.
de ordem 14 com número de cruzamento 3.
[4] Heawood, P. J.. (1890). “Map colouring theorems”.
O grafo de Heawood é um grafo distância-unidade.[5] Quarterly J. Math. Oxford Ser. 24: 322–339.

[5] GERBRACHT, Eberhard H.-A.. (2009). “Eleven unit


8.8.1 Propriedades algébricas distance embeddings of the Heawood graph”. Arxiv.

[6] BONDY, J. A.; MURTY, U. S. R. (1976). Graph Theory


O grupo de automorfismo do grafo de Heawood é iso- with Applications (New York: North Holland). p. 237.
mórfico ao grupo linear projetivo PGL2 (7), um grupo ISBN 0-444-19451-7.
de ordem 336.[6] Ele atua transitivamente sobre os vér-
tices, nas arestas e nos arcos do grafo. Portanto o grafo [7] Royle, G. “Cubic Symmetric Graphs (The Foster Cen-
Heawood é um grafo simétrico. Ele tem automorfismos sus).”
que levam qualquer vértice para qualquer outro vértice
[8] Conder, M. and Dobcsányi, P. “Trivalent Symmetric
e qualquer aresta para qualquer outra aresta. De acordo Graphs Up to 768 Vertices.” J. Combin. Math. Combin.
com o censo Foster, o grafo de Heawood, referenciado Comput. 40, 41-63, 2002.
como F014A, é o único grafo cúbico simétrico com 14
vértices.[7][8]
O polinômio característico do grafo de Heawood é (x − 8.9 Grafo de Higman-Sims
3)(x + 3)(x2 − 2)6 . É o único grafo com este polinômio
característico, tornando-se um grafo determinado pelo
seu espectro.

8.8.2 Incorporado em um Toro

O grafo de Heawood é um grafo toroidal; ou seja, ele pode


ser incorporado sem cruzamentos em um toro. Uma in-
corporação deste tipo coloca seus vértices e arestas em
um espaço euclidiano tri-dimensional como o conjunto
de vértices e arestas de um poliedro convexo com a topo-
logia de um toro, o poliedro de Szilassi. As partes em separado da construção de Hafner.

No campo da matemática da teoria dos grafos, o Grafo


8.8.3 Galeria de Higman–Sims é um grafo não direcionado, 22-
regular com 100 vértices e 1100 arestas. É o único grafo
• O poliedro de Szilassi. fortemente regular com 100 vértices e valência 22, onde
nenhum par de vértices vizinhos partilham um vizinho
• O grafo de Heawood tem número de cruzamento 3. comum e cada par de vértices não-vizinhos partilham seis
vizinhos comuns.[2] Foi construído em 1968 por Donald
• O índice cromático do grafo de Heawood é 3. G. Higman e Charles C. Sims como uma forma de definir
o grupo de Higman–Sims, e este grupo é um subgrupo
• O número cromático do grafo de Heawood é 2. do índice dois no grupo de automorfismos do grafo de
Higman–Sims.[3]
• A incorporação do grafo de Heawood em um toro
(mostrado como um quadrado com condições de A construção começa com o grafo M22 , cujos 77 vérti-
contorno periódicas) particionando-o em sete re- ces são os blocos do S(3,6,22) sistema de Steiner W22 .
giões mutuamente adjacentes Vértices adjacentes são definidos como blocos disjuntos.
Este grafo é fortemente regular; qualquer vértice tem 16
vizinhos, quaisquer dois vértices adjacentes não tem vi-
8.8.4 Referências zinhos comuns, e quaisquer dois vértices não adjacentes
têm 4 vizinhos comuns. Este grafo tem M22 :2 como seu
[1] Eric W. Weisstein, Heawood Graph em MathWorld automorfismo de grupo, sendo M22 o seu grupo Mathieu.
[2] BROUWER, Andries E. «Heawood graph». Additions O grafo de Higman–Sims é formado anexando os 22 pon-
and Corrections to the book Distance-Regular Graphs tos de W22 e um 100º vértice C. Os vizinhos de C são
(Brouwer, Cohen, Neumaier; Springer; 1989). Ligação ex- definidos ser estes 22 pontos. Um ponto adjacente a um
terna em |obra= (Ajuda) bloco é definido ser aquele que está incluído.
8.10. GRAFO DE HOFFMAN-SINGLETON 83

Um grafo de Higman–Sims pode ser particionado em todos os automorfismos de grafos é obtida). Isso mos-
duas cópias do grafo de Hoffman–Singleton de 352 ma- tra que o grupo Higman-Sims ocorre dentro do grupo de
neiras. Conway Co2 (com sua extensão de ordem 2) e Co3 , e,
conseqüentemente, também Co1 .[6]

8.9.1 Propriedades algébricas


8.9.3 Referências
O grupo de automorfismo do grafo de Higman–Sims
graph é um grupo de ordem 88704000 isomórfico ao [1] HAFNER, P. R.. (2004). "On the Graphs of Hoffman–
produto semidireto do grupo de Higman–Sims de or- Singleton and Higman–Sims". The Electronic Journal of
dem 44352000 com o grupo cíclico de ordem 2.[4] Ele Combinatorics 11 (1): R77(1–32)..
tem automorfismos que levam qualquer aresta para outra
aresta, fazendo o grafo de Higman–Sims um grafo aresta- [2] Eric W. Weisstein, Grafo de Higman–Sims em MathWorld
transitivo.[5]
[3] HIGMAN, Donald G.; SIMS, Charles C.. (1968). “A
O polinômio característico do grafo de Higman–Sims
simple group of order 44,352,000”. Mathematische Zeits-
graph is (x − 22)(x − 2)77 (x + 8)22 . Portanto o grafo de
chrift 105 (2): 110–113. DOI:10.1007/BF01110435.
Higman–Sims é um grafo integral: seu espectro de grafo
consiste inteiramente de inteiros. Ele é também consi- [4] BROUWER, Andries E. «Higman–Sims graph».
derado o único grafo com este polinômio característico,
fazendo dele um grafo determinado por seu espectro. [5] Brouwer, A. E. and Haemers, W. H. “The Gewirtz Graph:
An Exercise in the Theory of Graph Spectra.” Euro. J.
Combin. 14, 397–407, 1993.
8.9.2 Dentro da malha de Leech
[6] Conway, John H.; Sloane, Neil J. A. «10 (John H.
Conway, “Three Lectures on Exceptional Groups”), §3.5
(“The Higman–Sims and McLaughlin groups”)». Sphere
Packings, Lattices and Groups. Grundlehren der mathe-
matischen Wissenschaften 3 ed. Springer-Verlag [S.l.] p.
292–293. ISBN 1441931341.

8.10 Grafo de Hoffman-Singleton

Uma projeção do grafo de Higman-Sims dentro da malha de Le-


ech.

O grafo de Higman-Sims ocorre naturalmente no interior O grafo de Hoffman-Singleton. O subgrafo das arestas azuis é
da malha de Leech: se X, Y e Z são três pontos na malha a soma dos dez pentágonos disjuntos.
de Leech tais que as distâncias XY, XZ e YZ são 2, 3, 3
respectivamente, então há exatamente 100 pontos da ma- No campo da matemática da teoria dos grafos, o Grafo
lha de Leech T de tal forma que todas as distâncias XT, de Hoffman–Singleton é um grafo 7-regular não direci-
YT e ZT são iguais a 2, e se ligarmos dois pontos, tais onado com 50 vértices e 175 arestas. É o único grafo for-
T e T′ quando a distância entre eles é 2, O grafo resul- temente regular com parâmetros (50,7,0,1).[4] Foi cons-
tante é isomorfo ao grafo de Higman-Sims. Além disso, truído por Alan Hoffman e Robert Singleton ao tentar
o conjunto de todos os automorfismos da malha de Le- classificar todos os grafos de Moore, e é a mais alta ordem
ech (Isto é, congruências euclidiana fixando-a) que fixam de grafo de Moore esistente conhecida até o momento.[5]
cada um dos X, Y e Z é o grupo de Higman–Sims (Se Como é um grafo de Moore onde cada vértice tem grau
nós permitirmos trocar X e Y, a extensão de ordem 2 de 7, e sua cintura é 5, ele é um (7,5)-gaiola.
84 CAPÍTULO 8. GRAFOS INDIVIDUAIS

8.10.1 Construção Ele tem um grupo de automorfismo da ordem de 54


automorfismos.[6] Este é um grupo menor que um grafo
Uma construção simples, direta é como se segue: Tome simétrico com o mesmo número de vértices e arestas te-
cinco pentágonos P e cinco pentagramas Qᵢ, de forma ria. O desenho do grafo à direita destaca isto, na medida
que o vértice j de P seja adjacente aos vértices j-1,j+1 em que carece de simetria reflexiva.
de P e o vértice j de Qᵢ seja adjacente aos vértices j-2,j+2
O polinômio característico do grafo de Holt é:
de Qᵢ. Agora conecte o vértice j de P ao vértice hi+j de
Qᵢ. (Todos os índices mod 5.)

(x3 − 6x + 2)6 (x + 2)4 (x − 1)4 (x − 4).


8.10.2 Propriedades algébricas
O grupo de automorfismo do grafo de Hoffman-Singleton 8.11.1 Galeria
é um grupo de ordem 252000 isomórfico a PΣU(3,52 ).
Ele age transitivamente sobre os vértices, nas arestas e • O número cromático do grafo de Holt é 3.
nos arcos do grafo. Portanto, o grafo de Biggs–Smith é • O índice cromático do grafo de Holt é 5.
im grafo simétrico.
O polinômio característico do grafo de Hoffman- • O grafo de Holt é Hamiltoniano.
Singleton é igual a (x − 7)(x − 2)28 (x + 3)21 . Portanto
o grafo de Hoffman-Singleton é um grafo integral: seu
8.11.2 Referências
espectro de grafo consiste inteiramente de inteiros.
[1] Doyle, P. “A 27-Vertex Graph That Is Vertex-Transitive
and Edge-Transitive But Not L-Transitive.” October
8.10.3 Referências 1998.

[1] Eric W. Weisstein, Hoffman-Singleton Graph em [2] ALSPACH, Brian; MARUŠIČ, Dragan; NOWITZ,
MathWorld Lewis. (1994). "Constructing Graphs which
are ½-Transitive". Journal of the Australian
[2] Hafner, P. R. “The Hoffman-Singleton Graph and Its Au- Mathematical Society (Series A) 56 (3): 391–402.
tomorphisms.” J. Algebraic Combin. 18, 7-12, 2003. DOI:10.1017/S1446788700035564..
[3] Royle, G. “Re: What is the Edge Chromatic Number of [3] Jonathan L. Gross, Jay Yellen, Handbook of Graph The-
Hoffman-Singleton?" GRAPHNET@istserv.nodak.edu ory, CRC Press, 2004, ISBN 1584880902, p. 491.
posting. 28 de Setembro de 2004.
[4] Doyle, P. G. (1976), On Transitive Graphs, Senior Thesis,
[4] Brouwer, Andries E., Hoffman-Singleton Harvard College. Como citado pela MathWorld.
graph, http://www.win.tue.nl/~{}aeb/drg/graphs/
Hoffman-Singleton.html. [5] HOLT, Derek F.. (1981). “A graph which is edge tran-
sitive but not arc transitive”. Journal of Graph Theory 5
[5] Hoffman, Alan J.; Singleton, Robert R. (1960), (2): 201–204. DOI:10.1002/jgt.3190050210..
“Moore graphs with diameter 2 and 3”, IBM Jour-
nal of Research and Development 5 (4): 497–504, [6] Eric W. Weisstein, Doyle Graph em MathWorld
MR0140437, http://www.research.ibm.com/journal/rd/
045/ibmrd0405H.pdf.
8.12 Grafo de Ljubljana
8.11 Grafo de Holt No campo da matemática da teoria dos grafos o grafo
de Ljubljana é um grafo não direcionado bipartido com
No campo da matemática da teoria dos grafos o grafo de 112 vértices e 168 arestas.
Holt ou grafo de Doyle é o menor grafo meio-transitivo,
ou seja, o menor exemplo de grafo vértice-transitivo e É um grafo cúbico com diâmetro 8, raio 7, número cro-
aresta-transitivo que não é também simétrico.[1][2] Esses mático 2 e índice cromático 3. Sua cintura é 10 e há exa-
grafos não são comuns.[3] É nomeado em honra a Peter G. tamente 168 ciclos de comprimento[1]
10 nele. Há também
Doyle e Derek F. Holt, que descobriram o mesmo grafo 168 ciclos de comprimento 12.
de forma independente em 1976[4] e 1981[5] respectiva-
mente.
8.12.1 Construção
O grafo de Holt tem um diâmetro de 3, raio 3, cintura 5,
número cromático 3, índice cromático 5 e é hamiltoniano O grafo de Ljubljana é Hamiltoniano e pode ser cons-
com 98472 ciclos distintos hamiltonianos.[6] é também truído a partir da notação LCF : [47, −23, −31, 39, 25,
um grafo 4-vértice-conectado e 4-aresta-conectado. −21, −31, −41, 25, 15, 29, −41, −19, 15, −49, 33, 39,
8.13. GRAFO DE NAURU 85

−35, −21, 17, −33, 49, 41, 31, −15, −29, 41, 31, −15, [2] Marston Conder, Aleksander Malnič, Dragan Marušič
−25, 21, 31, −51, −25, 23, 9, −17, 51, 35, −29, 21, and Primž Potočnik. “A census of semisymmetric cubic
−51, −39, 33, −9, −51, 51, −47, −33, 19, 51, −21, graphs on up to 768 vertices.” Journal of Algebraic Com-
29, 21, −31, −39]2 . binatorics: An International Journal. Volume 23, Issue 3,
pages 255-294, 2006.
O grafo de Ljubljana é o grafo de Levi da configuração de
Ljubljana, uma configuração quadrangular livre com 56 [3] Brouwer, A. E.; Dejter, I. J.; and Thomassen, C. “Highly
linhas e 56 pontos.[1] Nesta configuração, cada linha con- Symmetric Subgraphs of Hypercubes.” J. Algebraic Com-
tém exatamente três pontos, cada ponto pertence a exata- binat. 2, 25-29, 1993.
mente 3 linhas e quaisquer duas linhas se cruzam em no [4] Bouwer, I. A. “On Edge But Not Vertex Transitive Regu-
máximo um ponto. lar Graphs.” J. Combin. Th. Ser. B 12, 32-40, 1972.

8.12.2 Propriedades algébricas


8.13 Grafo de Nauru
O grupo de automorfismo do grafo de Ljubljana é um
grupo de ordem 168. Ele age transitivamente em suas No campo da matemática da teoria dos grafos o grafo
arestas, mas não em seus vértices: existem simetrias le- de Nauru é um grafo simétrico, bipartido cúbico com
vando cada aresta para qualquer outra aresta, mas não le- 24 vértices e 36 arestas. Foi nomeado por David Epps-
vando cada vértice para qualquer outro vértice. Portanto, tein em alusão a estrela de doze pontas da bandeira do
o grafo de Ljubljana é um grafo semi-simétrico, o ter- Nauru[1]
ceiro menor grafo cúbico semi-simétrico possível após o
Ele tem número cromático 2, índice cromático 3, raio
grafo de Levi em 54 vértices e o grafo de Iofinova-Ivanov
4, diâmetro 4, e cintura 6[2] . Ele também é 3-vértice-
em 110 vértices.[2]
conectado, e 3-aresta-conectado.
O polinômio característico do grafo de Ljubljana é
Os menores grafos cúbicos com número de cruzamento
entre 1 e 8 são conhecidos (sequência A110507 na
OEIS). O menor grafo com 8 cruzamentos é o grafo de
(x−3)x (x+3)(x −x−4) (x −2) (x +x−4) (x −6x2 +4)14 .
14 2 7 2 6 2 7 4
Nauru. Existe 5 grafos cúbicos não-isomorfos de ordem
24 com número de cruzamentos de 8[3] . Um deles é o
8.12.3 História grafo de McGee também conhecido como (3-7)-gaiola[4] .

O grafo de Ljubljana foi publicado pela primeira vez em


1993 por Brouwer, Dejter e Thomassen.[3]
8.13.1 Construção
Em 1972, Bouwer já estava falando de uma de um grafo O grafo de Nauru é Hamiltoniano e pode ser descrito pela
cúbico de 112 vértices aresta- mas não vértice-transitivo notação LCF : [5, −9, 7, −7, 9, −5]4 .[1]
encontrado por R. M. Foster, mas não publicado ainda.[4]
O grafo de Nauru também pode ser construído como o
Conder, Malnic, Marusic, Pisanski e Potočnik redesco-
grafo de Petersen generalizado G(12, 5) que é formado
briram este grafo de 112 vértices em 2002 e nomearam-
pelos vértices de um dodecágono, ligado aos vértices de
no grafo de Ljubljana capital da Eslovénia. Eles provaram
uma estrela de doze pontos, em que cada ponta da estrela
que ele era o único grafo cúbico de 112 vértices aresta-
está ligada aos pontos quer estão a cinco passos de dis-
mas não vértice-transitivo cúbicos e, portanto, que o grafo
tância dela.
era aquele encontrado por Foster.

8.12.4 Galeria 8.13.2 Propriedades algébricas

• O número cromático do grafo de Ljubljana é 2. O grupo de automorfismo do grafo de Nauru é um grupo


de ordem 144[5] . É isomórfico ao produto direto dos
• O índice cromático do grafo de Ljubljana é 3. grupos simétricos S 4 e S 3 e age transitivamente nos vérti-
• Desenho alternativo do grafo de Ljubljana. ces, nas arestas e nos arcos do grafo. Portanto o grafo de
Nauru é um grafo simétrico (embora não seja distância-
• O grafo de Ljubljana é o grafo de Levi desta confi- transitivo). Ele tem automorfismos que levam qualquer
guração. vértice para qualquer outro vértice e qualquer aresta para
qualquer outra aresta. De acordo com o censo de Foster,
o grafo de Nauru é o único grafo cúbico simétrico em 24
8.12.5 Referências vértices[2] .
[1] Conder, M.; Malnič, A.; Marušič, D.; Pisanski, T.; and O grafo generalizado de Petersen G(n,k) é vértice-
Potočnik, P. “The Ljubljana Graph.” 2002. . transitivo se e somente se n = 10 e k =2 ou se k2 ≡ ±1
86 CAPÍTULO 8. GRAFOS INDIVIDUAIS

(mod n) e é aresta-transitivo somente nos sete casos se- grafo de um octaedro regular substituindo cada aresta por
guintes: (n,k) = (4,1), (5,2), (8,3), (10,2), (10,3), (12,5), um feixe de três arestas paralelas.
(24,5)[6] . Assim, o grafo de Nauru é um de apenas sete O conjunto de faces de qualquer um destas duas incor-
grafos simétricos generalizados de Petersen. Entre estes porações é o conjunto de polígonos de Petrie da outra
sete grafos estão o grafo cubico G(4, 1) , o grafo de Peter- incorporação.
sen G(5, 2) , o grafo de Möbius–Kantor G(8, 3) , o grafo
dodecaedro G(10, 2) e o grafo de Desargues G(10, 3) .
O grafo de Nauru é um grafo de Cayley de S 4 , o grupo 8.13.4 Propriedades geométricas
de permutações simétricas em quatro elementos, gerados
pelas três maneiras diferentes de trocar o primeiro ele-
mento com um dos outros três: (1 2), (1 3) e (1 4).
O polinômio característico do grafo de Nauru é igual a

(x − 3)(x − 2)6 (x − 1)3 x4 (x + 1)3 (x + 2)6 (x + 3),

tornando-o um grafo integral—um grafo cujo espectro


consiste inteiramente de inteiros.

8.13.3 Propriedades topológicas

O grafo de Nauru como um grafo unidade de distância, em Žitnik,


Horvat & Pisanski (2010).

Tal como acontece com todos os grafos generalizados de


Petersen, o grafo de Nauru pode ser representado por
pontos no plano de tal forma que os vértices adjacentes
estão em unidade de distância à parte; isto é, ele é um
grafo distancia-unidade.[8] Ele e os prismas são os úni-
cos grafos generalizados de Petersen G(n,p) que não pode
ser representado de tal forma que as simetrias do desenho
formam um grupo cíclico de ordem n. Em vez disso, a
Uma incorporação simétrica do grafo de Nauru sobre uma su- representação de seu grafo distancia-unidade tem o grupo
perfície de gênero-4, com seis faces dodecagonais. diedral Dih6 como o seu grupo de simetria.

O grafo de Nauru tem duas incorporções diferentes como


poliedros regulares generalizados: 8.13.5 História
superfícies topológicas particionadas em arestas, vértices
A primeira pessoa a escrever sobre o gráfico Nauru foi R.
e faces de tal forma que há uma simetria levando qualquer
M. Foster em um eforço para colecionar todos os grafos
bandeira (uma tripla incidente de um vértice, uma aresta
cúbicos simétricos..[9]
e uma face) em qualquer outra bandeira[7] .
Uma destas duas incorporações forma um toro, de modo
que o grafo de Nauru é um grafo toroidal: consiste de 8.13.6 Referências
12 faces hexagonais, juntamente com os 24 vértices e 36
arestas do grafo de Nauru. O grafo dual desta incorpora- [1] Eppstein, D., The many faces of the Nauru graph on Li-
ção é um grafo simétrico 6-regular com 12 vértices e 36 veJournal, 2007.
arestas.
[2] Conder, M. and Dobcsányi, P. “Trivalent Symmetric
A outra incorporação simétrica do gráfico Nauru tem seis Graphs Up to 768 Vertices.” J. Combin. Math. Combin.
faces dodecagonais, e formas de uma superfície de gênero Comput. 40, 41-63, 2002.
4. Seu dual não é um grafo simples, uma vez que cada
face compartilha três arestas com quatro outras faces, mas [3] PEGG, E. T.; EXOO, G.. (2009). "Crossing number
um multigrafo. Este dual pode ser formado a partir do graphs". Mathematica Journal 11..
8.15. GRAFO DE PETERSEN 87

[4] Eric W. Weisstein, Graph Crossing Number em que levam qualquer vértice para qualquer outro vértice
MathWorld e qualquer aresta para qualquer outra aresta. De acordo
com o censo de Foster, o grafo de Biggs-Smith, referen-
[5] Royle, G. F024A data
ciado como F018A, é o único grafo cúbico simétrico em
[6] Frucht, R.; Graver, J. E.; Watkins, M. E.. (1971). “The 18 vértices.[4][5]
groups of the generalized Petersen graphs”. Proceedings
O polinômio característico do grafo de Pappus é: (x −
of the Cambridge Philosophical Society 70 p. 211–218.
3)x4 (x + 3)(x2 − 3)6 . É o único grafo com este polinô-
DOI:10.1017/S0305004100049811.
mio característico, tornando-se um grafo determinado
[7] McMullen, Peter (1992), “The regular polyhedra of type pelo seu espectro.
{p, 3} with 2p vertices”, Geometriae Dedicata 43 (3):
285–289, doi:10.1007/BF00151518.

[8] Žitnik, Arjana; Horvat, Boris; Pisanski, Tomaž (2010), 8.14.2 Galeria
All generalized Petersen graphs are unit-distance graphs,
IMFM preprints, 1109, http://www.imfm.si/preprinti/ • Grafo de Pappus colorido para destacar vários ci-
PDF/01109.pdf. clos.
[9] Foster, R. M. (1932). “Geometrical circuits of electri- • O índice cromático do grafo de Pappus é 3.
cal networks”. Transactions of the American Institute of
Electrical Engineers 51 p. 309–317. DOI:10.1109/T-
• O número cromático do grafo de Pappus é 2.
AIEE.1932.5056068..

8.14.3 Referências
8.14 Grafo de Papo
[1] Eric W. Weisstein, Pappus Graph em MathWorld
No campo da matemática da teoria dos grafos o grafo
de Pappus é um grafo não-orientado 3-regular com 18 [2] Brouwer, A. E.; Cohen, A. M.; and Neumaier, A.
vértices e 27 arestas formado como o grafo de Levi da Distance-Regular Graphs. New York: Springer-Verlag,
configuração de Pappus.[1] É nomeado em honra a Pappus 1989.
de Alexandria, um antigo matemático grego que se acre-
[3] Kagno, I. N. (1947), “Desargues’ and Pappus’ graphs
dita ter descoberto o “teorema do hexágono” que descreve
and their groups”, American Journal of Mathematics
a configuração de Pappus. Todos os grafos distância- (The Johns Hopkins University Press) 69 (4): 859–863,
regular cúbicos são conhecidos; o grafo de Pappus é um doi:10.2307/2371806, http://jstor.org/stable/2371806
destes 13 grafos.[2]
O grafo de Pappus tem um número de cruzamento reti- [4] Royle, G. “Cubic Symmetric Graphs (The Foster Cen-
líneo 5, e é o menor grafo cúbico com este número de sus).”
cruzamento. Tem cintura 6, diâmetro 4, raio 4, número
[5] Conder, M. and Dobcsányi, P. “Trivalent Symmetric
cromático 2, índice cromático 3 e é tanto 3-vértice-
Graphs Up to 768 Vertices.” J. Combin. Math. Combin.
conectado quanto 3-aresta-conectado. Comput. 40, 41-63, 2002.
O grafo de Pappus tem um polinômio cromático igual a:
(x−1)x(x16 −26x15 +325x14 −2600x13 +14950x12 −
65762x11 + 229852x10 − 653966x9 + 1537363x8 −
3008720x7 + 4904386x6 − 6609926x5 + 7238770x4 −
8.15 Grafo de Petersen
6236975x3 + 3989074x2 − 1690406x + 356509) .
No campo da matemática da teoria dos grafos o grafo de
O nome “grafo de Pappus” também tem sido usado para Petersen é um grafo não-orientado com 10 vértices e 15
se referir a um grafo relacionado com nove vértices [3] , arestas. É um pequeno grafo que serve como um exem-
com um vértice para cada ponto da configuração de Pap- plo útil e contra-exemplo para muitos problemas em teo-
pus e uma aresta para cada par de pontos na mesma linha; ria dos grafos. O grafo de Petersen é nomeado em honra
este grafo de nove vértice é 6-regular, e é o grafo com- a Julius Petersen, que em 1898 construiu o menor grafo
plementar da união de três grafos triângulo disjuntos. cúbico sem ponte cujas arestas não podem ser coloridas
com somente três cores[1] . Embora o grafo seja geral-
mente creditado a Petersen, ele tinha, de facto, aparecido
8.14.1 Propriedades algébricas
pela primeira vez 12 anos antes, em 1886[2] .
O grupo de automorfismo do grafo de Pappus é um grupo Donald Knuth afirma que o grafo de Petersen é “uma
de ordem 216. Ele age transitivamente sobre os vérti- configuração notável que serve como um contra-exemplo
ces, nas arestas e nos arcos do grafo. Portanto, o grafo para muitas previsões otimistas sobre o que poderia ser
de Pappus é im grafo simétrico. Ele tem automorfismos verdade para os grafos em geral.”[3]
88 CAPÍTULO 8. GRAFOS INDIVIDUAIS

8.15.1 Construções
O grafo de Petersen é o complementar do grafo linha de
K5 . É também o grafo Kneser KG5,2 ; isso significa que
ele tem um vértice para cada subconjunto de dois elemen-
tos de um conjunto de 5 elementos, e dois vértices são
conectados por uma aresta se e somente se os correspon-
dentes subconjuntos de dois elementos são disjuntos en-
tre si. Como um grafo de Kneser da forma KG2n−1,n−1
é um exemplo de um grafo ímpar.
Geometricamente, o grafo de Petersen é o grafo formado
pelos vértices e arestas do hemi-dodecaedro, ou seja, um
dodecaedro com os pontos opostos, linhas e faces identi-
ficadas em conjunto.

8.15.2 Incorporações
O grafo de Petersen é um grafo distância-unidade: ele pode ser
O grafo de Petersen é não-planar. Qualquer grafo não desenhado no plano com cada aresta tendo comprimento de uma
planar tem como menores tanto o grafo completo K5 , unidade.
quanto o grafo bipartido completo K3,3 , mas o grafo
de Petersen tem ambos os menores. O K5 menor pode
ser formado restringindo-se as arestas de um acoplamento O grafo de Petersen também pode ser desenhado (com
perfeito, por exemplo as cinco arestas curtas na primeira cruzamentos) no plano de tal forma que todas as arestas
figura. O menor K3,3 pode ser formado se deletando um tenham o mesmo comprimento. Ou seja, ele é um grafo
vértice (por exemplo, o vértice central do desenho do 3- distância-unidade.
simétrico) e contratando uma aresta incidente para cada A mais simples superfície não orientável em que o grafo
vizinho do vértice que foi excluído. de Petersen pode ser incorporado sem cruzamentos é o
plano projetivo. Esta é a incorporação dada pela constru-
ção em hemi-dodecaedro do grafo de Petersen. A incor-
poração no plano projetivo também pode ser formada a
partir do desenho padrão pentagonal do gráfico Petersen,
colocando uma superfície cross-cap dentro da estrela de
cinco pontas no centro do desenho, e dirigundo as arestas
da estrela através desta cross-cap; o desenho resultante
tem seis faces pentagonais. Esta construção forma um
mapa regular e mostra que o grafo de Petersen tem um
género não-orientável 1.

8.15.3 Simetrias

O grafo de Petersen é fortemente regular (com assinatura


srg(10,3,0,1)). É também simétrico, o que significa que é
aresta-transitivo e vértice-transitivo. Mais fortemente, é
de 3-arcos-transitivo: cada caminho de três arestas dirigi-
das no grafo de Petersen pode ser transformado em qual-
O grafo de Petersen tem número de cruzamento 2. quer outro tipo de percurso por uma simetria do grafo.[4]

O mais comum e simétrico desenho do plano do grafo


de Petersen, como um pentagrama dentro de um pentá- 8.15.4 Referências
gono, tem cinco cruzamentos. No entanto, este não é o
melhor desenho que minimiza os cruzamentos; existe um [1] BROUWER, Andries E. «The Petersen graph». Consul-
tado em 2010-10-25.
outro desenho (mostrado na figura), com apenas dois cru-
zamentos. Assim, o grafo de Petersen tem número de [2] KEMPE, A. B.. (1886). “A memoir on the the-
cruzamento 2. Em um toro o grafo de Petersen pode ser ory of mathematical form”. Philosophical Transac-
desenhado sem cruzamentos de arestas; tem, portanto, tions of the Royal Society of London 177: 1–70.
gênero orientável 1. DOI:10.1098/rstl.1886.0002.
8.17. GRAFOS DE CHANG 89

[3] Knuth, Donald E., The Art of Computer Programming; vo- [3] BROUWER, A. E.; COHEN, A. M.; NEUMAIER, A.
lume 4, pre-fascicle 0A. A draft of section 7: Introduction (1989). Distance-Regular Graphs (New York: Springer-
to combinatorial searching Verlag). pp. 104–105 e 136. ISBN 0387506195 ISBN
978-0387506197..
[4] Babai, László (1995). «Automorphism groups, iso-
morphism, reconstruction». In: Lovász, Ronald L.;
Grötschel, Martin; László, László. Handbook of Combi-
natorics I North-Holland [S.l.] p. 1447–1540. Corollary
8.16.3 Ligações externas
1.8..
• O grafo de Shrikhande , Peter Cameron, Agosto de
2010.

8.16 Grafo de Shrikhande


8.16.4 Galeria
No campo da matemática da teoria dos grafos, o Grafo
de Shrikhande é um grafo nomeado descoberto por S. • O grafo de Shrikhande é um grafo toroidal.
S. Shrikhande em 1959.[1] é um grafo fortemente regular • O número cromático do grafo de Shrikhande é 4.
com 16 vértices e 48 arestas, com cada vértice tendo um
grau de 6. • O índice cromático do grafo de Shrikhande é 6.

• O grafo de Shrikhande desenhado simetricamente.


8.16.1 Propriedades
• O grafo de Shrikhande é Hamiltoniano.
No grafo de Shrikhande, quaisquer dois vértices I e J têm
dois vizinhos distintos em comum (excluindo os próprios
dois vértices I e J), o que é verdade independentemente de 8.17 Grafos de Chang
I ser adjacente a J. Em outras palavras, seus parâmetros
para ser fortemente regulares são: {16,6,2,2}, com λ = No campo da matemática da teoria dos grafos, os Gra-
µ = 2 , esta igualdade implicando que o grafo é associado fos de Chang são um conjunto de grafos de árvore, que
a um BIBD simétrico. Ele compartilha esses parâmetros são um grafo 18-regular não-orientados com 28 vértices
com um grafo diferente, o 4×4 grafo torre (rook’s graph). e 168 arestas.
O grafo de Shrikhande é localmente hexagonal; isto é, os
vizinhos de cada vértice formam um grafo ciclo de seis
vértices. Como em qualquer grafo localmente cíclico, o
8.17.1 Ligações externas
grafo de Shrikhande é o 1-esqueleto de uma triangulação
• Weisstein, Eric W. “Chang Graphs.” de
de Whitney de alguma superfície; no caso do grafo de Sh-
MathWorld--A Wolfram Web Resource.
rikhande, esta superfície é um toro em que cada vértice
[2] http://mathworld.wolfram.com/ChangGraphs.html
é cercado por seis triângulos. Assim, o grafo de Sh-
rikhande é um grafo toroidal. O dual desta incorporação • Página de Andries E. Brouwer’s sobre grafos de
é o grafo de Dick, um grafo cúbico simétrico. Chang
O grafo de Shrikhande não é um grafo distância- • Página de Nadia Hamoud, “Os grafos de Chang”
transitivo. É o menor grafo distância-regular que não é
a distância-transitivo.[3]
O grupo de automorfismo do grafo de Shrikhande é da
ordem de 192. Ele age transitivamente sobre os vértices,
nas arestas e nos arcos do grafo.
O polinômio característico do grafo de Shrikhande é:
(x−6)(x−2)6 (x+2)9 . Portanto o grafo de Shrikhande
é um grafo integral: seu espectro consiste inteiramente de
inteiros.

8.16.2 Referências
[1] SHRIKHANDE, S. S.. (1959). "The uniqueness of the
L2 association scheme". Annals of Mathematical Statistics
30: 781–798..
[2] BROUWER, A. E. «Shrikhande graph». Consultado em
2010-11-10..
Capítulo 9

Fontes, contribuidores e licenças de texto e


imagem

9.1 Texto
• Sete pontes de Königsberg Fonte: https://pt.wikipedia.org/wiki/Sete_pontes_de_K%C3%B6nigsberg?oldid=45723946 Contribuidores:
Mschlindwein, Diego UFCG~ptwiki, LeonardoRob0t, Gameiro, Nuno Tavares, NTBot, JucaZero, Oraculo, RobotQuistnix, Jcb, Otavi-
oCC, Fasouzafreitas, YurikBot, Cícero, Bonás, LijeBot, Thegoergen, Thijs!bot, Paulonei, JAnDbot, Albmont, Maxtremus, Bot-Schafter,
TXiKiBoT, SieBot, YonaBot, BotMultichill, Agiesbrecht, Zdtrlik, Kaktus Kid, Selenium~ptwiki, Frelopes, Numbo3-bot, Luckas-bot,
LinkFA-Bot, DrFO.Tn.Bot, LaaknorBot, ArthurBot, Obersachsebot, Xqbot, FMTbot, Opera Omnia, Courcelles, WikitanvirBot, Mjbmr-
bot, MerlIwBot, Israel77, Dexbot, Legobot, Penumbroso, Lanarizon e Anónimo: 16
• Teoria dos grafos Fonte: https://pt.wikipedia.org/wiki/Teoria_dos_grafos?oldid=45819904 Contribuidores: JoaoMiranda, Jorge~ptwiki,
Hashar, Manuel Anastácio, Webkid~ptwiki, LeonardoG, Sobao~ptwiki, Muriel Gottrop, Mrsouza, Diego UFCG~ptwiki, E2m, E2mb0t,
LeonardoRob0t, Lusitana, Nuno Tavares, NTBot, Thiago Serra, RobotQuistnix, Rei-artur, Carbol, Opaulo, OS2Warp, YurikBot, Cícero,
Bonás, Firer, Luís Felipe Braga, Salgueiro, Leonardo.stabile, LijeBot, Rlopes, Israelrocha, He7d3r, Al Lemos, Rômulo Penido, Yanguas,
Thijs!bot, Rei-bot, JSSX, JAnDbot, Rickhard 22, Albmont, Maxtremus, Stego, VolkovBot, SieBot, Jonex, Lechatjaune, BOTijo, Joãofcf,
Dotti~ptwiki, Zdtrlik, GOE, Kaktus Kid, Gerakibot, Quiumen, Daniel Dias Branco Arthaud, Roxul84, AlexandreMBM, Darkicebot, An-
dreHahn, RadiX, BodhisattvaBot, Luckas-bot, Muro Bot, LaaknorBot, ArthurBot, BrunoSupremo, Xqbot, RibotBOT, Ricardo Ferreira
de Oliveira, Faustino.F, RedBot, Thiagoprocaci, Meriade, TjBot, Viniciusmc, EleferenBot, EmausBot, Jadolfo, Hallel, Idealmind, Chuis-
pastonBot, Antero de Quintal, Épico, Aisteco, Addihockey10 (automated), Allan Daemon, Dexbot, Legobot, Rodrigoalves1994, Bruno S.
Barros, Mbodock, Dewrys e Anónimo: 86
• Grafo Fonte: https://pt.wikipedia.org/wiki/Teoria_dos_grafos?oldid=45819904 Contribuidores: JoaoMiranda, Jorge~ptwiki, Hashar, Ma-
nuel Anastácio, Webkid~ptwiki, LeonardoG, Sobao~ptwiki, Muriel Gottrop, Mrsouza, Diego UFCG~ptwiki, E2m, E2mb0t, Leonar-
doRob0t, Lusitana, Nuno Tavares, NTBot, Thiago Serra, RobotQuistnix, Rei-artur, Carbol, Opaulo, OS2Warp, YurikBot, Cícero, Bo-
nás, Firer, Luís Felipe Braga, Salgueiro, Leonardo.stabile, LijeBot, Rlopes, Israelrocha, He7d3r, Al Lemos, Rômulo Penido, Yanguas,
Thijs!bot, Rei-bot, JSSX, JAnDbot, Rickhard 22, Albmont, Maxtremus, Stego, VolkovBot, SieBot, Jonex, Lechatjaune, BOTijo, Joãofcf,
Dotti~ptwiki, Zdtrlik, GOE, Kaktus Kid, Gerakibot, Quiumen, Daniel Dias Branco Arthaud, Roxul84, AlexandreMBM, Darkicebot, An-
dreHahn, RadiX, BodhisattvaBot, Luckas-bot, Muro Bot, LaaknorBot, ArthurBot, BrunoSupremo, Xqbot, RibotBOT, Ricardo Ferreira
de Oliveira, Faustino.F, RedBot, Thiagoprocaci, Meriade, TjBot, Viniciusmc, EleferenBot, EmausBot, Jadolfo, Hallel, Idealmind, Chuis-
pastonBot, Antero de Quintal, Épico, Aisteco, Addihockey10 (automated), Allan Daemon, Dexbot, Legobot, Rodrigoalves1994, Bruno S.
Barros, Mbodock, Dewrys e Anónimo: 86
• Vértice (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/V%C3%A9rtice_(teoria_dos_grafos)?oldid=43785484 Contribuidores:
VolkovBot, Luckas-bot, Eamaral, Xqbot, TaBOT-zerem, Ricardo Ferreira de Oliveira, KamikazeBot, TjBot, FMTbot, ZéroBot, KLBot2 e
Anónimo: 3
• Aresta (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/Aresta_(teoria_dos_grafos)?oldid=34692577 Contribuidores: Ricardo
Ferreira de Oliveira, RedBot e KLBot2
• Aresta múltipla Fonte: https://pt.wikipedia.org/wiki/Aresta_m%C3%BAltipla?oldid=43938279 Contribuidores: Alexg, JSSX, Brunonar,
FMTbot e Anónimo: 2
• Ciclo (teoria de grafos) Fonte: https://pt.wikipedia.org/wiki/Ciclo_(teoria_de_grafos)?oldid=34986042 Contribuidores: Waltercruz,
Adolfont, Ricardo Ferreira de Oliveira, Alph Bot, KLBot2 e Anónimo: 1
• Clique Fonte: https://pt.wikipedia.org/wiki/Clique?oldid=39773500 Contribuidores: Rui Silva, Nuno Tavares, Cícero, Salgueiro, Thijs!bot,
JAnDbot, Pintopc, RafaAzevedo, Csandrocampos, Fabiano Tatsch, MystBot, Amirobot, Salebot, Rubinbot, Guaycuru, Ricardo Ferreira de
Oliveira, MerlIwBot, JYBot, Pedrocnc, Legobot e Anónimo: 4
• Grau (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/Grau_(teoria_dos_grafos)?oldid=45859136 Contribuidores: ArthurBot, Vi-
torvicentevalente, Ricardo Ferreira de Oliveira, RedBot, MastiBot, EmausBot, ZéroBot, KLBot2, Aisteco, Dexbot, Vítor e Anónimo: 4
• Grafo bipartido Fonte: https://pt.wikipedia.org/wiki/Grafo_bipartido?oldid=35141642 Contribuidores: Luckas-bot, Vanthorn, Ricardo
Ferreira de Oliveira, Ripchip Bot, FMTbot, Ebrambot, CocuBot, KLBot2, Amcorreia e Anónimo: 1
• Grafo bipartido completo Fonte: https://pt.wikipedia.org/wiki/Grafo_bipartido_completo?oldid=35141649 Contribuidores: Ricardo
Ferreira de Oliveira, FMTbot e KLBot2

90
9.1. TEXTO 91

• Grafo caminho Fonte: https://pt.wikipedia.org/wiki/Grafo_caminho?oldid=35141654 Contribuidores: FSogumo, Vanthorn, Ricardo Fer-


reira de Oliveira, FMTbot e KLBot2
• Grafo completo Fonte: https://pt.wikipedia.org/wiki/Grafo_completo?oldid=41951240 Contribuidores: Jcmo, OS2Warp, La-
meiro~ptwiki, Cícero, Bonás, FlaBot, Salgueiro, Thijs!bot, Escarbot, NunoMota, VolkovBot, AlleborgoBot, Zdtrlik, LaaknorBot, Nallim-
bot, Salebot, DumZiBoT, DSisyphBot, RibotBOT, Ricardo Ferreira de Oliveira, MastiBot, FMTbot, MerlIwBot, Ramzysamman, Legobot
e Anónimo: 4
• Grafo cúbico Fonte: https://pt.wikipedia.org/wiki/Grafo_c%C3%BAbico?oldid=35141668 Contribuidores: Zdtrlik, PixelBot, Ricardo
Ferreira de Oliveira, ZéroBot, WikitanvirBot e KLBot2
• Estrela (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/Estrela_(teoria_dos_grafos)?oldid=35075881 Contribuidores: Zdtrlik,
Ricardo Ferreira de Oliveira, ZéroBot, KLBot2 e YFdyh-bot
• Grafo nulo Fonte: https://pt.wikipedia.org/wiki/Grafo_nulo?oldid=35141778 Contribuidores: Vanthorn, Ricardo Ferreira de Oliveira,
FMTbot, EmausBot e KLBot2
• Grafo orientado Fonte: https://pt.wikipedia.org/wiki/Grafo_orientado?oldid=39666102 Contribuidores: Lijealso, He7d3r, Rickgauden,
VolkovBot, Kaktus Kid, Luckas-bot, MystBot, Xqbot, Ricardo Ferreira de Oliveira, Stegop, Alph Bot, FMTbot, EmausBot, ChuispastonBot,
WikitanvirBot, MerlIwBot, KLBot2, PauloEduardo e Anónimo: 2
• Grafo simples Fonte: https://pt.wikipedia.org/wiki/Grafo_simples?oldid=45761755 Contribuidores: Cícero, Fernando S. Aldado, Marivb,
Bonás, Salgueiro, Rlopes, FMTbot, Idealmind, Legobot, Dewrys e Anónimo: 10
• Grafo valorado Fonte: https://pt.wikipedia.org/wiki/Grafo_valorado?oldid=28843203 Contribuidores: Leonardo.stabile, FelipeVargas-
Rigo, Yanguas, Ricardo Ferreira de Oliveira, FMTbot e Anónimo: 1
• Homomorfismo de grafos Fonte: https://pt.wikipedia.org/wiki/Homomorfismo_de_grafos?oldid=35308493 Contribuidores: Kaktus Kid,
Luckas-bot, HanielBarbosa, ArthurBot, D'ohBot, HRoestBot, Legobot, Addbot e Anónimo: 1
• Isomorfismo de grafos Fonte: https://pt.wikipedia.org/wiki/Isomorfismo_de_grafos?oldid=43884717 Contribuidores: VolkovBot, Ri-
cardo Ferreira de Oliveira, MerlIwBot, KLBot2, Vítor e Anónimo: 3
• Laço (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/La%C3%A7o_(teoria_dos_grafos)?oldid=35159317 Contribuidores: CS-
Bot, Ricardo Ferreira de Oliveira, Eduardo P, FMTbot, WikitanvirBot, MerlIwBot e KLBot2
• Multigrafo Fonte: https://pt.wikipedia.org/wiki/Multigrafo?oldid=35137054 Contribuidores: Alexg, HanielBarbosa, Ricardo Ferreira de
Oliveira, MerlIwBot, Addbot e Anónimo: 2
• Pseudografo Fonte: https://pt.wikipedia.org/wiki/Multigrafo?oldid=35137054 Contribuidores: Alexg, HanielBarbosa, Ricardo Ferreira
de Oliveira, MerlIwBot, Addbot e Anónimo: 2
• Quiver Fonte: https://pt.wikipedia.org/wiki/Quiver?oldid=45461768 Contribuidores: Al Lemos, Rodrigo Devolder, Leyo, Muro Bot, Ri-
cardo Ferreira de Oliveira, KLBot2, Önni e Anónimo: 2
• Vértice de corte (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/V%C3%A9rtice_de_corte_(teoria_dos_grafos)?oldid=
40602092 Contribuidores: Ricardo Ferreira de Oliveira, Eduardo P, Dinamik-bot, FMTbot, MerlIwBot, Dianakc, Addbot e Anónimo:
2
• Vizinhança (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/Vizinhan%C3%A7a_(teoria_dos_grafos)?oldid=43892588 Contri-
buidores: VolkovBot, Ricardo Ferreira de Oliveira, Alph Bot, KLBot2, Asturius e Vítor
• Árvore (grafo) Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_(grafo)?oldid=42786501 Contribuidores: Leonardo.stabile, Luiz Jr,
JAnDbot, Jpcwiki, SieBot, Zdtrlik, LeoBot, ArthurBot, Rubinbot, Ricardo Ferreira de Oliveira, RedBot, Rjbot, DixonDBot, EmausBot,
Salamat, Luishsousa, MerlIwBot, Addbot, Saimon677, Pedrohql e Anónimo: 5
• Árvore de extensão Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_de_extens%C3%A3o?oldid=35061145 Contribuidores: Alexg,
Rômulo Penido, TuvicBot, JAnDbot, TXiKiBoT, SieBot, Numbo3-bot, Luckas-bot, ArthurBot, Ricardo Ferreira de Oliveira, KamikazeBot,
Ripchip Bot, FMTbot, EmausBot, WikitanvirBot, MerlIwBot, KLBot2 e Anónimo: 2
• Árvore de extensão mínima Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_de_extens%C3%A3o_m%C3%ADnima?oldid=
41499699 Contribuidores: Lond, RobotQuistnix, Alessandro70, YurikBot, Cícero, Salgueiro, Leonardo.stabile, LijeBot, Reynaldo, Rô-
mulo Penido, Rei-bot, Escarbot, Belanidia, TuvicBot, Danielamaral, TXiKiBoT, SieBot, Zdtrlik, Kaktus Kid, LeoBot, WikiDreamer Bot,
Less, Ricardo Ferreira de Oliveira, Rjbot, Movses-bot, Ungoliant MMDCCLXIV, MerlIwBot, Addbot e Anónimo: 6
• Matriz de adjacência Fonte: https://pt.wikipedia.org/wiki/Matriz_de_adjac%C3%AAncia?oldid=39086457 Contribuidores: E2mb0t,
LeonardoRob0t, 333~ptwiki, Chaves, Cícero, Marivb, Salgueiro, Leonardo.stabile, LijeBot, FelipeVargasRigo, Thijs!bot, Rei-bot, Escar-
bot, VolkovBot, AlleborgoBot, PixelBot, Luckas-bot, LaaknorBot, Nallimbot, Yonidebot, ArthurBot, Lucas081994, Ricardo Ferreira de
Oliveira, TobeBot, HVL, FMTbot, ZéroBot, ChuispastonBot, WikitanvirBot, MerlIwBot, BMalajovich, Legobot e Anónimo: 8
• Matriz de incidência Fonte: https://pt.wikipedia.org/wiki/Matriz_de_incid%C3%AAncia?oldid=45818091 Contribuidores: FelipeVar-
gasRigo, Luckas-bot, LaaknorBot, KamikazeBot, Alph Bot, FMTbot, ZéroBot, ChuispastonBot, AvocatoBot, Addbot, Dewrys e Anónimo:
2
• Lista de adjacência Fonte: https://pt.wikipedia.org/wiki/Lista_de_adjac%C3%AAncia?oldid=38751493 Contribuidores: Lijealso, Eric
Duff, Hermógenes Teixeira Pinto Filho, Ricardo Ferreira de Oliveira, Rjbot, Opraco, MerlIwBot, KLBot2 e Anónimo: 4
• Automorfismo de grafos Fonte: https://pt.wikipedia.org/wiki/Automorfismo_de_grafos?oldid=35208064 Contribuidores: TXiKiBoT,
RadiX, Ricardo Ferreira de Oliveira, Alph Bot, ZéroBot, Addbot e Anónimo: 1
• Grafo regular Fonte: https://pt.wikipedia.org/wiki/Grafo_regular?oldid=35141784 Contribuidores: Zdtrlik, Luckas-bot, Ricardo Ferreira
de Oliveira, RedBot, FMTbot, EmausBot, Marlus Gancher, MerlIwBot e KLBot2
• Grafo fortemente regular Fonte: https://pt.wikipedia.org/wiki/Grafo_fortemente_regular?oldid=37882338 Contribuidores: Luckas-bot,
Vanthorn, Ricardo Ferreira de Oliveira, FMTbot, KLBot2 e Dianakc
• Grafo distância-regular Fonte: https://pt.wikipedia.org/wiki/Grafo_dist%C3%A2ncia-regular?oldid=35141761 Contribuidores:
Vanthorn, Ricardo Ferreira de Oliveira, FMTbot e KLBot2
92 CAPÍTULO 9. FONTES, CONTRIBUIDORES E LICENÇAS DE TEXTO E IMAGEM

• Grafo distância-transitivo Fonte: https://pt.wikipedia.org/wiki/Grafo_dist%C3%A2ncia-transitivo?oldid=38596595 Contribuidores:


Alexanderps, Vanthorn, Ricardo Ferreira de Oliveira, FMTbot, ZéroBot, Renato de carvalho ferreira, KLBot2 e Dianakc
• Grafo simétrico Fonte: https://pt.wikipedia.org/wiki/Grafo_sim%C3%A9trico?oldid=35141788 Contribuidores: VolkovBot, Zdtrlik,
ArthurBot, Ricardo Ferreira de Oliveira, FMTbot, ZéroBot e KLBot2
• Grafo meio-transitivo Fonte: https://pt.wikipedia.org/wiki/Grafo_meio-transitivo?oldid=35141771 Contribuidores: Vanthorn, Ricardo
Ferreira de Oliveira, FMTbot e KLBot2
• Grafo semissimétrico Fonte: https://pt.wikipedia.org/wiki/Grafo_semissim%C3%A9trico?oldid=35141786 Contribuidores: Yanguas,
Zdtrlik, Ricardo Ferreira de Oliveira, FMTbot, ZéroBot e KLBot2
• Grafo aresta-transitivo Fonte: https://pt.wikipedia.org/wiki/Grafo_aresta-transitivo?oldid=35141629 Contribuidores: Vanthorn, Ricardo
Ferreira de Oliveira, FMTbot, EmausBot e KLBot2
• Grafo vértice-transitivo Fonte: https://pt.wikipedia.org/wiki/Grafo_v%C3%A9rtice-transitivo?oldid=35141790 Contribuidores:
Vanthorn, Ricardo Ferreira de Oliveira, FMTbot, ZéroBot, KLBot2 e Anónimo: 1
• Grafo de Cayley Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Cayley?oldid=35141678 Contribuidores: Eamaral, Vanthorn, Xqbot, Jo-
taCartas, Ricardo Ferreira de Oliveira, EmausBot e KLBot2
• Grafo antissimétrico Fonte: https://pt.wikipedia.org/wiki/Grafo_antissim%C3%A9trico?oldid=35141627 Contribuidores: Blamed, Zd-
trlik, Ricardo Ferreira de Oliveira e KLBot2
• Grafo assimétrico Fonte: https://pt.wikipedia.org/wiki/Grafo_assim%C3%A9trico?oldid=35141635 Contribuidores: Zdtrlik, Luckas-
bot, Ricardo Ferreira de Oliveira, FMTbot, EmausBot e KLBot2
• Busca em largura Fonte: https://pt.wikipedia.org/wiki/Busca_em_largura?oldid=42342144 Contribuidores: LeonardoG, O CoRVo, Nuno
Tavares, NTBot, OS2Warp, EduM, Chobot, YurikBot, Olavom, Cícero, Fernando S. Aldado, Salgueiro, LijeBot, FelipeVargasRigo, JAnD-
bot, Maxtremus, TXiKiBoT, VolkovBot, SieBot, Renato Rebouças, Vini 175, Kyle the bot, Hugo Baés, Luckas-bot, Salebot, Diego Queiroz,
DumZiBoT, Xqbot, RibotBOT, Ricardo Ferreira de Oliveira, MondalorBot, Dinamik-bot, FMTbot, EmausBot, Ariel C.M.K., PauloEdu-
ardo, HiW-Bot, Aexpedito, YFdyh-bot, Legobot, Jair José dos Santos e Anónimo: 22
• Busca em profundidade Fonte: https://pt.wikipedia.org/wiki/Busca_em_profundidade?oldid=44010749 Contribuidores: Nuno Tava-
res, RobotQuistnix, OS2Warp, Chobot, Olavom, Cícero, Fernando S. Aldado, Leonardo.stabile, LijeBot, FelipeVargasRigo, FSogumo,
Thijs!bot, JAnDbot, Albmont, Maxtremus, SieBot, Teles, Hermógenes Teixeira Pinto Filho, Bjmedeiros, SilvonenBot, Luckas-bot, Sa-
lebot, Diego Queiroz, DumZiBoT, BrunoSupremo, Lord Mota, Xqbot, RedBot, HVL, FMTbot, EmausBot, ZéroBot, ChuispastonBot,
HiW-Bot, RonDamon, Legobot e Anónimo: 15
• Caminho (teoria dos grafos) Fonte: https://pt.wikipedia.org/wiki/Caminho_(teoria_dos_grafos)?oldid=39930610 Contribuidores:
JAnDbot, Quiumen, Alexbot, AndreHahn, Vini 17bot5, Ptbotgourou, Xqbot, Dinamik-bot, Dianakc, YFdyh-bot, Legobot, Addbot e Anó-
nimo: 3
• Caminho euleriano Fonte: https://pt.wikipedia.org/wiki/Caminho_euleriano?oldid=42946282 Contribuidores: CommonsDelinker, Max-
tremus, Idioma-bot, TXiKiBoT, Kaktus Kid, SilvonenBot, Luckas-bot, Xqbot, Ricardo Ferreira de Oliveira, ErikvanB, Marcelloc2, Ulri-
chSchiel, FMTbot, Stuckkey, WikitanvirBot, KLBot2, Épico e Anónimo: 9
• Caminho hamiltoniano Fonte: https://pt.wikipedia.org/wiki/Caminho_hamiltoniano?oldid=46040951 Contribuidores: Jic, RobotQuist-
nix, Yurik, YurikBot, Cícero, Andrevruas, Salgueiro, LijeBot, Luiz Jr, Reynaldo, Rômulo Penido, Thijs!bot, Rei-bot, JAnDbot, Maxtre-
mus, Idioma-bot, TXiKiBoT, VolkovBot, Lechatjaune, OTAVIO1981, AlleborgoBot, Humbertobrandao, Alexbot, Luckas-bot, Laaknor-
Bot, Nallimbot, Ricardo Ferreira de Oliveira, FMTbot, EmausBot, Legobot e Anónimo: 13
• Ordenação topológica Fonte: https://pt.wikipedia.org/wiki/Ordena%C3%A7%C3%A3o_topol%C3%B3gica?oldid=43335980 Contri-
buidores: Luckas-bot, Ricardo Ferreira de Oliveira, ChuispastonBot, KLBot2, SimãoMiguel e Anónimo: 5
• Algoritmo de Bellman-Ford Fonte: https://pt.wikipedia.org/wiki/Algoritmo_de_Bellman-Ford?oldid=44770265 Contribuidores:
Patrick-br, NTBot, RobotQuistnix, Glum, Dermeister, YurikBot, Cícero, Elloabguedes, MalafayaBot, Leonardo.stabile, He7d3r, Feli-
peVargasRigo, Rei-bot, BOT-Superzerocool, Albmont, Net Esportes, TXiKiBoT, VolkovBot, Hermógenes Teixeira Pinto Filho, Allebor-
goBot, Alexbot, Luckas-bot, Ptbotgourou, ArthurBot, BrunoSupremo, Xqbot, Dinamik-bot, EmausBot, WikitanvirBot, MerlIwBot, Antero
de Quintal, Legobot, Marcos dias de oliveira, Rodrigolopesbot e Anónimo: 16
• Algoritmo A* Fonte: https://pt.wikipedia.org/wiki/Algoritmo_A*?oldid=44667030 Contribuidores: Mschlindwein, Hgfernan, Chobot,
Leonardo.stabile, Thom~ptwiki, FelipeVargasRigo, Rei-bot, GRS73, BOT-Superzerocool, TXiKiBoT, BOTijo, Hermógenes Teixeira Pinto
Filho, Alexbot, ChristianH, Luckas-bot, LinkFA-Bot, HerculeBot, Vanthorn, BrunoSupremo, Xqbot, MauritsBot, MastiBot, Dhminholi,
EmausBot, WikitanvirBot, KLBot2, Dexbot e Anónimo: 13
• Algoritmo de Floyd-Warshall Fonte: https://pt.wikipedia.org/wiki/Algoritmo_de_Floyd-Warshall?oldid=44088729 Contribuidores: Ro-
botQuistnix, Lameiro~ptwiki, Lampiao, YurikBot, Cícero, Leonardo.stabile, FelipeVargasRigo, BOT-Superzerocool, MSBOT, JAnDbot,
VolkovBot, SieBot, Alexbot, Luckas-bot, ArthurBot, Ricardo Ferreira de Oliveira, EmausBot, JackieBot, WikitanvirBot, KLBot2, SrMe-
neses e Anónimo: 20
• Algoritmo de Johnson Fonte: https://pt.wikipedia.org/wiki/Algoritmo_de_Johnson?oldid=45342942 Contribuidores: Manuel Anastácio,
Auréola, Luckas-bot, Jonas AGX, Xqbot, Dbastro, EmausBot, ChuispastonBot, KLBot2 e Anónimo: 4
• Algoritmo de Kruskal Fonte: https://pt.wikipedia.org/wiki/Algoritmo_de_Kruskal?oldid=41499706 Contribuidores: Jorge~ptwiki, Osias,
Danielcc10, LeonardoRob0t, NTBot, Getbot, Giro720, YurikBot, Cícero, Salgueiro, Leonardo.stabile, LijeBot, FelipeVargasRigo, Rei-bot,
Danielamaral, Rodrigo Padula, CommonsDelinker, Maxtremus, VolkovBot, SieBot, Synthebot, Zdtrlik, Kaktus Kid, BOTarate, Alexbot,
Luckas-bot, ArthurBot, Ricardo Ferreira de Oliveira, TjBot, EmausBot, MerlIwBot, YFdyh-bot, Legobot e Anónimo: 20
• Algoritmo de Prim Fonte: https://pt.wikipedia.org/wiki/Algoritmo_de_Prim?oldid=45360040 Contribuidores: Manuel Anastácio, Le-
onardoG, Indech, RobotQuistnix, Cícero, Martiniano Hilário, FlaBot, Leonardo.stabile, LijeBot, Gkitchmaker, Rômulo Penido, BOT-
Superzerocool, JAnDbot, VolkovBot, SieBot, Zdtrlik, GOE, Firmo, Kaktus Kid, Vini 17bot5, Luckas-bot, DumZiBoT, Ricardo Ferreira
de Oliveira, JackieBot, ZéroBot, Mjbmrbot, RafaelCLP, MerlIwBot, Aexpedito, Legobot, Guilherme Antonio Camelo e Anónimo: 20
9.2. IMAGENS 93

• Algoritmo de Dijkstra Fonte: https://pt.wikipedia.org/wiki/Algoritmo_de_Dijkstra?oldid=39665495 Contribuidores: Suisui, Manuel


Anastácio, Rui Malheiro, Diego UFCG~ptwiki, Osias, Mecanismo, Juntas, Danielcc10, Nuno Tavares, NTBot, Getbot, RobotQuistnix,
Adailton, Zwobot, Lijealso, YurikBot, MalafayaBot, Leonardo.stabile, Chicocvenancio, Attom, FelipeVargasRigo, Thijs!bot, Rei-bot,
JAnDbot, Soulbot, Bortolozzi, Albmont, CommonsDelinker, Xico.nunes, Desnes, TXiKiBoT, WaldirBot, VolkovBot, SieBot, Gfonsecabr,
AlleborgoBot, SilvonenBot, Luckas-bot, Salebot, Yonidebot, ArthurBot, DumZiBoT, JotaCartas, Rubinbot, Ricardo Ferreira de Oliveira,
D'ohBot, MondalorBot, Gruberdiego, Pedro Ivan de Albuquerque Lima, Viniciusmc, Dbastro, EmausBot, ChuispastonBot, RafaelCLP,
Legobot, Rodrigolopesbot e Anónimo: 52
• Algoritmo de Boruvka Fonte: https://pt.wikipedia.org/wiki/Algoritmo_de_Bor%C5%AFvka?oldid=41499694 Contribuidores: Manuel
Anastácio, Osias, Pedra, Nuno Tavares, Cícero, Salgueiro, JAnDbot, Rodrigo Padula, AlleborgoBot, Zdtrlik, Kaktus Kid, PixelBot, Alexbot,
Luckas-bot, LaaknorBot, Ricardo Ferreira de Oliveira, EmausBot, ZéroBot, WikitanvirBot, Legobot e Anónimo: 6
• Grafo de Biggs-Smith Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Biggs-Smith?oldid=35141672 Contribuidores: Ricardo Ferreira de
Oliveira, FMTbot e KLBot2
• Grafo de Brouwer-Haemers Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Brouwer-Haemers?oldid=35141675 Contribuidores: Ri-
cardo Ferreira de Oliveira, FMTbot e KLBot2
• Grafo de Desargues Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Desargues?oldid=35141692 Contribuidores: Luckas-bot, Ricardo
Ferreira de Oliveira, FMTbot, ZéroBot, Leytor e KLBot2
• Grafo de Folkman Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Folkman?oldid=35141696 Contribuidores: Ricardo Ferreira de Oli-
veira, FMTbot, ZéroBot, MerlIwBot e KLBot2
• Grafo de Foster Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Foster?oldid=35141699 Contribuidores: Ricardo Ferreira de Oliveira,
FMTbot e KLBot2
• Grafo de Frucht Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Frucht?oldid=35141704 Contribuidores: Luckas-bot, Ricardo Ferreira
de Oliveira, FMTbot e KLBot2
• Grafo de Gray Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Gray?oldid=35141712 Contribuidores: Ricardo Ferreira de Oliveira, FMT-
bot e KLBot2
• Grafo de Heawood Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Heawood?oldid=35141716 Contribuidores: Alexg, Luckas-bot, Ri-
cardo Ferreira de Oliveira, FMTbot, EmausBot, ZéroBot e KLBot2
• Grafo de Higman-Sims Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Higman-Sims?oldid=35141718 Contribuidores: Ricardo Ferreira
de Oliveira, FMTbot e KLBot2
• Grafo de Hoffman-Singleton Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Hoffman-Singleton?oldid=35141720 Contribuidores: Ri-
cardo Ferreira de Oliveira, Koko90, FMTbot e KLBot2
• Grafo de Holt Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Holt?oldid=35141725 Contribuidores: Ricardo Ferreira de Oliveira, FMT-
bot e KLBot2
• Grafo de Ljubljana Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Ljubljana?oldid=35141728 Contribuidores: Ricardo Ferreira de Oli-
veira, FMTbot e KLBot2
• Grafo de Nauru Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Nauru?oldid=35466463 Contribuidores: Ricardo Ferreira de Oliveira e
KLBot2
• Grafo de Papo Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Pappus?oldid=38596503 Contribuidores: Alexanderps, Ricardo Ferreira
de Oliveira, FMTbot, Renato de carvalho ferreira e KLBot2
• Grafo de Petersen Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Petersen?oldid=35569975 Contribuidores: Luckas-bot, Ricardo Fer-
reira de Oliveira, WikitanvirBot e KLBot2
• Grafo de Shrikhande Fonte: https://pt.wikipedia.org/wiki/Grafo_de_Shrikhande?oldid=35141749 Contribuidores: Ricardo Ferreira de
Oliveira, FMTbot e KLBot2
• Grafos de Chang Fonte: https://pt.wikipedia.org/wiki/Grafos_de_Chang?oldid=35141793 Contribuidores: Luckas-bot, Ricardo Ferreira
de Oliveira, FMTbot e KLBot2

9.2 Imagens
• Ficheiro:10-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/8/86/10-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:11-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/9b/11-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:4-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/2d/4-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:4-tournament.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/8/89/4-tournament.svg Licença: Public domain
Contribuidores: Obra do próprio Artista original: Booyabazooka
• Ficheiro:4x4_grid_spanning_tree.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/d/d4/4x4_grid_spanning_tree.svg Li-
cença: Public domain Contribuidores: Obra do próprio Artista original: David Eppstein
• Ficheiro:5-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/e9/5-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:6-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c8/6-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
94 CAPÍTULO 9. FONTES, CONTRIBUIDORES E LICENÇAS DE TEXTO E IMAGEM

• Ficheiro:6n-graf.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5b/6n-graf.svg Licença: Public domain Contribuidores:


Image:6n-graf.png simlar input data Artista original: User:AzaToth
• Ficheiro:6n-graph2.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/28/6n-graph2.svg Licença: Public domain Contri-
buidores: ? Artista original: ?
• Ficheiro:7-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/cb/7-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:8-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/2c/8-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:9-simplex_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/bb/9-simplex_graph.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Ambox_rewrite.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/1/1c/Ambox_rewrite.svg Licença: Public do-
main Contribuidores: self-made in Inkscape Artista original: penubag
• Ficheiro:Aresta.png Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c2/Aresta.png Licença: CC BY-SA 3.0 Contribuidores:
Obra do próprio Artista original: Ricardo Ferreira de Oliveira
• Ficheiro:Arrow_east.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/71/Arrow_east.svg Licença: Public domain Contri-
buidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre direito autoral. Artista
original: Sem fonte automaticamente legível. Presume-se que a autoria seja de MarianSigler, baseando-se nas informações sobre direito
autoral.
• Ficheiro:Arrow_north.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/4/4a/Arrow_north.svg Licença: Public domain
Contribuidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre direito au-
toral. Artista original: Sem fonte automaticamente legível. Presume-se que a autoria seja de MarianSigler, baseando-se nas informações
sobre direito autoral.
• Ficheiro:Arrow_south.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/f/ff/Arrow_south.svg Licença: Public domain Con-
tribuidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre direito autoral.
Artista original: Sem fonte automaticamente legível. Presume-se que a autoria seja de MarianSigler, baseando-se nas informações sobre
direito autoral.
• Ficheiro:Arrow_west.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/9f/Arrow_west.svg Licença: Public domain Con-
tribuidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre direito autoral.
Artista original: Sem fonte automaticamente legível. Presume-se que a autoria seja de MarianSigler, baseando-se nas informações sobre
direito autoral.
• Ficheiro:Asym-graph.PNG Fonte: https://upload.wikimedia.org/wikipedia/commons/0/08/Asym-graph.PNG Licença: CC BY-SA 3.0
Contribuidores: Obra do próprio Artista original: Mikkalai
• Ficheiro:Biclique_K_3_3.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/f/f3/Biclique_K_3_3.svg Licença: CC BY-SA
3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Biclique_K_3_5.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/d/d6/Biclique_K_3_5.svg Licença: CC BY-SA
3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Biggs-Smith_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/b5/Biggs-Smith_graph.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:BiggsSmith.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/3/32/BiggsSmith.svg Licença: Public domain Contri-
buidores: Transferido de en.wikipedia para o Commons. Artista original: Stolee em Wikipédia em inglês
• Ficheiro:Breadth-First-Search-Algorithm.gif Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5d/
Breadth-First-Search-Algorithm.gif Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Mre
• Ficheiro:Breadth-first_search_Algorithm.gif Fonte: https://upload.wikimedia.org/wikipedia/commons/9/99/Breadth-first_search_
Algorithm.gif Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Aexpedito
• Ficheiro:Brouwer_Haemers_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/b1/Brouwer_Haemers_graph.svg
Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Claudio Rocchini
• Ficheiro:Cayley_Graph_of_Dihedral_Group_D4.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/58/Cayley_Graph_
of_Dihedral_Group_D4.svg Licença: Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Cayley_graph_of_F2.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/d/d2/Cayley_graph_of_F2.svg Licença:
Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Chang_graphs.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/0/04/Chang_graphs.svg Licença: CC BY-SA 3.0
Contribuidores: Obra do próprio Artista original: Claudio Rocchini
• Ficheiro:Commons-logo.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg Licença: Public domain
Contribuidores: This version created by Pumbaa, using a proper partial circle and SVG geometry features. (Former versions used to be
slightly warped.) Artista original: SVG version was created by User:Grunt and cleaned up by 3247, based on the earlier PNG version,
created by Reidab.
• Ficheiro:Complete_graph_K1.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/a/ad/Complete_graph_K1.svg Licença:
Public domain Contribuidores: Obra do próprio Artista original: David Benbennick wrote this file.
• Ficheiro:Complete_graph_K2.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/96/Complete_graph_K2.svg Licença:
Public domain Contribuidores: Obra do próprio Artista original: David Benbennick wrote this file.
• Ficheiro:Complete_graph_K3.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5a/Complete_graph_K3.svg Licença:
Public domain Contribuidores: Obra do próprio Artista original: David Benbennick wrote this file.
• Ficheiro:Complete_graph_K4.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/59/Complete_graph_K4.svg Licença:
Public domain Contribuidores: Obra do próprio Artista original: David Benbennick wrote this file.
9.2. IMAGENS 95

• Ficheiro:Computer.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/d/d7/Computer.svg Licença: Public domain Contribui-


dores: The Tango! Desktop Project Artista original: The people from the Tango! project
• Ficheiro:Conjugate-dessins.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5d/Conjugate-dessins.svg Licença: Public
domain Contribuidores: Self-made; redrawn from figures 2.9 and 2.10 of Lando, Sergei K. & Zvonkin, Alexander K. (2004), Graphs on
Surfaces and Their Applications, vol. 141, Encyclopaedia of Mathematical Sciences: Lower-Dimensional Topology II, Springer-Verlag.
Artista original: David Eppstein
• Ficheiro:Crystal_Clear_app_demo.png Fonte: https://upload.wikimedia.org/wikipedia/commons/f/fe/Crystal_Clear_app_demo.png
Licença: LGPL Contribuidores: All Crystal Clear icons were posted by the author as LGPL on kde-look; Artista original: Everaldo Coelho
and YellowIcon;
• Ficheiro:Crystal_Clear_app_ktalkd.png Fonte: https://upload.wikimedia.org/wikipedia/commons/d/d7/Crystal_Clear_app_ktalkd.
png Licença: LGPL Contribuidores: All Crystal Clear icons were posted by the author as LGPL on kde-look; Artista original: Everaldo
Coelho and YellowIcon;
• Ficheiro:Depth-first-tree.png Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5d/Depth-first-tree.png Licença: CC-BY-
SA-3.0 Contribuidores:
• Wolfram Esser Artista original: Wolfram Esser
• Ficheiro:Depthfirst.png Fonte: https://upload.wikimedia.org/wikipedia/commons/2/2c/Depthfirst.png Licença: GFDL 1.2 Contribuido-
res: ? Artista original: ?
• Ficheiro:DesarguesGraph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/2e/DesarguesGraph.svg Licença: Public do-
main Contribuidores: Obra do próprio Artista original: David Eppstein
• Ficheiro:Dijkstra_Animation.gif Fonte: https://upload.wikimedia.org/wikipedia/commons/5/57/Dijkstra_Animation.gif Licença: Pu-
blic domain Contribuidores: Work by uploader. Artista original: Ibmua
• Ficheiro:Directed.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/a/a2/Directed.svg Licença: Public domain Contribuido-
res: ? Artista original: ?
• Ficheiro:DirectedDegrees.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/77/DirectedDegrees.svg Licença: GFDL
Contribuidores: Obra do próprio Artista original: Melchoir
• Ficheiro:Directed_acyclic_graph.png Fonte: https://upload.wikimedia.org/wikipedia/commons/0/08/Directed_acyclic_graph.png Li-
cença: Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Directed_acyclic_graph_2.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/0/03/Directed_acyclic_graph_2.svg
Licença: Public domain Contribuidores: Obra do próprio Artista original: Johannes Rössel (<a href='//commons.wikimedia.org/wiki/User_
talk:Joey-das-WBF' title='User talk:Joey-das-WBF'>talk</a>)
• Ficheiro:Disambig_grey.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/4/4a/Disambig_grey.svg Licença: Public domain
Contribuidores: Obra do próprio Artista original: Bub’s
• Ficheiro:Dodecahedral_graph.neato.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/0/05/Dodecahedral_graph.neato.
svg Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:E-to-the-i-pi.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/3/35/E-to-the-i-pi.svg Licença: CC BY 2.5 Contri-
buidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre direito autoral. Artista
original: Sem fonte automaticamente legível. Presume-se que a autoria seja de Dermeister, baseando-se nas informações sobre direito
autoral.
• Ficheiro:F26A_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/a/ad/F26A_graph.svg Licença: CC BY-SA 3.0 Con-
tribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Farm-Fresh_application_osx_terminal.png Fonte: https://upload.wikimedia.org/wikipedia/commons/1/13/Farm-Fresh_
application_osx_terminal.png Licença: CC BY 3.0 us Contribuidores: http://www.fatcow.com/free-icons/ Artista original: FatCow Web
Hosting
• Ficheiro:Folkman_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/3/30/Folkman_graph.svg Licença: Public do-
main Contribuidores: Obra do próprio Artista original: David Eppstein
• Ficheiro:Folkman_graph_alt.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/a/ad/Folkman_graph_alt.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Foster_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/f/fc/Foster_graph.svg Licença: CC BY 2.5 Contri-
buidores: Obra do próprio Artista original: Claudio Rocchini
• Ficheiro:Frucht_graph.dot.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/3/36/Frucht_graph.dot.svg Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Frucht_graph.neato.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5d/Frucht_graph.neato.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:GermanyBFS.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/6/63/GermanyBFS.svg Licença: Public domain
Contribuidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre direito au-
toral. Artista original: Sem fonte automaticamente legível. Presume-se que a autoria seja de Regnaron~commonswiki, baseando-se nas
informações sobre direito autoral.
• Ficheiro:Grafo_k4_plano.PNG Fonte: https://upload.wikimedia.org/wikipedia/commons/0/02/Grafo_k4_plano.PNG Licença: CC-
BY-SA-3.0 Contribuidores: Transferido de pt.wikipedia para o Commons por Econt. Artista original: Marivb em Wikipédia em português
• Ficheiro:Graph.traversal.example.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/6/61/Graph.traversal.example.svg Li-
cença: CC-BY-SA-3.0 Contribuidores: Self-made SVG version of en:Image:Graph.traversal.example.png Artista original: Miles
• Ficheiro:Graph_isomorphism_a.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/9a/Graph_isomorphism_a.svg Li-
cença: CC-BY-SA-3.0 Contribuidores: ? Artista original: ?
96 CAPÍTULO 9. FONTES, CONTRIBUIDORES E LICENÇAS DE TEXTO E IMAGEM

• Ficheiro:Graph_isomorphism_b.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/8/84/Graph_isomorphism_b.svg Li-


cença: CC-BY-SA-3.0 Contribuidores: ? Artista original: ?
• Ficheiro:Gray_graph_2COL.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/cd/Gray_graph_2COL.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Gray_graph_hamiltonian.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/7a/Gray_graph_hamiltonian.svg
Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:GuidoRossum.PNG Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c4/GuidoRossum.PNG Licença: CC BY-SA
3.0 Contribuidores: Obra do próprio Artista original: Ricardo Ferreira de Oliveira
• Ficheiro:Hamilton_path.gif Fonte: https://upload.wikimedia.org/wikipedia/commons/f/fc/Hamilton_path.gif Licença: CC BY 2.5 Con-
tribuidores: Obra do próprio Artista original: Claudio Rocchini
• Ficheiro:Hamilton_path.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/f/ff/Hamilton_path.svg Licença: CC BY-SA 2.5
Contribuidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre direito autoral.
Artista original: Sem fonte automaticamente legível. Presume-se que a autoria seja de Superborsuk, baseando-se nas informações sobre
direito autoral.
• Ficheiro:Hamiltonian_path.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/6/60/Hamiltonian_path.svg Licença: CC-
BY-SA-3.0 Contribuidores: Obra do próprio Artista original: Christoph Sommer
• Ficheiro:Heawood_Graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/0/06/Heawood_Graph.svg Licença: GFDL
Contribuidores: Created by me based on Image:Heawood graph.svg Artista original: R. A. Nonenmacher
• Ficheiro:Higman-Sims-19.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/6/65/Higman-Sims-19.svg Licença: Public do-
main Contribuidores: Obra do próprio Artista original: Gro-Tsen
• Ficheiro:Higman_Sims_Graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/ef/Higman_Sims_Graph.svg Licença:
CC BY 3.0 Contribuidores: Obra do próprio Artista original: Claudio Rocchini
• Ficheiro:Higman_Sims_Graph_Parts.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/e7/Higman_Sims_Graph_Parts.
svg Licença: CC BY 3.0 Contribuidores: Obra do próprio Artista original: Claudio Rocchini
• Ficheiro:Hoffman-Singleton_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/ef/Hoffman-Singleton_graph.svg
Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Uzyel
• Ficheiro:Hoffman_singleton_graph_circle2.gif Fonte: https://upload.wikimedia.org/wikipedia/commons/5/58/Hoffman_singleton_
graph_circle2.gif Licença: CC BY 2.5 Contribuidores: Obra do próprio Artista original: Claudio Rocchini
• Ficheiro:Holt_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/ba/Holt_graph.svg Licença: CC BY-SA 3.0 Con-
tribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Johnson’{}s_algorithm.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/4/4f/Johnson%27s_algorithm.svg Li-
cença: Public domain Contribuidores: Obra do próprio Artista original: David Eppstein
• Ficheiro:Konigsberg_bridges.png Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5d/Konigsberg_bridges.png Licença:
CC-BY-SA-3.0 Contribuidores: Public domain (PD), based on the image
• <a href='//commons.wikimedia.org/wiki/File:Image-Koenigsberg,_Map_by_Merian-Erben_1652.jpg' class='image'><img
alt='Image-Koenigsberg, Map by Merian-Erben 1652.jpg' src='https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/
Image-Koenigsberg%2C_Map_by_Merian-Erben_1652.jpg/120px-Image-Koenigsberg%2C_Map_by_Merian-Erben_1652.jpg'
width='120' height='84' srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Image-Koenigsberg%
2C_Map_by_Merian-Erben_1652.jpg/180px-Image-Koenigsberg%2C_Map_by_Merian-Erben_1652.jpg 1.5x, https:
//upload.wikimedia.org/wikipedia/commons/thumb/1/15/Image-Koenigsberg%2C_Map_by_Merian-Erben_1652.jpg/
240px-Image-Koenigsberg%2C_Map_by_Merian-Erben_1652.jpg 2x' data-file-width='628' data-file-height='437' /></a>

Artista original: Bogdan Giuşcă


• Ficheiro:Kruskal_Algorithm_1.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/b4/Kruskal_Algorithm_1.svg Licença:
Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Kruskal_Algorithm_2.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/f/ff/Kruskal_Algorithm_2.svg Licença:
Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Kruskal_Algorithm_3.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/59/Kruskal_Algorithm_3.svg Licença:
Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Kruskal_Algorithm_4.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/2e/Kruskal_Algorithm_4.svg Licença:
Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Kruskal_Algorithm_5.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/f/f4/Kruskal_Algorithm_5.svg Licença:
Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Kruskal_Algorithm_6.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/8/87/Kruskal_Algorithm_6.svg Licença:
Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Königsberg_graph.png Fonte: https://upload.wikimedia.org/wikipedia/commons/f/fa/K%C3%B6nigsberg_graph.png Li-
cença: CC-BY-SA-3.0 Contribuidores: ? Artista original: ?
• Ficheiro:Königsberg_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/96/K%C3%B6nigsberg_graph.svg Li-
cença: CC-BY-SA-3.0 Contribuidores: ? Artista original: ?
• Ficheiro:Labelled_Eulergraph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/72/Labelled_Eulergraph.svg Licença:
Public domain Contribuidores: Obra do próprio Artista original: S Sepp
• Ficheiro:Lista_de_adjacencia.png Fonte: https://upload.wikimedia.org/wikipedia/commons/6/61/Lista_de_adjacencia.png Licença:
CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Ricardo Ferreira de Oliveira
9.2. IMAGENS 97

• Ficheiro:Ljubljana_graph_hamiltonian.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/0/0f/Ljubljana_graph_


hamiltonian.svg Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Magnifying_glass_01.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/3/3a/Magnifying_glass_01.svg Licença:
CC0 Contribuidores: ? Artista original: ?
• Ficheiro:MapGermanyGraph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/a/ad/MapGermanyGraph.svg Licença: Pu-
blic domain Contribuidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas informações sobre
direito autoral. Artista original: Sem fonte automaticamente legível. Presume-se que a autoria seja de Regnaron~commonswiki, baseando-
se nas informações sobre direito autoral.
• Ficheiro:Minimum_spanning_tree.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/d/d2/Minimum_spanning_tree.svg
Licença: Public domain Contribuidores: Sem fonte automaticamente legível. Presume-se que seja obra própria, baseando-se nas infor-
mações sobre direito autoral. Artista original: Sem fonte automaticamente legível. Presume-se que a autoria seja de Dcoetzee, baseando-se
nas informações sobre direito autoral.
• Ficheiro:Multi-pseudograph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c9/Multi-pseudograph.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: 0x24a537r9
• Ficheiro:Mycielski_graph_k4_hamiltonian_path.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/3/32/Mycielski_
graph_k4_hamiltonian_path.svg Licença: Public domain Contribuidores: Sem fonte automaticamente legível. Presume-se que seja obra
própria, baseando-se nas informações sobre direito autoral. Artista original: Sem fonte automaticamente legível. Presume-se que a autoria
seja de Mlepicki, baseando-se nas informações sobre direito autoral.
• Ficheiro:Nauru_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c5/Nauru_graph.svg Licença: CC BY-SA 3.0
Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Nauru_graph_3d.png Fonte: https://upload.wikimedia.org/wikipedia/commons/0/0b/Nauru_graph_3d.png Licença: CC BY-
SA 3.0 Contribuidores: Obra do próprio Artista original: David Eppstein
• Ficheiro:Nauru_unit_distance.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/6/67/Nauru_unit_distance.svg Licença:
Public domain Contribuidores: Obra do próprio Artista original: David Eppstein
• Ficheiro:NoFonti.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/b5/NoFonti.svg Licença: CC BY-SA 2.5 Contribuido-
res: Image:Emblem-important.svg Artista original: RaminusFalcon
• Ficheiro:Nuvola_apps_edu_mathematics-p.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c2/Nuvola_apps_edu_
mathematics-p.svg Licença: GPL Contribuidores: Derivative of Image:Nuvola apps edu mathematics.png created by self Artista original:
David Vignoni (original icon); Flamurai (SVG convertion)
• Ficheiro:Octahedron_graph.png Fonte: https://upload.wikimedia.org/wikipedia/commons/2/2a/Octahedron_graph.png Licença: CC-
BY-SA-3.0 Contribuidores: ? Artista original: ?
• Ficheiro:Paley13.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/0/05/Paley13.svg Licença: Public domain Contribuidores:
Transferido de en.wikipedia para o Commons. Artista original: David Eppstein em Wikipédia em inglês
• Ficheiro:Paley13_no_label.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/72/Paley13_no_label.svg Licença: Public
domain Contribuidores:
• Paley13.svg Artista original: Paley13.svg: Original uploader was David Eppstein at en.wikipedia
• Ficheiro:Pappus_graph_LS.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/73/Pappus_graph_LS.svg Licença: Public
domain Contribuidores: Obra do próprio, drawn using the Lombardi Spirograph Artista original: David Eppstein
• Ficheiro:Path-graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/e1/Path-graph.svg Licença: Public domain Contri-
buidores: w:File:Path-graph.svg Artista original: Momotaro
• Ficheiro:Period-3-graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/20/Period-3-graph.svg Licença: Public do-
main Contribuidores: Transferido de en.wikipedia para o Commons. Artista original: David Eppstein em Wikipédia em inglês
• Ficheiro:Petersen1_tiny.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/91/Petersen1_tiny.svg Licença: CC BY-SA 3.0
Contribuidores: Own work by uploader based on http://en.wikipedia.org/wiki/File:Heawood_Graph.svg Artista original: Leshabirukov
• Ficheiro:Petersen_graph,_two_crossings.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/78/Petersen_graph%2C_
two_crossings.svg Licença: Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Petersen_graph,_unit_distance.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/be/Petersen_graph%2C_
unit_distance.svg Licença: Public domain Contribuidores: ? Artista original: ?
• Ficheiro:Pontes_Königsberg.JPG Fonte: https://upload.wikimedia.org/wikipedia/commons/5/5b/Pontes_K%C3%B6nigsberg.JPG Li-
cença: Public domain Contribuidores: Transferido de pt.wikipedia para o Commons por Cwbm (commons) utilizando CommonsHelper.
Artista original: Diego UFCG em Wikipédia em português
• Ficheiro:Portal.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c9/Portal.svg Licença: CC BY 2.5 Contribuidores:
• Portal.svg
Artista original: Portal.svg: Pepetps
• Ficheiro:Prim.PNG Fonte: https://upload.wikimedia.org/wikipedia/commons/2/28/Prim.PNG Licença: Public domain Contribuidores:
Transferido de pt.wikipedia para o Commons. Artista original: Este ficheiro foi inicialmente carregado por Rômulo Penido em Wikipédia
em português
• Ficheiro:Prim_Algorithm_0.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/a/a8/Prim_Algorithm_0.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel
• Ficheiro:Prim_Algorithm_1.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/5/56/Prim_Algorithm_1.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel, Stefan Birkner
98 CAPÍTULO 9. FONTES, CONTRIBUIDORES E LICENÇAS DE TEXTO E IMAGEM

• Ficheiro:Prim_Algorithm_2.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/f/f5/Prim_Algorithm_2.svg Licença: CC


BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel, Stefan Birkner
• Ficheiro:Prim_Algorithm_3.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/b4/Prim_Algorithm_3.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel, Stefan Birkner
• Ficheiro:Prim_Algorithm_4.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/7e/Prim_Algorithm_4.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel, Stefan Birkner
• Ficheiro:Prim_Algorithm_5.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/e3/Prim_Algorithm_5.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel, Stefan Birkner
• Ficheiro:Prim_Algorithm_6.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/99/Prim_Algorithm_6.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel, Stefan Birkner
• Ficheiro:Prim_Algorithm_7.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/b9/Prim_Algorithm_7.svg Licença: CC
BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Alexander Drichel, Stefan Birkner
• Ficheiro:Question_book.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/97/Question_book.svg Licença: CC-BY-SA-
3.0 Contribuidores: ? Artista original: ?
• Ficheiro:RecursiveEvenBipartite.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/b9/RecursiveEvenBipartite.svg Li-
cença: CC BY-SA 3.0 Contribuidores: Obra do próprio The construction is described in the proof Theorem 3.5, “A connected graph is
bipartite if and only if it contains no cycle of odd length.”, on pages 53-54 of Anderson, Ian (2001). A First Course in Discrete Mathematics.
London: Springer. p. 53. ISBN 1-85233-236-0. Figure 3.9 on page 53 depicts some bipartite graphs. This image, RecursiveEvenBipar-
tite.svg, differs from Anderson in that it uses a different graph, it uses colors instead of the letters B/W, and it labels the vertices by distance
as in the algorithm. Artista original: Melchoir
• Ficheiro:Searchtool.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/6/61/Searchtool.svg Licença: LGPL Contribuidores:
http://ftp.gnome.org/pub/GNOME/sources/gnome-themes-extras/0.9/gnome-themes-extras-0.9.0.tar.gz Artista original: David Vignoni,
Ysangkok
• Ficheiro:Shrikhande_graph_square.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/1/19/Shrikhande_graph_square.svg
Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Simple-bipartite-graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/e8/Simple-bipartite-graph.svg Li-
cença: Public domain Contribuidores: Obra do próprio Artista original: MistWiz
• Ficheiro:Star_graphs.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/7d/Star_graphs.svg Licença: CC BY-SA 3.0 Con-
tribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Star_network_7.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/4/49/Star_network_7.svg Licença: CC-BY-SA-
3.0 Contribuidores: Obra do próprio Artista original: Merdis
• Ficheiro:Symbol_question.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/e0/Symbol_question.svg Licença: Public do-
main Contribuidores: ? Artista original: ?
• Ficheiro:Symmetric_group_4;_Cayley_graph_1,5,21_(Nauru_Petersen).svg Fonte: https://upload.wikimedia.org/wikipedia/
commons/1/10/Symmetric_group_4%3B_Cayley_graph_1%2C5%2C21_%28Nauru_Petersen%29.svg Licença: Public domain
Contribuidores: Obra do próprio Artista original: Lipedia
• Ficheiro:Symmetric_group_4;_Cayley_graph_1,5,21_(Nauru_torus).svg Fonte: https://upload.wikimedia.org/wikipedia/commons/
e/ea/Symmetric_group_4%3B_Cayley_graph_1%2C5%2C21_%28Nauru_torus%29.svg Licença: Public domain Contribuidores: derivate
work of File:Nauru graph torus.svg Artista original: Watchduck (a.k.a. Tilman Piesk)
• Ficheiro:Symmetric_group_4;_Cayley_graph_1,5,21_(adjacency_matrix).svg Fonte: https://upload.wikimedia.org/wikipedia/
commons/1/17/Symmetric_group_4%3B_Cayley_graph_1%2C5%2C21_%28adjacency_matrix%29.svg Licença: Public domain
Contribuidores: Obra do próprio Artista original: Lipedia
• Ficheiro:Translation_Latin_Alphabet.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/2a/Translation_Latin_
Alphabet.svg Licença: CC-BY-SA-3.0 Contribuidores: Derived from File:Translation arrow.svg and File:Descento.svg Artista original:
Jesse Burgheimer, Ladislav Faigl and David Levy
• Ficheiro:Tree_graph.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/2/24/Tree_graph.svg Licença: Public domain Contri-
buidores: ? Artista original: ?
• Ficheiro:TruncatedTetrahedron.gif Fonte: https://upload.wikimedia.org/wikipedia/commons/0/0f/TruncatedTetrahedron.gif Licença:
Public domain Contribuidores: Obra do próprio Artista original: Radagast3
• Ficheiro:Truncated_tetrahedral_graph.circo.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/7/73/Truncated_
tetrahedral_graph.circo.svg Licença: CC BY-SA 3.0 Contribuidores: Obra do próprio Artista original: Koko90
• Ficheiro:Undirected.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/bf/Undirected.svg Licença: Public domain Contri-
buidores: ? Artista original: ?
• Ficheiro:UndirectedDegrees.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/9/97/UndirectedDegrees.svg Licença:
GFDL Contribuidores: Obra do próprio Artista original: Melchoir
• Ficheiro:Undirected_chain_articulation_points.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/e2/Undirected_
chain_articulation_points.svg Licença: Public domain Contribuidores: Obra do próprio (Texto original: “I created this work entirely by
myself.”) Artista original: ~ <a href='//en.wikipedia.org/wiki/User:Booyabazooka' class='extiw' title='en:User:Booyabazooka'>Booya
Bazooka </a>

• Ficheiro:VR_complex.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/d/d0/VR_complex.svg Licença: Public domain


Contribuidores: Obra do próprio Artista original: David Eppstein
• Ficheiro:Walk-trail-path.png Fonte: https://upload.wikimedia.org/wikipedia/commons/1/15/Walk-trail-path.png Licença: CC BY-SA
4.0 Contribuidores: Obra do próprio Artista original: Nar7uto
9.3. LICENÇA 99

• Ficheiro:Whitneys_theorem_exception.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/e/ec/Whitneys_theorem_


exception.svg Licença: Public domain Contribuidores:
• Complete_graph_K3.svg Artista original: User:Dcoetzee *derivative work: Dcoetzee (talk)
• Ficheiro:Z_2xZ_3.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/4/4f/Z_2xZ_3.svg Licença: Public domain Contribuido-
res: Obra do próprio Artista original: Tosha

9.3 Licença
• Creative Commons Attribution-Share Alike 3.0