Teoria Dos Grafos

  • Uploaded by: Mauricio Barros
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Teoria Dos Grafos as PDF for free.

More details

  • Words: 44,891
  • Pages: 157
Loading documents preview...
Teoria dos Grafos Grafos individuais

PDF gerado usando o pacote de ferramentas em código aberto mwlib. Veja http://code.pediapress.com/ para mais informações. PDF generated at: Fri, 03 May 2013 18:20:23 UTC

Conteúdo Páginas Introdução - Teoria dos Grafos

1

Sete pontes de Königsberg

1

Teoria dos grafos

2

Conceitos Básicos e Definições

8

Grafo

8

Vértice

9

Aresta

11

Aresta múltipla

12

Ciclos em um grafo

12

Clique

12

O grau de um grafo

13

Grafo bipartido

15

Grafo bipartido completo

17

Grafo caminho

19

Grafo completo

20

Grafo cúbico

20

Grafo Estrela

23

Grafo nulo

24

Grafo orientado

25

Grafo simples

28

Grafo valorado

28

Homomorfismo de grafos

29

Isomorfismo de grafos

30

Laço

32

Multigrafo

33

Pseudografo

34

Quiver

36

Vértice de corte (teoria dos grafos)

37

Vizinhança

40

Árvores Árvores

42 42

Árvore de extensão

43

Árvore de extensão mínima

44

Representação de Grafos

46

Matriz de adjacência

46

Matriz de incidência

48

Lista de adjacência

49

Automorfismo de grafos

52

Automorfismo de grafos

52

Grafo regular

55

Grafo fortemente regular

57

Grafo distância-regular

60

Grafo distância-transitivo

63

Grafo simétrico

65

Grafo meio-transitivo

68

Grafo semissimétrico

69

Grafo aresta-transitivo

70

Grafo vértice-transitivo

71

Grafo de Cayley

73

Grafo antissimétrico

75

Grafo assimétrico

77

Algoritmos em Grafos

79

Busca em largura

79

Busca em profundidade

86

Caminho

88

Caminho euleriano

89

Caminho hamiltoniano

90

Ordenação topológica

92

Algoritmo de Bellman-Ford

94

Algoritmo A*

97

Algoritmo de Floyd-Warshall

98

Algoritmo de Johnson

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

100 102

Algoritmo de Kruskal

102

Algoritmo de Prim

103

Algoritmo de Dijkstra

109

Algoritmo de Boruvka

Grafos individuais

113 116

Grafo de Biggs-Smith

116

Grafo de Brouwer-Haemers

118

Grafo de Desargues

119

Grafo de Folkman

121

Grafo de Foster

123

Grafo de Frucht

125

Grafo de Gray

126

Grafo de Heawood

128

Grafo de Higman-Sims

130

Grafo de Hoffman-Singleton

132

Grafo de Holt

133

Grafo de Ljubljana

135

Grafo de Nauru

137

Grafo de Pappus

140

Grafo de Petersen

142

Grafo de Shrikhande

144

Grafos de Chang

146

Referências Fontes e Editores da Página

147

Fontes, Licenças e Editores da Imagem

149

Licenças das páginas Licença

153

1

Introdução - Teoria dos Grafos Sete pontes de Königsberg Sete pontes de Königsberg é um famoso problema histórico da matemática resolvido por Leonhard Euler em 1736, cuja solução originou a teoria dos grafos.[1] O problema é baseado na cidade de Königsberg (território da Prússia até 1945, atual Kaliningrado), que é cortada pelo Rio Prególia, onde há duas grandes ilhas que, juntas, formam um complexo que na época continha sete pontes, conforme mostra a figura ao lado. Das sete pontes originais, uma foi demolida e reconstruída em 1935, duas foram destruídas durante a Segunda Guerra Mundial e outras duas foram demolidas para dar lugar a uma única via expressa. Atualmente apenas duas pontes são da época de Leonard Euler. Discutia-se nas ruas da cidade a possibilidade de atravessar 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.

Esquema de pontes.

Grafo estilizado das pontes.

Euler usou um raciocínio muito simples. Transformou os caminhos em retas e suas intersecções em pontos, criando possivelmente o primeiro grafo da história. Então percebeu que só seria possível atravessar o caminho inteiro passando uma única vez em cada ponte se houvesse exatamente zero ou dois pontos de onde saísse um nú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 houver pontos com número ímpar de caminhos, pode-se (e deve-se) iniciar e terminar o trajeto no mesmo ponto, podendo esse ser qualquer ponto do grafo. Isso não é possí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 do bombardeamento de Königsberg em agosto de 1944.[2] [1] Leonhard Euler: Solutio problematis ad geometriam situs pertinentis (http:/ / www. math. dartmouth. edu/ ~euler/ docs/ originals/ E053. pdf)

Teoria dos grafos

2

Teoria dos grafos A teoria dos grafos é um ramo da matemática que estuda as relações entre os objetos de um determinado conjunto. Para tal são empregadas estruturas chamadas de grafos, G(V,A), onde V é um conjunto não vazio de objetos denominados vértices e A é um conjunto de pares não ordenados de V, chamado arestas. Dependendo da aplicação, arestas podem ou não ter direçã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 (numérico) associado. Se as arestas têm uma direção associada (indicada por uma seta na representação gráfica) temos um grafo direcionado, grafo orientado ou digrafo. Um grafo com um único vértice e sem arestas é conhecido como o grafo trivial.

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

Estruturas que podem ser representadas por grafos estão em toda parte e muitos problemas de interesse prático podem ser formulados como questões sobre certos grafos. Por exemplo, a estrutura de links da Wikipedia pode ser representada por um dígrafo: os vértices são os artigos da Wikipedia e existe uma aresta do artigo A para o artigo 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 importante tema da ciência da computação.

Histórico O artigo de Leonhard Euler, publicado em 1736, sobre o problema das sete pontes de Königsberg, é considerado o primeiro resultado da teoria dos grafos.[] É também considerado um dos primeiros resultados topológicos na geometria; isto é, não dependente de quaisquer medidas. Isso ilustra a profunda conexão entre a teoria dos grafos e topologia.

Definições de grafos e digrafos Na literatura, as definições básicas da teoria dos grafos variam bastante. Aqui estão as convenções usadas nesta enciclopédia. Um grafo direcionado (também chamado digrafo ou quiver) consiste de • um conjunto V de vértices, • um conjunto E de arestas e • mapas s, t : E → V, onde s(e) é a fonte e t(e) é o alvo da aresta direcionada e. Um grafo não direcionado (ou simplesmente grafo) é dado por • um conjunto V de vértices, • um conjunto E de arestas e • uma função w : E → P(V) que associa a cada aresta um subconjunto de dois ou de um elemento de V, interpretado como os pontos terminais da aresta. Em um grafo ou digrafo com pesos, uma função adicional E → R associa um valor a cada aresta, o que pode ser considerado seu "custo"; tais grafos surgem em problemas de rota ótima tais como o problema do caixeiro viajante.

Teoria dos grafos

Representação gráfica (layout do grafo) Os grafos são geralmente representados graficamente da seguinte maneira: é desenhado um círculo para cada vértice, e para cada aresta é desenhado um arco conectando suas extremidades. Se o grafo for direcionado, seu sentido é indicado na aresta por uma seta. Note que essa representação gráfica (o layout) não deve ser confundida com o grafo em si (a estrutura abstrata, não-gráfica). Vários diferentes layouts podem corresponder ao mesmo grafo.[1] O que importa é quais vértices estão conectados entre si por quantas arestas.

Glossário dos conceitos básicos de teoria dos grafos O grafo de exemplo exibido à direita é um grafo simples com o conjunto de vértices V = {1, 2, 3, 4, 5, 6} e um conjunto de arestas E = { {1,2}, {1,5}, {2,3}, {2,5}, {3,4}, {4,5}, {4,6} } (com o mapeamento w sendo a identidade). Uma aresta conecta dois vértices; esses dois vértices são ditos como incidentes à aresta. A valência (ou grau) de um vértice é o número de arestas incidentes a ele, com loops contados duas vezes. No grafo de exemplo os vértices 1 e 3 possuem uma valência de 2, os vértices 2, 4 e Um grafo com 6 vértices e 7 arestas 5 têm a valência de 3 e o vértice 6 tem a valência de 1. Se E é finito, então a valência total dos vértices é o dobro do número de arestas. Em um dígrafo, distingue-se o grau de saída (o número de arestas saindo de um vértice) e o grau de entrada (o número de arestas entrando em um vértice). O grau de um vértice é igual à soma dos graus de saída e de entrada. Dois vértices são considerados adjacentes se uma aresta existe entre eles. No grafo acima, os vértices 1 e 2 são 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 vizinhos: vértice 2 e vértice 5. Para um grafo simples, o número de vizinhos de um vértice é igual à sua valência. Na computação, um grafo finito direcionado ou não-direcionado (com, digamos, n vértices) é geralmente representado por sua matriz de adjacência: uma matriz n-por-n cujo valor na linha i e coluna j fornece o número de arestas do i-ésimo ao j-ésimo vértices. Se for possível estabelecer um caminho de qualquer vértice para qualquer outro vértice de um grafo, diz-se que o grafo é conexo. Se for sempre possível estabelecer um caminho de qualquer vértice para qualquer outro vértice mesmo depois de remover k-1 vértices, então diz-se que o grafo está k-conexo. Note que um grafo está k-conexo se, e somente se, contém k caminhos independentes entre qualquer par de vértices. O grafo de exemplo acima é conexo (e portanto 1-conexo), mas não é 2-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) - X, onde V(G) é o conjunto de todos os vértices pertencentes ao grafo G. • Grafo simples é um grafo não direcionado, sem laços e que existe no máximo uma aresta entre quaisquer dois vértices (sem arestas paralelas). No grafo de exemplo, (1, 2, 5, 1, 2, 3) é um caminho com comprimento 5, e (5, 2, 1) é um caminho simples de comprimento 2. • Grafo completo é o grafo simples em que, para cada vértice do grafo, existe uma aresta conectando este vértice a cada um dos demais. Ou seja, todos os vértices do grafo possuem mesmo grau. O grafo completo de n vértices é frequentemente denotado por Kn. Ele tem n(n-1)/2 arestas (correspondendo a todas as possíveis escolhas de pares de vértices). • Grafo nulo é o grafo cujo conjunto de vértices é vazio. • Grafo vazio é o grafo cujo conjunto de arestas é vazio.

3

Teoria dos grafos • Grafo trivial é o grafo que possui apenas um vertice e nenhuma aresta. • Grafo regular é um grafo em que todos os vértices tem o mesmo grau. • Multigrafo é um grafo que permite múltiplas arestas ligando os mesmos vértices (arestas paralelas). • Laço (loop) num grafo ou num digrafo é uma aresta e em E cujas terminações estão no mesmo vértice. • Pseudografo é um grafo que contém arestas paralelas e laços. • Ciclo (ou circuito) é um caminho que começa e acaba com o mesmo vértice. Ciclos de comprimento 1 são laços. No grafo de exemplo, (1, 2, 3, 4, 5, 2, 1) é um ciclo de comprimento 6. Um ciclo simples é um ciclo que tem um comprimento pelo menos de 3 e no qual o vértice inicial só aparece mais uma vez, como vértice final, e os 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. • Ponto de articulação ou Vértice de corte é um vértice cuja remoção desliga um grafo. Uma ponte é uma aresta cuja remoção desliga um grafo. Um componente biconectado é um conjunto máximo de arestas tal que qualquer par de arestas do conjunto fazem parte de um ciclo simples comum. O contorno de um grafo é o comprimento do ciclo simples mais curto no grafo. O contorno de um grafo acíclico é, por definição, infinito. • Árvore é um grafo simples acíclico e conexo. Às vezes, um vértice da árvore é distinto e chamado de raiz. Árvores são comumente usadas como estruturas de dados em informática (veja estrutura de dados em árvore). • Floresta é um conjunto de árvores; equivalentemente a uma floresta, em algum grafo acíclico. • Subgrafo de um grafo G é um grafo cujo conjunto dos vértices é um subconjunto do conjunto de vértices G, cujo conjunto de arestas é um subconjunto do conjunto de arestas de G, e cuja função w é uma restrição da função de G • Subgrafo gerador é aquele obtido pela remoção de uma ou mais arestas de um outro grafo, dizemos então que este novo grafo obtido é gerador do primeiro, • Subgrafo induzido é obtido pela remoção de vértices e consequente das arestas relacionadas com ele de um outro grafo, dizemos que este novo grafo é um grafo induzido do original. • Grafo parcial de um grafo G é um subgrafo com o mesmo conjunto de vértices que G. Uma árvore parcial é um grafo parcial que é árvore. Todo grafo tem pelo menos uma árvore parcial. • Clique em um grafo é um subgrafo que também é um grafo completo. No grafo do exemplo acima, os vértices 1, 2 e 5 formam um clique. • Conjunto independente em um grafo é um conjunto de vértices não adjacentes entre si. No exemplo acima, os vértices 1, 3 e 6 formam um conjunto independente e 3, 5 e 6 são outro conjunto independente. • Grafo planar é aquele que pode ser representado em um plano sem qualquer intersecção entre arestas. O grafo do exemplo é planar; o grafo completo de n vertices, para n> 4, não é planar. • Caminho é uma sequência de vértices tal que de cada um dos vértices existe uma aresta para o vértice seguinte. Um caminho é chamado simples se nenhum dos vértices no caminho se repete. O comprimento do caminho é o número de arestas que o caminho usa, contando-se arestas múltiplas múltiplas vezes. O custo de um caminho num grafo balanceado é a soma dos custos das arestas atravessadas. Dois caminhos são independentes se não tiverem nenhum vértice em comum, excepto o primeiro e o último. • Caminho euleriano em um grafo é o caminho que usa cada aresta exatamente uma vez. Se tal caminho existir, o grafo é chamado traversável. Um ciclo euleriano é um ciclo que usa cada aresta exatamente uma vez. • Caminho hamiltoniano em um grafo é o caminho que visita cada vertice exatamente uma vez. Um ciclo hamiltoniano é um ciclo que visita cada vértice 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 é extremamente árduo.

4

Teoria dos grafos • Lema do aperto de mãos diz que se os convidados de uma festa apertarem as mãos quando se encontrarem pela primeira vez, o número de convidados que apertam a mão um número ímpar de vezes é par. Também em grafos não direcionados a soma dos graus de todos os vértices é igual ao dobro do número de arestas. • Grafo bipartido é o grafo cujos vértices podem ser divididos em dois conjuntos, nos quais não há arestas entre vértices de um mesmo conjunto. Para um grafo ser bipartido ele não pode conter circuitos de comprimento ímpar. • 1. Se um grafo G é bipartido, todo o circuito de G possui comprimento par. • Sejam V1 e V2 os dois conjuntos em que, de acordo com a definição de grafo bipartido, se particiona V(G). Toda a aresta de G conecta um vértice em V1 com outro em V2. Assim sendo, se X for um vértice de V1, para “voltar” a esse vértice terá de se ir a V2 e voltar a V1 um número indeterminado de vezes, e de cada vez serão percorridas duas arestas, uma de um vértice em V1 para um vértice em V2 e outra de um vértice em V2 para um vértice em V1. Logo, o número de arestas a percorrer será par, ou seja, o comprimento do circuito é par. • 2. Se todo o circuito de um grafo G possui comprimento par, então o grafo é bipartido. • Seja G um grafo em que todo o circuito tem comprimento par, e seja X um vértice de G. Denotemos por V1 o conjunto formado por X e por todos os vértices cuja distância a X é par. Seja V2 = V(G)\V1 (isto é, o conjunto formado pelos vértices de G que não pertencem a V1). Pretende mostrar-se que não existe qualquer aresta que conecte vértices de V1 ou vértices de V2. Suponhamos a existência de tal aresta, isto é, suponhamos a existência de dois vértices em V1 (ou V2), digamos Xi e Xj, conectados por uma aresta. Ora existe já um caminho de comprimento par entre Xi e Xj, já que existem caminhos, ambos de comprimento par (ou ímpar, no caso de Xi e Xj pertencerem a V2), entre Xi e X e entre X e Xj. Se a esse caminho juntarmos a aresta {Xi;Xj} obtemos um circuito de comprimento ímpar o que contraria a hipótese de apenas existirem circuitos de comprimento par. • Grafo bipartido completo é o grafo bipartido, cujo qualquer vértice do primeiro conjunto é adjacente a todos vértices do segundo conjunto • Grafo k-partido ou grafo de k-coloração é um grafo cujos vértices podem ser particionados em k conjuntos disjuntos, nos quais não há arestas entre vértices de um mesmo conjunto. Um grafo 2-partido é o mesmo que grafo bipartido. • Emparelhamento de grafos consiste em partir o grafo em conjuntos de vértices a qual não compartilham nenhuma aresta entre eles. • Teorema das quatro cores é baseado no problema das cores necessárias para se colorir um mapa sem que os países vizinhos compartilhem da mesma cor. Transformando o mapa em um grafo pode-se provar que pode-se representar qualquer mapa (um grafo planar) com apenas 4 cores (4 partições). • Percurso árvores: • Percorrimento sistemático em todos os vértices e arestas do grafo. Grafo pode ser dirigido ou não. • O percurso em árvores é o processo de visitar cada nó da árvore exatamente uma vez. • O percurso pode ser interpretado como colocar todos os nós em uma linha, não existe uma ordem para ser seguida. • Existem n percursos diferentes, quase todos caóticos. • Os básicos são percurso em profundidade e percurso em largura • Fila: busca em largura • Pilha: busca em profundidade • Busca em extensão ou largura: (Breadth-First Search ou BFS). A propriedade especial está no fato de a árvore não possuir ciclos: dados dois vértices quaisquer, existe exatamente 1 caminho entre eles. Um percurso em extensão é visitar cada nó começando do menor nível e move-se para os níveis mais altos nível após nível, visitando cada nó da esquerda para a direita. Sua implementação é direta quando uma fila

5

Teoria dos grafos é utilizada. Depois que um nó é visitado, seus filhos, se houver algum, são colocados no final da fila e o nó no início da fila é visitado. Assim, os nós do nível n+1 serão visitados somente depois de ter visitados todos os nós do nível n. Computa a menor distância para todos os vértices alcançaveis. O sub-grafo contendo os caminhos percorridos é chamado de breadth-first tree. • Busca em profundidade (Depth-first search ou DFS). Um algoritmo de busca em profundidade realiza uma busca não-informada que progride através da expansão do primeiro nó filho da árvore de busca, e se aprofunda cada vez mais, até que o alvo da busca seja encontrado ou até que ele se depare com um nó que não possui filhos (nó folha). Então a busca retrocede (backtrack) e começa no próximo nó. Numa implementação não-recursiva, todos os nós expandidos recentemente são adicionados a uma pilha, para realizar a exploração. A complexidade espacial de um algoritmo de busca em profundidade é muito menor que a de um algoritmo de busca em largura. A complexidade temporal de ambos algoritmos são proporcionais ao número de vértices somados ao número de arestas dos grafos aos quais eles atravessam. Quando ocorrem buscas em grafos muito grandes, que não podem ser armazenadas completamente na memória, a busca em profundidade não termina, em casos onde o comprimento de um caminho numa árvore de busca é infinito. O simples artifício de “ lembrar quais nós já foram visitados ” não funciona, porque pode não haver memória suficiente. Isso pode ser resolvido estabelecendo-se um limite de aumento na profundidade da árvore.

Problemas que envolvem grafos • Coloração de grafos: o Teorema das quatro cores • Conjuntos de Grafos • Conjunto independente • Clique • Problemas de roteamento: • • • • •

Sete pontes de Königsberg Árvore de extensão mínima Problema do caminho mínimo Problema da inspeção de rotas (também conhecido como o "Problema do carteiro chinês") Problema do caixeiro viajante

• Fluxos de rede: • Teorema do mínimo corte-máximo fluxo • conjectura da reconstrução • Problemas de Isomorfismo (casamento de grafos) • Rotulação canônica? • Isomorfismo de subgrafos e monomorfismos. • Máximo subgrafo comum

6

Teoria dos grafos

Algoritmos importantes • • • •

algoritmo de Dijkstra algoritmo de Kruskal algoritmo do vizinho mais próximo algoritmo de Prim.

Generalizações Num hipergrafo uma aresta pode conectar mais que dois vértices. Um grafo não-direcionado pode ser visto como um complexo simplicial consistindo de símplices de uma dimensão (as arestas) e símplices de dimensão zero (os vértices). Ou seja, complexos são generalizações de grafos que permitem símplices de maiores dimensões. [1] Ver por exemplo, (http:/ / www. aisee. com/ gallery/ graph23. htm)

Ligações externas Em inglês • Graph theory tutorial (http://www.utm.edu/departments/math/graph/) • Graph theory algorithm presentation (http://www.cs.wpi.edu/~dobrush/cs507/presentation/2001/Project10/ ppframe.htm) • Some graph theory algorithm animations (http://students.ceid.upatras.gr/~papagel/project/contents.htm) • Step through the algorithm to understand it. • The compendium of algorithm visualisation sites (http://www2.hig.no/~algmet/animate.html) • A search site for finding algorithm implementations, explanations and animations (http://www.spectster.com/) • Graph Theory Software (http://graphtheorysoftware.com/)

Em português • Material sobre grafos da USP São Carlos (http://www.icmc.sc.usp.br/manuals/sce183/grafos.html) • Uma Introdução Sucinta à Teoria dos Grafos (http://www.ime.usp.br/~pf/teoriadosgrafos/texto/ TeoriaDosGrafos.pdf) • Material com "Atlas de Grafos" da FINTEC (http://www.fintec.edu.br/peter/relat04/atlas1/atlas_index.htm) • Enumeração de caminhos - Algoritmo Grafos (http://thiagoprocaci.blogspot.com/2009/10/ enumeracao-de-caminhos-algoritmo-grafos.html)

Ferramentas de grafos populares • • • • • • • •

http://www.graphviz.org/(em Inglês) http://www.absint.com/aisee/index_pt.htm (em Português) http://www.aisee.com (em Inglês) http://www.research.att.com/sw/tools/graphviz/(em Inglês) http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html (em Inglês) http://www.tulip-software.org (em Inglês) http://www.roxgt.org http://planarity.net

7

8

Conceitos Básicos e Definições Grafo Em matemática e ciência da computação, grafo é o objeto básico de estudo da teoria dos grafos. Tipicamente, um grafo é representado como um conjunto de pontos (vértices) ligados por retas (as arestas). Dependendo da aplicação, as arestas podem ser direcionadas, e são representadas por "setas". Os grafos são muito úteis na representação de problemas da vida real, em vários campos profissionais. Por exemplo, pode-se representar um mapa de estradas através dos grafos e usar algoritmos específicos para Um grafo com 6 vértices e 7 arestas. determinar o caminho mais curto entre dois pontos, ou o caminho mais económico. Assim, os grafos podem possuir também pesos (ou custo), quer nas arestas quer nos vértices, e o custo total em estudo será calculado a partir destes pesos. Grafos podem ser utilizados também em redes PERT no âmbito do planejamento de projetos. Neste caso, a cada aresta está associado o custo de execução, e as tarefas precedentes de uma outra serão suas afluentes. Outro exemplo é o caso das redes de computadores, sendo cada terminal representado por um vértice, o cabo de rede pelas arestas e o custo associado a latência, por exemplo, ou o número de máquinas que a comunicação atravessa entre os nós. É nestes princípios que assenta todo o protocolo IP que torna possível a Internet ser uma realidade. Grafos têm sido utilizados para representar o formalismo das redes complexas, onde o número de nós e de conexões entre esses nós é muito alto e complexamente estabelecido.

Introdução Uma possível definição para grafos: "O grafo propriamente dito é uma representação gráfica das relações existentes entre elementos de dados. Ele pode ser descrito num espaço euclidiano de n dimensões como sendo um conjunto V de vértices e um conjunto A de curvas contínuas (arestas)". Podemos avaliar um grafo através de seu tipo, propriedades e aplicações[1].

Busca em grafo Vários problemas representados por um grafo podem ser resolvidos efetuando uma busca nesse grafo. A busca em grafo consiste em explorar um grafo, de forma que obtenha um processo sistemático de como caminhar por seus vértices e arestas. Às vezes é preciso visitar todos os vértices de um grafos, às vezes o problema pode ser resolvido visitando somente um subconjunto dos vértices. Se o grafo for uma árvore, esta questão se torna simples, podem utilizar as visitas em pré-ordem, ou ordem de nível.

Grafo

9

Algoritmos de percurso Existem dois métodos de percurso em grafos: percurso em profundidade (depth-first search — DFS) e o percurso em largura (breadth first search — BFS). A ideia básica do DFS é buscar "mais a fundo" no grafo quando possível. Assim, a partir de um vértice v, as arestas ainda não exploradas o são e, ao final, a busca retrocede. A ideia do BFS é bastante simples: os vértices do grafo são visitados nível a nível, ou seja, todos os vértices a uma distância k do vértice inicial são visitados antes de qualquer vértice a uma distância k +1 do inicial.

Referências • http://www.icmc.sc.usp.br/manuals/sce183/gfbus.html • Cormen. Thomas (2000); Leiserson, Charles.; Rivest, Ronald. Introduction to Algorithmics, McGraw-Hill. • Algoritmos em Grafos - Paulo Feofiloff [1]

Referências [1] http:/ / www. ime. usp. br/ ~pf/ algoritmos_em_grafos/ aulas/ grafos. html

Vértice Em teoria dos grafos, um vértice (plural vértices) ou nodo é a unidade fundamental da qual os grafos são formados: um grafo não dirigido consiste de um conjunto de vértices e um conjunto de arestas (pares de vértices não ordenados), enquanto um digrafo é constituído por um conjunto de vértices e um conjunto de arcos (pares ordenados de vértices). Do ponto de vista da teoria dos grafos, vértices são tratados como objetos inexpressivos e indivisíveis, embora possam ter uma estrutura adicional, dependendo da aplicação a partir da qual surge o grafo; por exemplo, uma rede semântica é um grafo no qual os vértices representam conceitos ou classes de objetos.

Um grafo com 6 vértices e 7 arestas onde o vértice da extrema-direita é um vértice-folha ou um vértice-pendente.

Os dois vértices formando uma aresta são ditos suas extremidades e a aresta é dita que é incidente para com os vértices.[] Um vértice w é dito ser adjacente a outro vértice v se o grafo contém uma aresta (v,w).[] A adjacência de um vértice v é um subgrafo induzido do grafo, formado por todos os vértices adjacentes a v. O grau de um vértice em um grafo é o número de arestas incidentes a ele.[] Um vértice isolado é um vértice com grau zero, isto é, um vértice que não é um ponto final de toda a aresta. Um vértice folha (também vértice pendente) é um vértice de grau um. Em um grafo direcionado, pode-se distinguir o grau de saída (número de arestas divergentes) do grau de entrada (número de arestas convergentes); uma fonte é um vértice com grau de entrada zero, enquanto um sumidouro (ou poço) é um vértice com grau de saída nulo[] . Um vértice de corte é um vértice cuja remoção (juntamente com as arestas a ele conectadas) provoca um redução na conexidade do grafo;[1] Um separador é uma coleção de vértices cuja remoção desconecta o grafo restante em pedaços pequenos.[2] Um grafo k-conexo é um gráfico em que a remoção de menos de k vértices sempre deixa o grafo ainda conectado. Um conjunto independente é um conjunto de vértices tal que não existem dois vértices adjacentes contido neste conjunto, e uma cobertura de vértices é um conjunto de vértices, que inclui o ponto de extremidade de cada aresta do grafo. O espaço de vértices de um grafo é um espaço vetorial com um conjunto de

Vértice

10

vetores de base correspondente aos vértices do gráfico. 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 grafos, é importante fazer a distinção entre vértices rotulados e vértices sem rótulo. Um vértice rotulado é 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 correspondência entre seus vértices emparelham vértices com rótulos iguais. Um vértice não marcado é aquele que 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, vértices de poliedros: o esqueleto de um poliedro forma um grafo, os vértices do qual são vértices do poliedro, mas os vértices do poliedro tem uma estrutura adicional (sua localização geométrica) que não se presume estar presente na teoria dos grafos. A Figura de vértice de um vértice de um poliedro é análoga à vizinhança de um vértice em um grafo. Em um dígrafo, estrela frontal de um nodo conjunto de vértices

é definida como a suas arestas de saída. Em um grafo

e um conjunto de arestas

, a estrela frontal de

com um

pode ser descrita como

[3] [1] Grafos - UFSC (http:/ / www. inf. ufsc. br/ grafos/ definicoes/ definicao. html) [2] Algoritmos em Grafos - IME (http:/ / www. ime. usp. br/ ~pf/ algoritmos_em_grafos/ aulas/ two-flow. html)

• Berge, Claude, Théorie des graphes et ses applications. Collection Universitaire de Mathématiques, II Dunod, Paris 1958, viii+277 pp. (English edition, Wiley 1961; Methuen & Co, New York 1962; Russian, Moscow 1961; Spanish, Mexico 1962; Roumanian, Bucharest 1969; Chinese, Shanghai 1963; Second printing of the 1962 first English edition. Dover, New York 2001) • Chartrand, Gary. Introductory graph theory. New York: Dover, 1985. ISBN 0-486-24775-9 • Biggs, Norman; Lloyd, E. H.; Wilson, Robin J.. Graph theory, 1736-1936. Oxford [Oxfordshire]: Clarendon Press, 1986. ISBN 0-19-853916-9 • Harary, Frank. Graph theory. Reading, Mass.: Addison-Wesley Publishing, 1969. ISBN 0-201-41033-8 • Harary, Frank; Palmer, Edgar M.. Graphical enumeration. [S.l.]: New York, Academic Press, 1973. ISBN 0-12-324245-2

Aresta

11

Aresta Em teoria dos grafos, uma aresta junto com os vértices ou nodos formam as unidades fundamentais das quais os grafos são formados[]: um grafo não dirigido consiste de um conjunto de vértices e um conjunto de arestas (pares de vértices não ordenados), enquanto um digrafo é constituído por um conjunto de vértices e um conjunto de arcos (pares ordenados de vértices). As arestas são consideradas as uniões entre os vértices. Uma aresta é dita incidente ao0s elementos de um par de vértices que não são necessariamente distintos[]. Normalmente as arestas denotam as relações entre os vértices (vizinhanca, grau, herança, etc..)

Tipos de arestas Uma aresta pode ser não-direcionada ou direcionada. No segundo caso, o par de vértices é ordenado e o vértices 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[].

Relação de adjacência As arestas de um grafo ou digrafo G=(V, E) induzem uma relação chamada de relação de adjacência[1]. Portanto um vértice v é adjacente a um vértice w se e somente se v-w é uma aresta que pertence ao conjunto E.

Tipos de arestas.

Aresta múltipla

12

Aresta múltipla Aresta múltipla ou aresta paralela são arestas que possuem os mesmos vértices como extremidade.

Ciclos em um grafo Um ciclo em teoria de grafos é "um passeio de comprimento mínimo três, em que o primeiro e o último vértice coincidem, mas nenhum outro vértice é repetido" [1]. Um ciclo é uma cadeia simples e fechada[][2]. Um ciclo é uma cadeia fechada[]. 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 definição acima[1].

Definição matemática Matematicamente: Seja G um grafo. Um ciclo em G é um caminho

{v1, v2, . . ., vk, vk+1} sendo

v1 = vk+1, 3 ≤ k[3]

Clique Na área da matemática da teoria dos grafos, uma clique em um grafo não-orientado é um subconjunto de seus vértices tais que cada dois vértices do subconjunto são conectados por uma aresta. Uma clique em um grafo G é um subgrafo de G que é completo. Eles [1] recebem a notação . O tamanho de uma clique é igual a cardinalidade de seu conjunto de vértices. Por exemplo no grafo G(V,E) sendo V seu conjunto de vértices e E o de arestas, temos que: Se V={1,2,3,4,5} e E={(1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(3,4),(4,5)}, o subgrafo induzido pelos vértices (1,2,3,4) é uma clique de tamanho 4.

Um grafo com 23 cliques de 1-vértice (its vertices), 42 cliques de 2-vértices (suas arestas), 19 cliques de 3-vértices (os triângulos em azul claro), e 2 cliques de 4-vértices (azul escuro). Seis das arestas e 11 dos triângulos formam cliques maximais. As duas 4-cliques em azul escuro são tanto máximas quanto maximais, e o número de clique do grafo é 4.

Clique

13

Referências

O grau de um grafo Na teoria dos grafos, o grau (ou valência) de um vértice de um grafo é o número de arestas incidentes para com o vértice, com os laços contados duas vezes. [1][] Ou de forma análoga, o número de vértices adjacentes a ele.[]O grau de um vértice é denotado O grau máximo de um grafo G, denotado por Δ(G), e o grau mínimo de um grafo, denotado por δ(G), são os graus máximos e mínimos de seus vértices. No grafo à direita, o grau máximo é 3 e o mínimo é 0. Em um grafo regular, todos os graus são os mesmos, e assim podemos falar de o grau do gráfico.

Um grafo com vértices rotulados por grau

Lema do aperto de mãos A fórmula da soma dos graus afirma que, dado um grafo

,

A fórmula implica que em qualquer grafo, o número de vértices de grau ímpar é par. Esta afirmação (bem como a fórmula de soma grau) é conhecida como o Lema do aperto de mãos (em inglês, handshaking lemma). O último nome vem de um problema matemático popular, para provar que, em qualquer grupo de pessoas o número de pessoas que apertam as mãos com um número ímpar de outras pessoas do grupo é par.

Seqüência de graus A seqüência de grau de um grafo não-direcionado é a seqüência não crescente dos seus graus de vértices; [2] para o gráfico acima, é (3, 3, 3, 2, 2, 1, 0). A seqüência de grau é um grafo invariável logo grafos isomorfos têm a mesma seqüência. No entanto, a seqüência de grau, em geral, não identifica unicamente um grafo; em alguns casos, os grafos não isomorfos têm o mesmo grau de seqüência. O problema da seqüência de graus, é o problema de encontrar alguns ou todos os grafos com a seqüência de grau sendo uma dada seqüência não crescente de números inteiros positivos. Zeros finais podem ser ignorados, uma vez que são trivialmente efetuados pela adição de um número adequado de vértices isolados do grafo. O problema de encontrar ou estimar o número de grafos com uma seqüência de determinado grau é um problema do campo da enumeração de grafos.

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

Como conseqüência da fórmula da soma de graus, toda a seqüência com uma soma ímpar, como (3, 3, 1), não pode ser entendida como a seqüência de grau de um grafo. O inverso também é verdadeiro: se uma seqüência tem uma soma par, é a seqüência de grau de um grafo. A construção de um grafo como este é simples: conecte vértices ímpares em pares, e preencha com laços (auto-loops).

O grau de um grafo

14

Freqüentemente, se deseja procurar por grafos simples, tornando o problema da seqüência de graus mais desafiador. Obviamente, a seqüência (8, 4) não é a seqüência de grau de um grafo simples, pois teríamos a contradição Δ(G) > ((número de vértices;− 1). A seqüência (3, 3, 3, 1) também não é a seqüência de grau de um grafo simples, 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 Erdős e Gallai (1960), V. J. Havel (1955) e S. L. Hakimi (1961) e S. A. Choudum. Por exemplo, o Teorema de Erdös-Gallai afirma que a seqüência (di)i=1,...,n é uma seqüência de grau de um grafo simples sse, a soma da seqüência é par e

Havel e Hakimi provaram que (d1, d2, ..., dn) é uma seqüência de grau de um grafo simples sse (d2 − 1, d3 − 1, ..., dd1+1 − 1, dd1+2, dd1+3, ..., dn) é. Este fato leva a um algoritmo simples (o algoritmo Havel-Hakimi) para a realização de um grafo simples, com uma seqüência de determinado grau de realização: Comece com um grafo sem bordas. Mantenha uma lista de vértices cujo grau de exigência não tenha ainda sido atingido em ordem não-crescente de exigência de grau residual. Conecte o primeiro vértice com os próximos d1 vértices na lista, e depois remova-o da lista. Re-ordene a lista e repita até que todas as exigências do grau estejam cumpridas.

Valores especiais • 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.

Propriedades globais • Se cada vértice do grafo tem o mesmo grau k o grafo é chamado de um grafo k-regular e o próprio grafo é dito ter grau k.

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

• Um grafo conexo, não-direcionado, tem um caminho euleriano se e somente se ele tem 0 ou 2 vértices de grau ímpar. Se tem 0 vértices de grau ímpar, o caminho Euleriano é um circuito Euleriano. • Um grafo direcionado é uma pseudofloresta se e somente se se cada vértice tem um grau de saída no máximo 1. Um grafo funcional é um caso especial de um pseudofloresta em que cada vértice tem exatamente um grau de saída 1. • Pelo Teorema de Brooks, qualquer grafo que não seja um clique ou um ciclo ímpar tem um número cromático, de no máximo Δ, e pelo Teorema de Vizing, um grafo tem um índice cromático de no máximo Δ + 1. [1] . [2] Diestel p.278

Grafo bipartido

15

Grafo bipartido No campo da matemática da teoria dos grafos, um grafo bipartido ou bigrafo é um grafo cujos vértices podem ser divididos em dois conjuntos disjuntos U e V tais que toda aresta conecta um vértice em U a um vértice em V;[1] ou seja, U e V são conjuntos independentes. Equivalentemente, um grafo bipartido é um grafo que não contém qualquer ciclo de comprimento ímpar Os dois conjuntos U e V podem ser pensados como uma 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, como é exigido no problema de coloração de grafos. Em contrapartida, tal coloração é impossível no caso de um grafo que não é bipartido, como um triângulo: depois de um nó ser colorido de cor azul e outro de verde, o terceiro vértice do triângulo é ligado a vértices de ambas as cores, impedindo que seja atribuída qualquer cor.

Exemplo de um grafo bipartido

Frequentemente se escreve G = (U, V, E) para denotar um grafo bipartido cuja partição tem as partes U e V. Se |U| =|V|, ou seja, se os dois subconjuntos tem igual cardinalidade, então G é chamado um grafo bipartido balanceado.

Exemplos • Qualquer grafo sem ciclos ímpares é bipartido. Como consequência disso: • Toda árvore é bipartida. • grafos ciclo com um número par de vértices são bipartidos. • Qualquer grafo planar onde todas as faces em sua representação planar consistem de um número par de arestas é bipartido. Casos especiais destes são grafos grelha e grafos quadrado, em que cada face interna é composta por 4 arestas.

Testando biparticidade Se um grafo bipartido é conexo, a sua bipartição pode ser definida pela paridade das distâncias de qualquer vértice escolhido arbitrariamente v: um subconjunto consiste dos vértices a uma distância par de v e o outro subconjunto consiste dos vértices a uma distância ímpar de v. Assim, pode-se testar eficientemente se um grafo é bipartido, usando esta técnica de paridade de se atribuir vértices para os dois subconjuntos U e V, separadamente a cada componente conectado do grafo e, em seguida, examinar cada aresta para verificar se ela tem terminações designadas para os diferentes subgrupos.

Encontrando uma bipartição usando paridade

Grafo bipartido

Aplicações Grafos bipartidos são úteis para a modelagem de problemas de acoplamento. Um exemplo de grafo bipartido é um problema de correspondência de empregos. Suponha que temos um conjunto P de pessoas e um conjunto J de postos de trabalho, com nem todas as pessoas adequadas para todos os trabalhos. Podemos modelar isto como um grafo bipartido (P, J, E). Se uma pessoa px é adequada para um determinado trabalho jy existe uma aresta entre px e jy no grafo. O teorema do casamento fornece uma caracterização de grafos bipartidos que permitem acoplamentos perfeitos. Grafos bipartidos são usados extensivamente na moderna teoria dos códigos, especialmente para decodificar palavras de código recebidas do canal. Grafos Fator e grafos Tanner são exemplos disso. Em ciência da computação, uma rede de Petri é uma ferramenta de modelagem matemática utilizada na análise e simulação de sistemas concorrentes. Um sistema é modelado como um grafo bipartido dirigido com dois conjuntos de nós: Um conjunto de nodos "lugar" que contêm recursos, e um conjunto de nodos "evento" que geram e/ou consomem recursos. Existem restrições adicionais sobre os nós e arestas que condicionam o comportamento do sistema. Redes de Petri utilizam as propriedades de grafos bipartidos dirigidos e outras propriedades para permitir provas matemáticas do comportamento dos sistemas enquanto ao mesmo tempo, permitindo a fácil implementaçã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 pontos e linhas em uma configuração.

Modelagem de multigrafos e hipergrafos Grafos bipartidos podem modelar inteiramente o mais geral multigrafo. Dada um multigrafo M, tome U como o conjunto de vértices de M e tome V como o conjunto de arestas de M. Então junte-se um elemento de V para precisamente os dois elementos de U que são as extremidades da aresta em M. Assim, cada multigrafo é descrito completamente por um grafo bipartido, que é unilateral regular de grau 2, e vice-versa. Da mesma forma, cada hipergrafo direcionado pode ser representado por um grafo bipartido. Tome U como o conjunto de vértices no hipergrafo, e V como conjunto de arestas. para cada e , conecte u a v se a aresta do hipergrafo contém u como entrada, e conecte v a u se v contém u como saída.

Propriedades • Um grafo é bipartido se e somente se ele não contém um ciclo ímpar. Portanto, um grafo bipartido não pode conter uma clique de tamanho maior ou igual a 3. • Um grafo é bipartido se e somente se ele é 2-colorível, (i.e. seu número cromático é menor ou igual a 2). • 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. • 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 cobertura de arestas mínima mais o tamanho da cobertura de vértices mínima é igual ao número de vértices. • Todo grafo bipartido é um grafo perfeito. • O espectro de um grafo é simétrico se e somente se ele é um grafo bipartido.

16

Grafo bipartido

17

Ligações externas • Sistema de informações sobre inclusões de classes de grafos [2] grafo bipartido [3]

Referências [2] http:/ / wwwteo. informatik. uni-rostock. de/ isgci/ index. html [3] http:/ / wwwteo. informatik. uni-rostock. de/ isgci/ classes/ gc_69. html

Grafo bipartido completo Grafo bipartido completo

Um grafo bipartido completo com m = 5 n = 3

vértices

n+m

arestas

mn

Cintura

4

Automorfismos 2m!n! se m=n, caso contrário m!n! Número cromático

2

Índice cromático

max{m, n}

Notação No campo da matemática da teoria dos grafos, um grafo bipartido completo ou biclique é um tipo especial de grafo bipartido onde cada vértice do primeiro conjunto está associado a cada vértice do segundo conjunto.

Definição Um grafo bipartido completo, G := (V1 + V2, E), é um grafo bipartido tal que para quaisquer dois vértices, v1 ∈ V1 e v2 ∈ V2, v1v2 é uma aresta em G. O grafo bipartido completo com partições de tamanho |V1|=m e |V2|=n, é denotado Km,n.

Exemplos

Grafo bipartido completo

18

• Para qualquer k, K1,k é chamado uma estrela. Todos os grafos bipartidos completos que são árvores são estrelas. • O grafo K1,3 é chamado uma garra, e é usado para definir os grafos sem garra.

Os grafos estrela S3, S4, S5 e S6.

• O grafo K3,3 é chamado de grafo de utilidade. Esta prática vem de um quebra-cabeça matemático tradicional, no qual três utilidades devem ser ligadas a cada três edifícios; é impossível de resolver sem cruzamentos, devido à não-planaridade de K3,3.

Propriedades

O grafo de utilidade K3,3

• Dado um grafo bipartido completo, ele possui dois autovalores simétricos (o índice e o seu simétrico) e os demais nulos.[1] • Dado um grafo bipartido, encontrar o seu subgrafo bipartido completo Km,n com o número máximo de arestas mn é um problema NP-completo. • Um grafo planar não pode conter K3,3 como um menor; um grafo periplanar não pode conter K3,2 como um menor (Estas não são condições suficientes de planaridade e planaridade exterior, mas necessárias). • Um grafo bipartido completo Kn,n é um grafo de Moore e uma (n,4)-gaiola. • Um grafo bipartido completo Kn,n ou Kn,n+1 é um grafo de Turán. • Um grafo bipartido completo Km,n tem um número de cobertura de vértice do min{m,n} e um número de cobertura de aresta de max{m,n}. • Um grafo bipartido completo Km,n tem um conjunto independente máximo de tamanho max{m,n}. • A matriz de adjacência de um grafo bipartido completo Km,n tem autovalores √(nm), −√(nm) e 0; com multiplicidade 1, 1 e n+m−2 respectivamente. • A matriz laplaciana de um grafo bipartido completo Km,n tem autovalores n+m, n, m, e 0; com multiplicidade 1, m−1, n−1 e 1 respectivamente. • Um grafo bipartido completo Km,n tem mn−1 nm−1 árvores de extensão. • Um grafo bipartido completo Km,n tem um acoplamento máximo de tamanho min{m,n}. • Um grafo bipartido completo Kn,n tem uma n-coloração-de-arestas correspondente ao quadrado latino. • Os dois últimos resultados são corolários do teorema do casamento aplicado a um grafo bipartido k-regular.

Referências

Grafo caminho

19

Grafo caminho Grafo caminho Um grafo caminho em 6 vértices

vértices

n

arestas

n-1

Raio

⌊n/2⌋

Diâmetro

n-1

Automorfismos

2

Número cromático

2

Índice cromático

2

Propriedades

Distância-unidade Grafo bipartido Árvore

Notação No campo da matemática da teoria dos grafos, um grafo caminho ou grafo linear é um exemplo particularmente simples de uma árvore, ou seja, uma árvore com dois ou mais vértices que não tem ramificações, ou seja, contém somente vértices de grau 2 e 1.[1] Em particular, ela tem dois vértices terminais (vértices que têm grau 1), enquanto todos os outros (se houver) têm grau 2.

Ligações externas • Eric W. Weisstein, Path Graph [2] em MathWorld.

Referências [2] http:/ / mathworld. wolfram. com/ PathGraph. html

Grafo completo

20

Grafo completo Um grafo completo é um grafo simples em que todo vértice é adjacente a todos os outros vértices. O grafo completo de n vértices é frequentemente denotado por .

Número de arestas O grafo

tem

arestas (correspondendo a todas as possíveis escolhas de pares de vértices).

Planaridade O teorema de Kuratowski tem como consequência que um grafo

é grafo planar se e somente se

.

Grafo cúbico No campo da matemática da teoria dos grafos, um grafo cúbico é um grafo regular no qual todos os vértices tem grau três[1]. Em outras palavras um grafo cúbico é um grafo 3-regular. Grafos cúbicos são também chamados grafos trivalentes. Um grafo bicúbico é um grafo bipartido cúbico.

Simetria Em 1932, Ronald M. Foster começou a recolher exemplos de grafos simétricos cúbicos, formando o início do censo de Foster[2]. Muitos grafos individuais conhecidos são cúbicos e simétricos, incluindo o grafo de Petersen, o grafo de Nauru, o grafo de Coxeter, o grafo de Tutte–Coxeter, o grafo de Dyck, o grafo de Foster e o grafo de 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 orientados 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 Ljubljana, e o gaiola-12 de Tutte. O grafo de Frucht é o menor grafo cúbico sem qualquer simetria: possui apenas um único automorfismo de grafos, o automorfismo identidade.

O grafo bipartido completo de grafo bicúbico

é um exemplo

Grafo cúbico

21

Coloração e conjuntos independentes De acordo com o teorema de Brooks todo grafo cúbico com exceção do grafo completo K4 pode ser colorido com no máximo três cores. Portanto, todo grafo cúbico diferente de K 4 tem um conjunto independente de pelo menos n/3 vértices, onde n é o número de vértices no grafo: por exemplo, a maior classe de cor em uma 3-coloração tem pelo menos estes vértices. De acordo com o teorema de Vizing todo grafo cúbico necessita 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 três acoplamentos perfeitos. Pelo teorema de coloração de linhas de König todo grafo bicúbico tem uma coloração de Tait.

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

Os grafos cúbicos sem ponte que não tem uma coloração de Tait são conhecidos como snarks. Eles incluem o grafo de Petersen, grafo de Tietze, os snarks Blanuša, o snark flor, o snark dupla-estrela, o snark Szekeres e o snark Watkins. Existe um número infinito de snarks distintos. [4]

Hamiltonicidade Houve muita pesquisa sobre Hamiltonicidade de grafos cúbicos. Em 1880, P.G. Tait conjecturou que todo grafos poliédricos cúbicos tem um circuito Hamiltoniano. William Thomas Tutte forneceu um contra-exemplo para a conjectura de Tait, o grafo de Tutte de 46 vértices, em 1946. Em 1971, Tutte conjecturou que todos os grafos bicúbicos são hamiltonianos. No entanto, José Horton proporcionou um contra-exemplo com 96 vértices, o grafo de Horton[5]. Mais tarde Mark Ellingham, construíu mais dois contra-exemplos: os grafos de Ellingham-Horton[6][7]. A conjectura de Barnette, uma combinação de conjecturas de Tait e Tutte ainda aberta, afirma que todo grafo bicúbico poliédrico é hamiltoniano. Quando um grafo cúbico é hamiltoniano, a notação LCF permite que ele seja representada de forma concisa. Se um grafo cúbico é escolhido aleatoriamente entre todos os grafos cúbicos de n-vértices, então é bem provável 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]. David Eppstein conjecturou que todo grafo cúbico de n-vértices tem no máximo 2n/3 (aproximadamente 1260n) ciclos hamiltonianos distintos, e exemplificou com grafos cúbicos com esta quantidade de ciclos[9]. O melhor limite superior que foi até agora comprovado no número de ciclos hamiltonianos distintos é 1,276n.[10]

Grafo cúbico

Outras propriedades O comprimento do caminho de quaisquer grafo cúbico de n-vértices é no máximo n/6. No entanto, o limite inferior melhor conhecido no comprimento do caminho de grafos cúbicos é menor, 0.082n.[11] Se segue do lema do aperto de mãos, provado por Leonhard Euler em 1736 como parte do primeiro trabalho sobre teoria dos grafos, que todo grafo cúbico tem um número par de vértices.

Algoritmos e complexidade Vários pesquisadores têm estudado a complexidade de tempo exponencial de algoritmos restritos a grafos cúbicos. Por exemplo, através da aplicação de programação dinâmica para a decomposição do caminho do grafo, Fomin e Høie mostraram como encontrar os seus conjuntos independentes máximos em tempo O(nn/6 + o(n)).[11]

História • 1880: Peter Guthrie Tait conjeturou que cada grafo sem pontes cúbico planar tem um circuito hamiltoniano. William Thomas Tutte encontrou um contra-exemplo: un grafo de 46 vértices (agora com o seu nome) em 1946. • 1934: Ronald M. Foster começou a colecionar exemplos de grafos simétricos cúbicos, com o que iria iniciar o Censo de Foster.[12] • 1971: William Tutte conjetura que todos os grafos bicúbicos são ciclos hamiltonianos. Entretanto, Horton proporciona un grafo de contra-exemplo, com 96-vértices. • 2003: Petr Hliněný mostra que o problema de encontrar o número de cruzamento (o número mínimo de arestas que cruzam um dado grafo) de um grafo cúbico é NP-hard, apesar de terem um grau pequeno. Existem, não obstante, algoritmos de aproximacão práticos para encontrar o número de cruzamento de grafos cúbicos[13]. [2] Foster, R. M. "Geometrical Circuits of Electrical Networks." Transactions of the American Institute of Electrical Engineers 51, 309-317, 1932 [3] . [4] . [5] Bondy, J. A. and Murty, U. S. R. Graph Theory with Applications. New York: North Holland, p. 240, 1976. [6] Ellingham, M. N. "Non-Hamiltonian 3-Connected Cubic Partite Graphs."Research Report No. 28, Dept. of Math., 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. [8] . [10] . [11] .

22

Grafo Estrela

23

Grafo Estrela Estrela

A estrela S7.

vértices

k+1

arestas

k

Diâmetro

2

Cintura



Número cromático

2

Índice cromático

k

Propriedades

aresta-transitivo Árvore Distância-unidade Bipartido

Notação

Sk

Em teoria dos grafos, uma estrela Sk é o grafo bipartido completo K1,k, uma árvore com um nó interno e k folhas. Uma estrela com 3 arestas é chamada uma garra[1]. A estrela Sk é aresta-elegante quando k é par e não quando k é ímpar. Ela é aresta-transitiva, unidade-distância e têm diâmtero 2, cintura ∞, índice cromático k e número cromático 2. Estrelas também podem ser descritas como os únicos grafos conectados em que no máximo um vértice tem grau maior que um.

Relação com outras famílias de grafos Garras são notáveis na definição de grafos sem garra, os grafos que não tem qualquer garra como subgrafo induzido[2][3]. Uma estrela é um tipo especial de árvore. Como acontece com qualquer árvore, as estrelas podem ser codificados por uma sequência Prüfer; A sequência Prüfer para uma estrela K1,k consiste de k − 1 cópias do vértice central[4]. Uma árvore pode ser vista como um conjunto de estrelas (pares ou ímpares) ligadas pelos pontos centrais[5]. Diversos grafos invariantes são definidos em termos de estrelas. Arboricidade de estrela é o menor número de florestas que um grafo pode ser particionado em tal modo que cada árvore em cada floresta é uma estrela[6], e o número cromático de estrela de um grafo é o menor número de cores necessário para colorir seus vértices de tal forma que cada duas classes de coloração, juntas, formam um subgrafo em que todos os componentes conectados são estrelas[7]. Os grafos de comprimento de ramo 1 são exatamente os grafos em que cada componente conectado é uma estrela[8].

Grafo Estrela

24

Os grafos estrela S3, S4, S5 e S6.

Outras aplicações O conjunto de distâncias entre os vértices de uma garra fornece um exemplo de um espaço métrico finito, que não pode ser incorporado isometricamente em um espaço euclideano de qualquer dimensão[9]. A rede em estrela, uma rede de computadores modelado em um grafo de estrela, é importante em computação distribuída. [2] . [3] .

Grafo nulo Grafo nulo vértices

0

arestas

0

Automorfismos1 No campo da matemática da teoria dos grafos, o grafo nulo ou o grafo vazio ou é o grafo sem nenhum vértice e (portanto) sem arestas, ou qualquer grafo sem arestas. O grafo nulo (no sentido original) é o objeto inicial na categoria de grafos, de acordo com algumas definições de categoria de grafos. Não tendo nenhum vértice, o grafo nulo, portanto, também não tem componentes ligados. Assim, embora o grafo nulo seja uma floresta (um grafo sem ciclos), não é uma árvore, uma vez que as árvores têm componente ligados.

Grafo sem arestas

Grafo nulo

25

Grafo sem arestas vértices

n

arestas

0

Automorfismos n! Número cromático

1

Propriedades

Integral Simétrico

Notação Alguns autores entendem que um termo melhor para o último sentido (V, { }) para qualquer conjunto V é o mais explícito grafo sem arestas. Assim se reserva o termo grafo nulo para o primeiro sentido: um grafo sem quaisquer vértices. Outros, ainda, fazem essa distinção, aplicando o rótulo vazio para esses grafos sem arestas. O grafo sem arestas de n-vértices é o grafo complementar para o grafo completo denotado como

, e por isso é comumente

.

Mesmo que esta definição forneca uma base sólida para a definição de certas operações sobre grafos (por exemplo: decomposição) considerando-se grafos como conjuntos de vértices e arestas (V,E), esta definição levanta um problema na singularidade do elemento nulo dos grafos.

Grafo orientado Um grafo orientado,[1] grafo dirigido,[2] grafo direcionado[3] ou digrafo é um par (algumas vezes )(edge) de:[][][4] • Um conjunto V, cujos elementos são chamados vértices ou nodos, • um conjunto A de pares ordenados de vértices, chamados arcos, arestas direcionadas, ou setas (e às vezes simplesmente arestas com o conjunto correspondente chamado E ao invés de A). Ele difere de um grafo não-direcionado comum, em que o último é definido em termos de pares não ordenados de vértices, que são normalmente chamados arestas.

Um grafo orientado (direcionado).

Por exemplo, ser possível ir de um nó A para um nó B, mas não o contrário através desse arco. Às vezes, um digrafo é chamado de um digrafo simples para distinguí-lo de um multigrafo direcionado (ou multidigrafo ou ainda quiver), em que os arcos constituem um multiconjunto, ao invés de um conjunto, de pares ordenados de vértices. Além disso, em um digrafo simples laços não são permitidos. Por outro lado, alguns textos permitem laços, arcos múltiplos, ou ambos em um digrafo.

Grafo orientado

26

Terminologia básica Um arco

é considerado ser direcionado de

cauda do arco;

é dito ser um sucessor direto de

para , e

caminho composto por um ou mais arcos sucessivos leva de

;

é chamado de cabeça e

é chamado de

é dito ser um predecessor direto de para

, então

. Se um

é dito ser um successor de

,e

é dito ser um predecessor de . O arco é chamado de arco invertido. Um grafo direcionado G é chamado de simétrico se, para cada arco, que pertence à G, o arco invertido correspondente 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, assim 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 e são vértices, um grafo direcionado simples permite tanto

como arestas, enquanto apenas uma é permitida em um grafo orientado.[]

quanto

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 arcos múltiplos) é uma matriz inteira com linhas e colunas correspondendo aos nodos do digrafo, onde uma entrada não-diagonal é o número de arcos do nó i para o nó j, e a entrada diagonal de linhas e colunas.

é o número de laços no nó i. A matriz de adjacência de um digrafo é única até as permutações

Outra representação de matriz para um dígrafo é sua matriz de incidência. Veja glossário para mais definições.

Graus de saída e graus de entrada Para um nodo, o número de pontos de extremidade adjacente à cabeça de um nó é chamado de grau de entrada do nodo e o número de pontos de extremidade da cauda é o seu grau de saída. O grau de entrada é denotado . Um vértice com

e o grau de saída como é chamado de fonte,

uma vez que é a origem de cada uma das suas arestas incidentes. Da mesma forma, um vértice com é chamado de sumidouro (ou poço). A fórmula da soma dos graus afirma que, para um grafo direcionado

Se para cada nodo, v ∈ V,

Um digrafo com vértices rotulados (saída ou entrada)

, o grafo é chamado de digrafo balanceado.

Grafo orientado

27

Conectividade de digrafos Um digrafo G é chamado de fracamente conectado (ou apenas conectado[]p. 19) se o grafo subjacente não-direcionado obtido através da substituição de todas as arestas de G por arestas não direcionadas é um grafo conexo. Um digrafo é fortemente conectado ou forte se ele contém um caminho orientado de u a v e um caminho orientado de v a u para cada par de vértices u,v. Os componentes fortes são os subgrafos máximo fortemente conectados.

Classes de digrafos Um digrafo acíclico é um grafo direcionado sem ciclos direcionados. Uma árvore enraizada naturalmente se define como um digrafo acíclico, se todas as arestas da árvore subjacentes são dirigidas para longe da raiz.

Um grafo direcionado acíclico simples

Um torneio é um grafo orientado obtido ao se escolher uma direção para cada aresta em um grafo completo não-direcionado. Na teoria dos grupos de Lie, um quiver Q é um grafo direcionado servindo como o domínio do e, portanto, caracterizando a forma de, uma representação V definida como um functor, mais especificamente um objeto da categoria functor FinVctKF(Q) onde F(Q) é a categoria 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 vértices com espaços vetoriais e suas arestas (e, portanto, caminhos) de modo compatível com transformações lineares entre eles, e transformam através das transformações naturais.

Referências [1] . [2] . [4] .

um torneio com 4 vertices

Grafo simples

28

Grafo simples Em teoria dos grafos, um grafo diz-se simples se entre cada par de vértices distintos existir no máximo uma aresta e se, além disso, não contiver lacetes nem arestas paralelas, ou seja existir uma aresta que conecta um vertice a ele mesmo. Em grande parte dos textos o adjectivo simples (ou regular) é omitido estando, no entanto, subentendido. Um grafo que não é simples, diz-se um multigrafo.

Grafo valorado Um grafo valorado ou grafo ponderado[1] é um grafo que possui funções relacionando o conjunto de vértices ou o conjunto de arestas a conjunto de números.[2][] O significado das funções depende do problema. Na maioria das aplicações de grafos existem dados quantitativos associados a pontos(vértices) ou ligações(arestas) relacionados ao problema[] . Na maioria das aplicações de grafos a problemas de engenharia, é necessário considerar-se grandezas tais como distâncias, altitudes, capacidades, fluxos, etc., associadas a localidades, estradas, etc. que definem os vértices e os arcos (ou arestas) do grafo. Em muitos problemas, no entanto, interessa apenas o inter-relacionamento dos vértices - e não se definem funções, ou se pode considerar que elas são constantes. Diz-se então que o grafo é um grafo não-valorado.

Representação Em um grafo valorado se pode usar as representações usuais para grafos. A matriz de adjacência é comumente conhecida como matriz de valores das ligações ou simplesmente matriz de valores.[] Na lista de adjacência cada linha vem acompanhada de seus valores respectivos[] . A figura a seguir ilustra um exemplo: Grafo valorado

Matriz de valores

Homomorfismo de grafos

29

Homomorfismo de grafos No campo da matemática da teoria dos grafos um homomorfismo de grafos é um mapeamento entre dois grafos que respeita suas estruturas. De forma mais concreta ele mapeia vértices adjacentes a vértices adjacentes.

Definição Um homomorfismo de grafos

de um grafo

, é um mapeamento

para um grafo

, denotado por

do conjunto de vértices de

para o conjunto de vértices de

tal que sempre que . A definição acima é estendida para dígrafos (grafos com arestas dirigidas). Então, para um homomorfismo , é um arco (aresta dirigida) de se é um arco de . Se há um homomorfismo ,

nós escreveremos

é dito ser homomórfico a

ou

, e

caso contrário. Se

-colorável.

A composição de homomorfismos é também um homomorfismo. Se o homomorfismo bijeção cuja função inversa é também um homomorfismo de grafos, então

é uma

é um isomorfismo de grafo.

Determinar se há ou não um isomorfismo entre dois grafos é um importante problema em complexidade computacional; veja o problema do isomorfismo de subgrafos. Dois grafos e são homomorficamente equivalentes se e . O resultado da retração de um grafo , chamado retração com

é um subgrafo

de

tal que existe um homomorfismo

para todo vértice

de

. Um núcleo é um grafo que não se retrai a um

subgrafo próprio. Qualquer grafo é homomorficamente equivalente a um único núcleo.

Generalização Tome a seguinte definição de grafo: Um grafo

em que

é uma estrutura

é o conjunto de nós do grafo,

,

(uma função parcial) e tais

que: se

; ou

, caso contrário.

O conceito de homomorfismo de grafos pode ser generalizado (usando essa estrutura para grafos) de funções (entre nós dos grafos) para relações: Sejam

grafos. Uma bissimulação entre

e

é uma relação

tal que:

• • • Se há tal relação, então (caso em que chamaremos

e

são chamados bissimilares (notação

é de fato uma função

uma bissimulação funcional) temos um homomorfismo de grafo, tal que

, sendo uma ordenação de homomorfismos se

). Se

inclui

definida como:

, para algum homomorfismo

Os conceitos de bissimulação e ordenação de homomorfismos são bastante importantes na demonstração de resultados sobre a confluência de sistemas de reescrita de grafos.

Homomorfismo de grafos

30

Observações • Em termos de coloração de grafos, k-colorações de que

é o grafo completo com

são exatamente homomorfismos

nós. Como conseqüência se

número de cores necessário para colorir um grafo) de

é no máximo o de

, em

, o número cromático (menor :

(onde

representa o número cromático do grafo ). • O homomorfismo de grafos preserva a conectividade. • O produto tensorial de grafos é o produto categorial para a categoria dos grafos e dos homomorfismos de grafos. • O problema de decisão associado, isto é, decidir se existe ou não um homomorfismo de um grafo para outro, é NP-completo.

Referências • Hell, Pavol; Jaroslav Nešetřil. Graphs and Homomorphisms (Oxford Lecture Series in Mathematics and Its Applications). [S.l.]: Oxford University Press, 2004. ISBN 0-19-852817-5 • Term Rewriting Systems, Terese, Cambridge Tracts in Theoretical Computer Science, 2003.

Veja também • Reescrita de Grafos • Teoria das categorias

Isomorfismo de grafos Em teoria dos grafos, um isomorfismo dos grafos G e H é uma bijeção entre os conjuntos de vértices de G e H

de tal forma que quaisquer dois vértices u e v de G são adjacentes em G se e somente se ƒ(u) e ƒ(v) são adjacentes em H. Este tipo de bijeção é comumente chamado de "bijeção com preservação de arestas", de acordo com a noção geral de isomorfismo sendo uma bijeção de preservação-de-estrutura. Na definição acima, os grafos são entendidos como grafos grafos não dirigidos, não-rotulados e não ponderados. No entanto, a noção de isomorfismo pode ser aplicada a todas as outras variantes da noção de grafo, somando os requisitos necessários para preservar os elementos adicionais correspondentes da estrutura: as direções do arco, os pesos das arestas, etc, com a seguinte exceção. Quando se fala em rótulo com rótulos exclusivos, geralmente tirados do intervalo inteiro 1 ,...,n, onde n é o número dos vértices do grafo, dois grafos rotulados são ditos isomórficos se os grafos subjacentes correspondentes não rotulados são isomórficos. Se um isomorfismo existe entre dois grafos, então os grafos são chamados de isomorfos e nós denotamos por . 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.

Isomorfismo de grafos

31

Exemplo Os dois grafos abaixo são isomorfos, apesar de suas representações diferentes. Grafo G

Grafo H

Um isomorfismo entre G e H ƒ(a) = 1 ƒ(b) = 6 ƒ(c) = 8 ƒ(d) = 3 ƒ(g) = 5 ƒ(h) = 2 ƒ(i) = 4 ƒ(j) = 7

Motivação A noção formal de "isomorfismo", por exemplo, de "isomorfismo gráfico", captura a noção informal de que alguns objetos têm "a mesma estrutura", se alguém ignora distinções individuais dos componentes de objetos "atômicos" em questão, consulte o exemplo acima. Sempre que a individualidade dos componentes "atômicos" (vértices e arestas, para grafos) é importante para a correta representação do que é modelado por grafos, o modelo é refinado pela imposição de restrições adicionais sobre a estrutura, e outros objetos matemáticos são utilizados: digrafos, grafos rotulados, grafos coloridos, árvores enraizadas e assim por diante. A relação de isomorfismo pode também ser definida para todas essas generalizações de grafos: o isomorfismo bijeção deve preservar os elementos da estrutura que define o tipo de objeto em questão: arcos, rótulos, cores de vértices/arestas, a raiz da árvore de raízes, etc. A noção de "isomorfismo de grafos" permite-nos distinguir as propriedades de grafos inerentes às estruturas dos próprios grafos das propriedades associadas com as representações do grafo: desenho dos grafos, estruturas de dados para grafos, rótulos de grafos, etc. Por exemplo, se um grafo tem exatamente um ciclo, em seguida, todos os grafos da sua classe de isomorfismo também têm exatamente um ciclo. Por outro lado, no caso comum quando os vértices de um grafo são (representados por) inteiros 1, 2, ... N, então a expressão

pode ser diferente para dois grafos isomorfos.

Reconhecimento de isomorfismo de grafos Teorema de Whitney O teorema de isomorfismo de grafos de Whitney,[1] demonstrado por H. Whitney, afirma que dois grafos conexos são isomorfos se e somente se o seu grafos de linha são isomórficos, com uma única exceção: K3, o grafo completo em três vértices, e o grafo bipartido completo K1,3, que não são isomórficos, mas ambos têm K3 como seu grafo de linha. O teorema de grafos de Whitney pode ser estendido para hipergrafos.[2]

A exceção do teorema de Whitney: estes dois grafos não são isomórficos, mas tem grafos de linha isomórfica.

Isomorfismo de grafos

32

abordagem algorítmica Enquanto isomorfismos de grafos podem ser estudados de forma clássica da Matemática, como exemplificado pelo teorema de Whitney, é reconhecido que é um problema a ser enfrentado com uma abordagem algorítmica. O problema computacional de determinar se dois grafos finitos são isomorfos é chamado o problema do isomorfismo de grafos. Suas aplicações práticas incluem principalmente quimioinformática, matemática química (identificação de compostos químicos), e automação de projeto eletrônico (verificação da equivalência das diferentes representações do desenho de um Circuito eletrônico Curiosamente, é também um dos poucos problemas em teoria computacional da complexidade pertencente à 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, problemas listados em Garey e Johnson (1979) cuja complexidade está por se resolver.[3] Ou seja, eles não foram provados ser incluídos, nem excluídos, das classes P ou NP-completo. Sua generalização, o problema do isomorfismo de subgrafos, é sabido ser NP-Completo. As principais áreas de pesquisa para o problema é o projeto de algoritmos rápidos, tanto para o problema geral quanto para classes especiais de grafos, e investigações teóricas de sua complexidade computacional.

Referências [1] H. Whitney, "Congruent graphs and the connectivity of graphs", Am. J. Math., 54(1932) pp. 160-168. [2] Dirk L. Vertigan, Geoffrey P. Whittle: A 2-Isomorphism Theorem for Hypergraphs. J. Comb. Theory, Ser. B 71(2): 215-230. 1997. [3] The latest one resolved was minimum-weight triangulation, proved to be NP-complete in 2008. .

Laço Em teoria dos grafos, um laço ou auto-loop (em inglês: loop, self-loop ou buckle) é uma aresta que conecta um vértice a ele mesmo. Um grafo simples, não contém nenhum laço. Dependendo do contexto, um grafo ou um multigrafo pode ser definido de forma a permitir ou proibir a presença de laços (muitas vezes em combinação com a permissão ou proibição do uso de arestas múltiplas entre os mesmos vértices: • Onde os grafos são definidos de modo a permitir laços e arestas múltiplas, um grafo sem laços é muitas vezes chamado de multigrafo.[][][] • Onde os grafos são definidos de modo a não permitir laços e arestas múltiplas, um multigrafo ou pseudografo é muitas vezes definido como um grafo que pode ter laços e arestas múltiplas.[][]

Um grafo com um laço no vértice 1

Laço

33

Grau Para um grafo não direcionado, o grau de um vértice é igual ao número de vértices adjacentes. Um caso especial é um laço, que acrescenta dois para o grau. Isso pode ser entendido se deixando cada conexão da contagem de arestas do laço como seu próprio vértice adjacente. Em outras palavras, um vértice com um laço "vê" a si mesmo como um vértice adjacente de ambas as extremidades da aresta, assim, se soma dois e não um, para o grau. Para um grafo direcionado, um laço soma um ao grau de entrada e um ao grau de saída

Ligações externas • Grafos - Definições (UFSC) [1]

Referências [1] http:/ / www. inf. ufsc. br/ grafos/ definicoes/ definicao. html

Multigrafo Multigrafo ou pseudografo é um grafo não dirigido que pode possuir arestas múltiplas (ou paralelas), ou seja, arestas com mesmos nós finais. Assim, dois vértices podem estar conectados por mais de uma aresta. Formalmente, um multigrafo G é um par ordenado , sendo •

um conjunto de vértices ou nós,



um multiconjunto de pares não-ordenados de vértices, chamado arestas ou linhas.

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, reservando o termo multigrafo para os casos em que não há laços[2]. Multigrafo com laços (azul) e arestas múltiplas

Multigrafos podem ser usados, por exemplo, pra modelar as (vermelho) possíveis conexões de vôo oferecidas por uma linha aérea. Nesse caso o pseudografo seria um grafo dirigido com pares de arestas paralelas dirigidas conectando cidades para mostrar que é possível voar para e a partir destas locações.

Um multidígrafo é um dígrafo (grafo com arestas dirigidas) em que pode-se ter arestas múltiplas. Um multidígrafo é um par ordenado , sendo • •

um conjunto de vértices ou nós, um multiconjunto de pares ordenados de vértices, chamado arestas dirigidas, arcos ou flechas.

Um multigrafo misto podem ser dirigidas ou não).

pode ser definido do mesmo jeito que um grafo misto (com arestas que

Multigrafo

34

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 multigrafo com nós etiquetados e arcos. Formalmente é uma 8-tupla , em que: • •

é um conjunto de nós e e

é um multiconjunto de arcos.

são alfabetos finitos de nós e etiquetas de arcos disponíveis.



e



são duas funções indicando o nó de origem e o de destino de um arco. e

são duas funções descrevendo a etiquetagem dos nós e arestas.

Notas [1] Para exemplos, veja. Bollobas, p. 7 and Diestel, p. 25. [2] Graphs, Colourings and the Four-Colour Theorem, by Robert A. Wilson, 2002, ISBN 0198510624, p. 6 (http:/ / books. google. com/ books?id=iq0sSnIxJioC& pg=PA6& dq=pseudograph& lr=& ei=R-jrSKWoCJGgswOv0eiXBw& sig=ACfU3U20xuoH7jZDq-XGqSnfsmC0oE8KjQ)

Referências • http://www.utm.edu/departments/math/graph/glossary.html#multigraph • Diestel, Reinhard; Graph Theory, Springer; 2nd edition (February 18, 2000). ISBN 0-387-98976-5.

Pseudografo Multigrafo ou pseudografo é um grafo não dirigido que pode possuir arestas múltiplas (ou paralelas), ou seja, arestas com mesmos nós finais. Assim, dois vértices podem estar conectados por mais de uma aresta. Formalmente, um multigrafo G é um par ordenado , sendo •

um conjunto de vértices ou nós,



um multiconjunto de pares não-ordenados de vértices, chamado arestas ou linhas.

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, reservando o termo multigrafo para os casos em que não há laços[2]. Multigrafo com laços (azul) e arestas múltiplas

Multigrafos podem ser usados, por exemplo, pra modelar as (vermelho) possíveis conexões de vôo oferecidas por uma linha aérea. Nesse caso o pseudografo seria um grafo dirigido com pares de arestas paralelas dirigidas conectando cidades para mostrar que é possível voar para e a partir destas locações.

Um multidígrafo é um dígrafo (grafo com arestas dirigidas) em que pode-se ter arestas múltiplas. Um multidígrafo é um par ordenado , sendo •

um conjunto de vértices ou nós,

Pseudografo •

35

um multiconjunto de pares ordenados de vértices, chamado arestas dirigidas, arcos ou flechas.

Um multigrafo misto

pode ser definido do mesmo jeito que um grafo misto (com arestas que

podem ser dirigidas ou não).

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 multigrafo com nós etiquetados e arcos. Formalmente é uma 8-tupla , em que: • •

é um conjunto de nós e e

é um multiconjunto de arcos.

são alfabetos finitos de nós e etiquetas de arcos disponíveis.

• •

e

são duas funções indicando o nó de origem e o de destino de um arco. e

são duas funções descrevendo a etiquetagem dos nós e arestas.

Notas [1] Para exemplos, veja. Bollobas, p. 7 and Diestel, p. 25. [2] Graphs, Colourings and the Four-Colour Theorem, by Robert A. Wilson, 2002, ISBN 0198510624, p. 6 (http:/ / books. google. com/ books?id=iq0sSnIxJioC& pg=PA6& dq=pseudograph& lr=& ei=R-jrSKWoCJGgswOv0eiXBw& sig=ACfU3U20xuoH7jZDq-XGqSnfsmC0oE8KjQ)

Referências • http://www.utm.edu/departments/math/graph/glossary.html#multigraph • Diestel, Reinhard; Graph Theory, Springer; 2nd edition (February 18, 2000). ISBN 0-387-98976-5.

Quiver

36

Quiver Em matemática, um quiver (ou digrafo) é um grafo direcionado onde laços e múltiplas setas entre dois vértices são permitidos. Eles são comumente utilizados em teoria da representação: uma representação, V, de um quiver atribui um espaço vetorial V(x) para cada vértice x do quiver e um mapa linear V(a) para cada seta a.

Representação de um quiver, consistindo de dois espaços vetoriais (V1, V2) e um morfismo f

Se K é um corpo e Γ é um quiver, então o quiver algébrico ou trilha algébrica KΓ Um digrafo. é definido como se segue. 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 convenção de concatenar trilhas da direita para esquerda. Então, a trilha algébrica é um espaço vetorial que tem todas 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 é igual ao vértice inicial da segunda, seu produto é definido como zero. Isto define uma álgebra associativa sobre K. Essa álgebra é unitária se e somente se o quiver possui somente muitos vértices finitos. Neste caso, os módulos sobre KΓ são naturalmente identificados com as representações de Γ. Se o quiver possui muitos vértices e setas finitos, e o vértice final e o inicial de qualquer trilha são sempre distintos (isto é, Q não tem ciclos orientados), então KΓ é um anel hereditário de dimensão finita sobre K.

Representações de quivers Uma representação de um quiver, Q, é dita ser trivial se V(x)=0 para todos os vértices x em Q. Um

morfismo,

f:V->V', entre representações do quiver Q, tal que para cada seta em Q de x para y

é

uma

coleção

de

mapas lineares , isto é, todos os

quadrados que f forma com as setas de V e V' se comutem. Um morfismo, f, é um isomorfismo, se f(x) é invertível para todos os vértices x no quiver. Com estas definições, as representações dum quiver formam uma categoria. Se V e W são representações dum quiver Q, então a soma direta destas representações, para todos os vértices x em Q e

, é definida por é a soma direta dos

mapeamentos lineares V(a) e W(a). Uma representação é dita ser decomponível se ela é isomó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 considerado 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.

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: 1. Um quiver (conectado) é de um tipo finito se e somente se o seu grafo subjacente (quando as direções das setas são ignoradas) é um dos seguintes diagramas de Dynkin: , , , , . 2. As representações indecomponíveis estão numa correspondência um-para-um com as raízes positivas do sistema de raízes do diagrama de Dynkin.

Quiver

37

Ligações externas • Quiver Representations [1], Harm Derksen e Jerzy Weyman, AMS Notices • Notas sobre representações de quivers [2] • Finite-dimensional algebras and quivers [3], Alistair Savage, "Encyclopedia of Mathematical Physics", eds. J.-P. Françoise, G.L. Naber e Tsou S.T. Oxford: Elsevier, 2006, volume 2, pp. 313-320 • Digrafo [4] em USP

Referências [1] [2] [3] [4]

http:/ / www. ams. org/ notices/ 200502/ fea-weyman. pdf http:/ / www. amsta. leeds. ac. uk/ ~pmtwc/ quivlecs. pdf http:/ / www. arxiv. org/ pdf/ math/ 0505082 http:/ / www. icmc. sc. usp. br/ manuals/ sce183/ gfdig. html

Vértice de corte (teoria dos grafos) Em matemática e ciência da computação, um vértice de corte ou ponto de articulação[1] é um vértice de um grafo tal que a remoção deste vértice provoca um aumento no número de componentes conectados. Se o grafo era conectado antes da remoção do vértice, ele será desconectado depois. Qualquer grafo conectado com um vértice de corte tem uma conectividade de 1. Embora bem definidos, mesmo para grafos dirigidos (digrafos), os vértices de corte são utilizados principalmente em grafos não dirigidos. Em geral, um grafo conectado, não-dirigido, com n vértices não pode ter mais do que 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, ou seja, a remoção de uma ponte aumenta o número de componentes conectados do grafo.

Encontrando Vértices de corte Um algoritmo trivial

é como se segue: Um grafo não-dirigido com n=5 vertices e n-2=3 vértices de corte; os vértices de corte (em vermelho) são aqueles que não estão em ambos as pontas

Vértice de corte (teoria dos grafos)

38

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

C = conjunto vazio (no final do algoritmo ele irá conter os vértices de corte) a = número de componentes em G (encontrado usando uma Busca em profundidade/Busca 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 muito melhor execução

[2]

profundidade.

Algoritmo em C++ #include #include #include #include

<set>

#define MAX 100 using namespace std; int n, time_s, visit[MAX]; vector ADJ[MAX]; int dfs(int u, set& ans){ int menor = visit[u] = time_s++; int filhos = 0; for(int i = 0; i=2)){ ans.insert(u);

é conhecido usando uma Busca em

Vértice de corte (teoria dos grafos) } }else{ menor = min(menor, visit[ADJ[u][i]]); } } return menor; } set get_articulacoes(){ set ans; time_s = 1; memset(visit, 0, n*sizeof(int)); dfs(0,ans); return ans; } Teste seu código em: http://br.spoj.pl/problems/MANUT/

Vértices de corte em árvores 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] Slides apresentando o algoritmo O(n+m) (http:/ / www. eecs. wsu. edu/ ~holder/ courses/ CptS223/ spr08/ slides/ graphapps. pdf)

Ligações externas • Wolfram Mathworld (http://mathworld.wolfram.com/Cut-Vertex.html) "Cut-Vertex" • Nirmala, K.; Ramachandra Rao, A. O número de vértices de corte em um grafo regular. (em português), Cah. Cent. Étud. Rech. Opér. 17, 295-299 (1975).

39

Vizinhança

40

Vizinhança Em teoria dos grafos, um vértice adjacente de um vértice v em um Grafo é um vértice que está ligado a v por uma aresta.[][] A vizinhança ou adjacência de um 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 arestas ligando esses dois vértices. Por exemplo, a imagem mostra um gráfico de 6 vértices e 7 arestas. O vértice 5 é adjacente aos vértices 1, 2 e 4, mas não é adjacente aos vértices 3 e 6. A vizinhança do vértice 5 é o grafo com três vértices, 1, 2 e 4, e uma aresta conectando os vértices 1 e 2.

Um grafo consistindo de 6 vértices e 7 arestas

A vizinhança é frequentemente denotada NG(v) ou (quando o grafo não é ambíguo) N(v). A mesma notação de vizinhança também pode ser usada para se referir a um conjunto de vértices adjacentes ao invés dos subgrafos induzidos correspondentes. A adjacência descrita acima não inclui v em si, e mais especificamente, a vizinhança aberta de v; também é possível definir uma adjacência na qual v está incluído, chamada de vizinhança fechada e denotada por NG[v]. Quando não se afirma nada, a vizinhança é considerada aberta. 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ças também são usadas no coeficiente de agrupamento de um grafo, que é uma medida da densidade média de suas adjacências. Além disso, muitas classes importantes de grafos podem ser definidas pelas propriedades de suas vizinhanças, ou por simetrias que relacionam vizinhanças umas com as outras. Um vértice isolado não tem vértices adjacentes. O grau de um vértice é igual ao número de vértices adjacentes. 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 vizinhança.

Propriedades locais em grafos Se todos os vértices em G tem adjacências que são isomorfas para o mesmo grafo H,G é dito ser localmente H, e se todos vértices em G tem adjacências que pertencem a alguma família de grafosF, G é dito ser localmente F(Hell 1978, Sedlacek, 1983). Por exemplo, no grafo octaédrico mostrado na figura, cada vértice tem uma adjacência isomorfa a um grafo cíclico de quatro vértices, de modo que o octaedro é localmente C4. Por exemplo: • Qualquer grafo completo Kn é localmente Kn-1. Os únicos grafos que são localmente completos são uniões disjuntas de grafos completos. • Um grafo de Turán T(rs,r) é localmente T((r-1)s,r-1). Mais genericamente qualquer grafo Turan é localmente Turan.

No grafo octaédrico, a vizinhança de qualquer vértice é um 4-ciclo.

• Todo grafo planar é localmente periplanar. No entanto, nem todos os grafos localmente periplanares são planares. • 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 .[]

Vizinhança • 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 C4, o icosaedro é o único grafo localmente C5 e o gráfico Paley de ordem 13 é localmente C6.

41

42

Árvores Árvores Na teoria dos grafos, uma árvore é um grafo conexo (existe caminho entre quaisquer dois de seus vértices) e acíclico (não possui ciclos)[1][2]. Caso o grafo seja acíclico mas não conexo, ele é dito uma floresta. Uma floresta também é definida como uma união disjunta de árvores. Toda árvore é um grafo, mas nem todo grafo é uma árvore. Toda árvore é um grafo bipartido e planar. Todo grafo conexo possui pelo menos uma árvore de extensão associada, composta de todos os seus vértices e algumas de suas arestas.

Propriedades Seja G um grafo. G é uma árvore se satisfaz as seguintes condições: • 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-conectividade.

Uma árvore com 5 arestas e 6 vértices.

• G é acíclico, e um simples ciclo é formado se qualquer aresta for adicionada a G. • G é conexo, e deixará de ser conexo se qualquer aresta for removida de G. • G é conexo, acíclico e tem n − 1 arestas.

Definições • Uma árvore é denominada enraizada se um vértice é 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].

Árvore de extensão

43

Árvore de extensão Uma árvore de extensão ou árvore de dispersão (em inglês: spanning tree) é o subconjunto de arestas de um grafo que forma uma árvore contendo todos os vértices. Uma árvore de extensão mínima ou árvore de extensã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 os nós. Uma árvore de extensão/dispersão apresenta as seguintes propriedades: • Define um subconjunto de arestas que mantém o grafo conectado em um único componente; • Em um grafo não-valorado qualquer árvore de dispersão é mínima; • Podem ser calculadas em tempo polinomial;

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

Os algoritmos usuais para a determinação de árvores de extensão/dispersão são o algoritmo de Prim (1957) e o algoritmo de Kruskal (1956).

Referências • Eppstein, David (1999). "Spanning trees and spanners [1]". Handbook of Computational Geometry: 425–461, Elsevier. • Garey, Michael R.; Johnson, David S.. Computers and Intractability: A Guide to the Theory of NP-Completeness. [S.l.]: W.H. Freeman, 1979. ISBN 0-7167-1045-5 A2.1: ND2, pg.206. • Wu, Bang Ye; Chao, Kun-Mao. Spanning Trees and Optimization Problems. [S.l.]: CRC Press, 2004. ISBN 1584884363

Referências [1] http:/ / www. ics. uci. edu/ ~eppstein/ pubs/ Epp-TR-96-16. pdf

Árvore de extensão mínima

Árvore de extensão mínima Dado um grafo não orientado conectado, uma árvore de extensão deste grafo é um subgrafo o qual é uma árvore que conecta todos os vértices. Um único grafo pode ter diferentes árvores de extensão. Nós podemos assinalar um peso a cada aresta, que é um número que representa quão desfavorável ela é, e atribuir um peso a árvore de extensão calculado pela soma dos pesos das arestas que a compõem. Uma árvore de extensão mínima (também conhecida como árvore de extensão de peso mínimo ou árvore geradora mínima) é então uma árvore de extensão com peso menor ou igual a cada uma das outras árvores de extensão possíveis. A árvore de extensão mínima de um grafo plano. Cada aresta é identificada como seu peso, o qual é aproximadamente igual ao seu comprimento. Generalizando mais, qualquer grafo não direcional (não necessariamente conectado) tem uma floresta de árvores mínimas, que é uma união de árvores de extensão mínimas de cada uma de suas componentes conexas. Um exemplo de uso de uma árvore de extensão mínima seria a instalação de fibras óticas num campus de uma faculdade. Cada trecho de fibra ótica entre os prédios possui um custo associado (isto é, o custo da fibra, somado ao custo da instalação da fibra, mão de obra, etc). Com esses dados em mãos (os prédios e os custos de cada trecho de fibra ótica entre todos os prédios), podemos construir uma árvore de extensão que nos diria um jeito de conectarmos todos os prédios sem redundância. Uma árvore geradora mínima desse grafo nos daria uma árvore com o menor custo para fazer essa ligação.

Propriedades Possível Multiplicidade 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 é mínima.

Unicidade Se cada aresta tem um peso distinto, então existirá somente uma árvore de extensão mínima distinta. Isso pode ser provado por indução ou por contradição. Isso é verdade em muitas situações realísticas, como no exemplo do cabeamento do campus, dado acima. É muito difícil que tenhamos duas possibilidades de cabeamento com exatamente o mesmo custo. Isso pode ser generalizado para florestas de árvores mínimas.

44

Árvore de extensão mínima

Subgrafo de custo mínimo Se todos os pesos são não-negativos, então uma árvore de extensão mínima é o subgrafo de custo mínimo conectando todos os vértices, já que qualquer subgrafo contendo 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.

Algoritmos O primeiro algoritmo a encontrar uma arvore de extensão mínima foi desenvolvido pelo cientista checo Otakar Borůvka em 1926 (veja algoritmo de Boruvka). Seu propó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 encontrar 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 extremamente lenta, então para todos os propósitos práticos ele pode ser considerado uma constante não maior que quatro; portanto o algoritmo de Chazelle chega muito perto de um tempo O(m). Qual é o algoritmo mais rápido possível para este problema? Isto é um dos mais antigos problemas em aberto na ciência da computação. Há claramente um limite linear inferior, já que é necessário examinar todas as arestas ao menos uma vez.

Ligações externas • Comparação de algoritmos para o problema da árvore de extensão mínima [1] - Explicação detalhada de cinco algoritmos diferentes para o problema da árvore de extensão mínima, código completo de cada um deles e comparação de performance entre eles.

Referências [1] http:/ / danielamaral. wikidot. com/ paa-2007-1-projeto-1-arvore-geradora-minima

45

46

Representação de Grafos Matriz de adjacência Uma matriz de adjacência é uma das formas de se representar um grafo. Dado um grafo G com n vértices, podemos representá-lo em uma matriz n x n A(G)=[aij] (ou simplesmente A). A definição precisa das entradas da matriz varia de acordo com as propriedades do grafo que se deseja representar, porém de forma geral o valor aij guarda informações sobre como os vértices vi e vj estão relacionados (isto é, informações sobre a adjacência de vi e vj). Para representar um grafo não direcionado, simples e sem pesos nas arestas, basta que as entradas aij da matriz A 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 dessa mesma aresta. Por exemplo, a matriz de adjacência do grafo ao lado é

Em grafos não direcionados, as matrizes de adjacência são simétricas ao longo da diagonal principal - isto é, a entrada aij é igual à entrada aji. Matrizes de adjacência de grafos direcionados, no entanto, não são assim. Num digrafo sem pesos, a entrada aij da matriz é 1 se há um arco de vi para vj e 0 caso contrário. Um resultado interessante ocorre quando consideramos a potência k da matriz de adjacência, ou seja, o produto

Antes de apresentar o resultado, vamos definir um percurso 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 ≤ 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 percurso,

Matriz de adjacência

47

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

e assuma que aij Considerando

(k-1)

é o número de percursos distintos de comprimento k - 1 entre os vértices vi e vj em G.

e como Ak = Ak-1 . A, temos que

Observe que, na expressão acima, o elemento aij (k) é obtido multiplicando-se os elementos da linha i de Ak-1 pelos respectivos elementos da coluna j de A e, em seguida, efetuando-se a soma dos produtos obtidos. Todo percurso entre vi e vj de comprimento k em G consiste de um percurso entre vi e vp de comprimento k - 1, onde vp é adjacente a vj, seguido da aresta {vp, vj} e do vértice vj. O resultado decorre da hipótese de indução e da última equação. O resultado permanece válido para digrafos, fazendo-se as devidas adequações: trocando arestas por arcos e percursos 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:

.

O elemento (4,6) de A2 indica que não há nenhum caminho de comprimento 2 ligando os vértices 4 e 6 do grafo acima. Por outro lado, o elemento (4,6) de A3 indica que existem 3 caminhos de comprimento 3 ligando os vértices 4 e 6. São eles: (4,3,4,6), (4,5,4,5) e (4,6,4,6).

Bibliografia • CHARTRAND, G., LESNIAK, L. Graphs & Digraphs. Editora CRC Press, 2004.

Matriz de incidência

Matriz de incidência Uma matriz de incidência representa computacionalmente um grafo através de uma matriz bidimensional, onde uma das dimensões são vértices e a outra dimensão são arestas. Dado um grafo G com n vértices e m arestas, podemos representá-lo em uma matriz n x m M. A definição precisa das entradas da matriz varia de acordo com as propriedades do grafo que se deseja representar, porém de forma geral guarda informações sobre como os vértices se relacionam com cada aresta (isto é, informações sobre a incidência de um vértice em uma aresta). Para representar um grafo sem pesos nas arestas e não direcionado, basta que as entradas da matriz M contenham 1 se o vértice incide na aresta, 2 caso seja um laço (incide duas vezes) e 0 caso o vertice não incida na aresta. Por exemplo, a matriz de incidência do grafo ao lado é

48

Lista de adjacência

49

Lista de adjacência Em teoria dos grafos, uma lista de adjacência, estrutura de adjacência[1] ou dicionário[2] é a representação de todas arestas ou arcos de um grafo em uma lista. Se o grafo é não direcionado, cada entrada é um conjunto (ou multiconjunto) de dois nós contendo as duas extremidades da aresta correspondente; se ele for dirigido, cada entrada é uma tupla de dois nós, um indicando o nó de origem e o outro denotando o nó destino do arco correspondente.

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

Normalmente, as listas de adjacência são desordenadas.

Aplicação em ciência da computação O grafo da figura acima tem essa representação de lista de adjacência: 1

adjacente a

2,5

2

adjacente a

1,3,5

3

adjacente a

2,4

4

adjacente a

3,5,6

5

adjacente a

1,2,4

6

adjacente a

4

Em ciência da computação, uma lista de adjacência é uma estrutura de dados para representar grafos. Em uma representação de lista de adjacência, podemos manter, para cada vértice do grafo, uma lista de todos os outros vértices com os quais ele tem uma aresta (a "lista de adjacência", deste vértice). Por exemplo, a representação sugerida por van Rossum[3], em que uma tabela de dispersão (tabela hash) é usada para associar cada vértice com um array de vértices adjacentes, pode ser vista como um exemplo deste tipo de representação. Outro exemplo é a Lista de adjacências do grafo acima como encontrada em Cormen el al.. representação encontrada em Cormen et al. em que um array indexado pelos números dos vértices aponta para uma lista simplesmente encadeada dos vizinhos de cada vértice[4].

Lista de adjacência

Uma dificuldade com a estrutura da lista de adjacência é que ela não tem lugar óbvio para armazenar dados associados com as arestas de um grafo, tais como o comprimento ou custos das arestas. Para remediar isso, alguns textos, como o de Goodrich e Tamassia[5][6], defendem uma variante mais orientada a objeto da estrutura da lista de adjacência, às vezes chamada de lista de incidência, que armazena para cada vértice uma lista de objetos que representam as arestas incidentes a esse vértice. Para completar a estrutura, cada aresta deve apontar de volta para os dois vértices que compõem a sua extremidade. Os objetos extras nesta versão da lista de adjacência aumentam o uso de Lista de adjacências do grafo acima como sugerida por van Rossum. memória em relação à versão em que vértices adjacentes são listados diretamente, mas estas arestas extras também são um local conveniente para armazenar informações adicionais sobre cada aresta (por exemplo, o seu comprimento). Ainda uma outra forma de representação é a lista de adjacência com arrays em que um array indexado pelos números dos vértices aponta para arrays contendo os vértices[7].

Conflitos de escolha A principal alternativa para a lista de adjacência é a matriz de adjacência. Para um grafo com uma matriz de adjacência esparsa uma representação de lista de adjacências do grafo ocupa menos espaço, porque ele não usa nenhum espaço para representar as arestas que não estão presentes[8]. Usando uma implementação de listas de adjacência com um simples array em um computador de 32 bits, uma lista de adjacência de um grafo não direcionado requer cerca de 8e bytes de armazenamento, onde e é o número de arestas: cada aresta dá origem a entradas nas duas listas de adjacência e usa quatro bytes cada uma. Por outro lado, pelo fato de que cada entrada em uma matriz de adjacências requer apenas um bit, elas podem ser representados de uma forma muito compacta, ocupando apenas n2/8 bytes de espaço contíguo, onde n é o número 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 arestas (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 é verdadeiro 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 matriz de adjacência. No entanto, esta análise só é válida quando a representação é usada para armazenar a estrutura de conectividade do grafo, sem qualquer informação numérica sobre suas arestas. Além do conflito de escolha relativo ao espaço, as estruturas de dados diferentes também facilitam operações diferentes. É fácil encontrar todos os vértices adjacentes a um vértice dada em uma representação lista de adjacência; você simplesmente le a sua lista de adjacência. Com uma matriz de adjacência em vez disso se tem que pesquisar

50

Lista de adjacência 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.

51

52

Automorfismo de grafos Automorfismo de grafos No campo da matemática da teoria dos grafos, um automorfismo de um grafo é uma forma de simetria em que o grafo é mapeado em si, preservando a conectividade vértice-aresta. Formalmente, um automorfismo de um grafo G = (V,E) é uma permutação σ do conjunto 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 maneira, tanto para grafos direcionados quando para grafos não-direcionados. A composição de dois automorfismos é outro automorfismo, 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 representados como o grupo de automorfismo de um grafo conexo. - Na verdade, de um grafo cúbico.[2][3]

Complexidade computacional Construir o grupo de automorfismo é pelo menos tão difícil (em termos de complexidade computacional) quanto resolver o problema do isomorfismo de grafos, para determinar se dois grafos dados correspondem vértice com vértice e aresta com aresta. Pois, G e H são isomorfos se e somente se o grafo desconectado formado pelo união disjunta de grafos G e H tem um automorfismo que troca os dois componentes.[4] O problema do automorfismo de grafos é o problema de testar se um grafo tem um automorfismo não trivial. Ele pertence à classe NP de problemas de complexidade computacional. De forma semelhante ao problema do isomorfismo de grafos, não se sabe se ele tem um algoritmo que o resolva em tempo polinomial ou se é NP-completo. Sabe-se que o problema do automorfismo de grafos é redutível muitos-para-um em tempo polinomial para o problema do isomorfismo de grafos, mas a redução inversa é desconhecida.[5] [6]

Exibindo a Simetria Vários pesquisadores de desenho de grafos têm investigado algoritmos Este desenho do grafo de Petersen mostra um para desenhar grafos de tal forma que o automorfismo do grafo se subgrupo de suas simetrias, isomorfo ao grupo diedro D5, mas o grafo tem simetrias adicionais torne visível como simetrias do desenho. Isso pode ser feito usando um que não estão presentes no desenho(uma vez que método que não é projetado em torno de simetrias, mas que gera o grafo é simétrico, todas as ligações são automaticamente os desenhos simétricos, quando possível,[7] ou equivalentes, por exemplo). explicitamente identificand as simetrias e usando-as para orientar a colocação de vértice no desenho.[8] Nem sempre é possível mostrar todas as simetrias do grafo, simultaneamente, de modo que talvez seja necessário escolher quais simetrias mostrar e quais deixar sem visualização.

Automorfismo de grafos

53

Famílias de grafos definidas pelos seus automorfismos Várias famílias de grafos são definidas por terem certos tipos de automorfismos: • Um Grafo assimétrico é um grafo não direcionado, sem qualquer automorfismo não trivial. • Um Grafo vértice-transitivo é um grafo não direcionado em que cada vértice pode ser mapeado por um automorfismo em qualquer outro vértice. • Um Grafo aresta-transitivo é um grafo não direcionado em que cada aresta pode ser mapeada por um automorfismo em qualquer outra aresta. • Um Grafo simétrico é um grafo tal que cada par de vértices adjacentes podem ser mapeados por um automorfismo em qualquer outro par de vértices adjacentes. • Um Grafo distância-transitivo é um grafo tal que cada par de vértices pode ser mapeada por um automorfismo em qualquer outro par de vértices que estão à mesma distância. • Um Grafo semi-simétrico é um grafo que é aresta-transitivo, mas não vértice-transitivo. • Um Grafo meio-transitivo é um grafo que é vértice-transitivo e aresta-transitivo mas não simétrico. • Um Grafo anti-simétrico é um grafo dirigido, juntamente com uma permutação σ sobre os vértices que mapeia as arestas para arestas, mas inverte o sentido de cada aresta. Adicionalmente, σ necessita ser uma involução. Relações de inclusão entre estas famílias estão indicadas no quadro seguinte:

distância-transitivo

distância-regular

simétrico(arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

Automorfismo de grafos

54

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

Grafo de Cayley [2] . [4] .

aresta-transitivo

Automorfismo de grafos

55

[7] ; . [8] .

Grafo regular Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

Em Teoria dos grafos, um grafo regular é um grafo onde cada vértice tem o mesmo número de adjacências, i.e. cada vértice tem o mesmo grau ou valência. Um grafo direcionado regular também deve satisfazer a condição mais forte de que o grau de entrada e o grau de saída de cada vértice sejam iguais uns aos outros.[] Um grafo regular com vértices de grau k é chamado um grafo k‑regular ou grafo regular de grau k. Grafos regulares de grau no máximo 2 são fáceis de classificar: Um grafo 0-regular é composto por vértices desconectados, um grafo 1-regular consiste de arestas desconectadas, e um grafo 2-regular consiste de ciclos desconectados. Um grafo 3-regular é conhecido como um grafo cúbico. Um grafo fortemente regular é um grafo regular, onde cada par de vértices adjacentes tem o mesmo número l de vizinhos em comum, e cada par de vértices não-adjacentes tem o mesmo número n de vizinhos em comum. Os menores grafos que são regulares, mas não fortemente regulares são os grafos ciclos e os grafos circulantes em 6 vértices. O grafo completo

é fortemente regular para qualquer

.

Um teorema de Nash-Williams diz que cada k‑grafo regular em 2k + 1 vértices tem um ciclo hamiltoniano.

grafo 0-regular

grafo 1-regular

grafo 2-regular

grafo 3-regular

Grafo regular

56

Propriedades algébricas Seja A a matriz de adjacência de um grafo. Então, o grafo é regular se e somente se [1]

de A..

é um autovetor

Seu autovalor será o grau constante do grafo. Autovetores correspondentes a outros autovalores são

ortogonais a , assim como para tais autovetores

, nós temos

.

Um grafo regular de grau k é conectado se e somente se o autovalor k tem uma multiplicidade 1.[1] [1] Cvetković, D. M.; Doob, M.; and Sachs, H. Spectra of Graphs: Theory and Applications, 3rd rev. enl. ed. New York: Wiley, 1998.

Ligações externas • GenReg (http://www.mathe2.uni-bayreuth.de/markus/reggraphs.html) software e dados por Markus Meringer.

Grafo fortemente regular

57

Grafo fortemente regular

O Grafo Paley de ordem 13, um grafo fortemente regular com parâmetros gfr(13,6,2,3).

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

Na teoria dos grafos, uma disciplina dentro da matemática, um grafo fortemente regular é definido como se segue. Seja G = (V,E) um grafo regular com v vértices e grau k. G é dito ser fortemente regular se houver também inteiros λ e μ tais que: • Cada dois vértices adjacentes tem λ vizinhos em comum. • Cada dois vértices não-adjacentes tem μ vizinhos em comum. Um grafo deste tipo é dito às vezes ser um gfr(v,k,λ,μ). Alguns autores excluem grafos que satisfazem a definiçã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. Um grafo fortemente regular é um grafo distância-regular com diâmetro 2, mas somente se μ não é zero.

Grafo fortemente regular

58

Propriedades • Os quatro parãmetros em um grs(v,k,λ,μ) não são independentes, como é fácil mostrar que:

• Seja I denotando a matriz identidade (de ordem v) e faça-se J denotar a matriz cujas entradas são todas iguais a 1. A matriz de adjacência A de um grafo fortemente regular satisfaz as seguintes propriedades: • (Esta é uma reafirmação trivial da exigência para os graus de vértices). • (O primeiro termo indica o número de caminhos de 2-passos de cada vértice para todos os vértices. Para os pares de vértices diretamente ligados por uma aresta, a equação reduz-se o número de tais caminhos em 2 passos sendo igual a . Para os pares de vértices não directamente ligados por uma aresta, a equação reduz-se ao número de tais caminhos em 2 passos sendo igual a

. Para os auto-pares triviais, a equação reduz-se para

o grau igual a k). • O grafo tem exatamente três autovalores: •

cuja multiplicidade é 1



cuja multiplicidade é



cuja multiplicidade é

• Grafos fortemente regulares para os quais

são chamados grafos de conferência

devido a sua conexão com matrizes de conferência simétricas. Seus parâmetros se reduzem a . • Grafos fortemente regulares para os quais

tem autovalores inteiros com

multiplicidades desiguais. • O complemento de um gfr(v,k,λ,μ) também é fortemente regular. É um gfr(v, v−k−1, v−2−2k+μ, v−2k+λ)

Exemplos • • • • • • • • • •

O grafo de Shrikhande é um gfr(16,6,2,2) que não é um grafo distância-transitivo. O ciclo de comprimento 5 é um gfr(5,2,0,1). O grafo de Petersen é um gfr(10,3,0,1). Os grafos de Chang são gfr(28,12,6,4). O grafo de Hoffman–Singleton é um gfr(50,7,0,1). O grafo de Higman–Sims é um gfr(100,22,0,4). Os grafos de Paley de ordem q são gfr(q, (q − 1)/2, (q − 5)/4, (q − 1)/4. O grafo de rook quadrado n × n é um gfr(n2, 2n − 2, n − 2, 2). O grafo de Brouwer–Haemers é um gfr(81,20,1,6). O grafo de Schläfli é um gfr(27,16,10,8).

Grafo fortemente regular

Bibliografia • A.E. Brouwer, A.M. Cohen, and A. Neumaier (1989), Distance Regular Graphs. Berlin, New York: Springer-Verlag. ISBN 3-540-50619-5, ISBN 0-387-50619-5 • Chris Godsil and Gordon Royle (2004), Algebraic Graph Theory. New York: Springer-Verlag. ISBN 0-387-95241-1

Ligações externas • Eric W. Weisstein, Mathworld artigo com numerosos exemplos. [1] • Gordon Royle, Lista dos maiores grafos e famílias. [2] • Andries E. Brouwer, Parametros de grafos fortemente regulares. [3]

Referências [1] http:/ / mathworld. wolfram. com/ StronglyRegularGraph. html [2] http:/ / people. csse. uwa. edu. au/ gordon/ remote/ srgs/ [3] http:/ / www. win. tue. nl/ ~aeb/ graphs/ srg/ srgtab. html

59

Grafo distância-regular

60

Grafo distância-regular

O grafo de Shrikhande, um grafo distância-regular.

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo distância-regular é um grafo regular tal que para quaisquer dois vértices v e w a uma distância i o número de vértices adjacentes a w e à distância j a partir de v é o mesmo. Todo grafo distância-transitivo é distância regular. Com efeito, grafos distância-regular foram introduzidos como uma generalização combinatória de grafos distância-transitivos, tendo as propriedades de regularidade numérica do último, sem ter necessariamente um grande grupo de automorfismo. Alternativamente, um grafo distância-regular é um grafo para o qual existem inteiros bi,ci,i=0,...,d tais que para quaisquer dois vértices x, y em G e distância i=d(x,y), há exatamente ci vizinhos de y em Gi-1(x) e bi vizinhos de y em Gi+1(x), onde Gi(x) é o conjunto de vértices y de G com d(x,y)=i (Brouwer et al. 1989, p. 434).[1] O array de inteiros caracterizando um grafo distância regular é conhecido como o seu array de interseção. Um grafo distância-regular com diâmetro 2 é fortemente regular, e reciprocamente (a menos que o grafo seja desconexo).

Grafo distância-regular

Números Intersecção É usual utilizar a seguinte notação para um grafo distância-regular G. O número de vértices é n. O número 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, respectivamente; estes são os números de intersecção de G. Obviamente, a0 = 0, c0 = 0, e b0 é igual a k, o grau 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 Os numeros ai, bi, e ci são frequentemente mostrados em um array de três linhas.

chamado o array de intersecção de G. Eles podem ser formados também por uma matriz tridiagonal

chamada de matriz de intersecção.

Matrizes de adjacência distância Suponha que G é um grafo distância-regular conexo. Para cada distância i = 1, ..., d, podemos formar um grafo Gi no qual os vértices são adjacentes se sua distância em G é igual a i. Façamos Ai ser a matriz de adjacência de Gi. Por 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 A0, A1, ..., Ad, chamadas as matrizes de distância de G. A soma é a matriz J em que cada entrada é 1. Há uma fórmula de produto importante:

A partir desta fórmula resulta que cada Ai é uma função polinomial de A, de grau i, e que A satisfaz um polinômio de grau d + 1. Além disso, A tem exatamente d + 1 autovalores distintos, dos quais o maior é k, o grau. As matrizes de distância abrangem um subespaço vetorial do espaço vetorial de todas n × n matrizes reais. É um fato notável que o produto Ai Aj de quaisquer duas matrizes de distância é uma combinação linear das matrizes de distância:

Isto significa que as matrizes de distância geram um esquema de associação. A teoria dos esquemas de associação é fundamental para o estudo dos gráficos de distância regular. Por exemplo, o fato de que Ai é uma função polinomial de A é um fato sobre os esquemas de associação.

61

Grafo distância-regular

Exemplos • Grafos completos são distância regular com diâmetro 1 e grau v−1. • Ciclos C2d+1 de comprimento ímpar são distância regular com k = 2 e diâmetro d. Os números de intersecção ai = 0, bi = 1, e ci = 1, exceto para os casos usuais especiais (ver acima) e cd = 2. • Todos os grafos de Moore, em particular o grafo de Petersen e o grafo de Hoffman–Singleton, são distância regulares. • grafos fortemente regulares são distância regular. • Grafos ímpares são distância regular.

62

Grafo distância-transitivo

63

Grafo distância-transitivo

O grafo de Biggs-Smith, o maior grafo distância-transitivo 3-regular.

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo distância-transitivo é um grafo tal que, dados dois vértices quaisquer v e w em qualquer distância i, e quaisquer 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 simétrico bem como distância-regular. Um grafo distância-transitivo é interessante, em parte, porque tem um grande grupo de automorfismo. Alguns exemplos interessantes de grupos finitos são os grupos de automorfismos de grafos distância-transitivos, especialmente daqueles cujo diâmetro é de 2. Grafos distância-transitivos foram definidos primeiramente em 1971 por Norman L. Biggs e D. H. Smith, que mostraram que existem apenas 12 grafos distância-transitivos trivalentes finitos. São eles:

Grafo distância-transitivo

Nome do grafo grafo completo K4

64

Contagem de vértices Diâmetro Cintura

array de interseção

4

1

3

{3;1}

grafo bipartido completo K3,3 6

2

4

{3,2;1,3}

grafo de Petersen

10

2

5

{3,2;1,1}

grafo do cubo

8

3

4

{3,2,1;1,2,3}

grafo de Heawood

14

3

6

{3,2,2;1,1,3}

grafo de Pappus

18

4

6

{3,2,2,1;1,1,2,3}

grafo de Coxeter

28

4

7

{3,2,2,1;1,1,1,2}

grafo de Tutte–Coxeter

30

4

8

{3,2,2,2;1,1,1,3}

grafo do dodecaedro

20

5

5

{3,2,1,1,1;1,1,1,2,3}

grafo de Desargues

20

5

6

{3,2,2,1,1;1,1,2,2,3}

grafo de Biggs-Smith

102

7

9

{3,2,2,2,1,1,1;1,1,1,1,1,1,3}

grafo de Foster

90

8

10

{3,2,2,2,2,1,1,1;1,1,1,1,2,2,2,3}

Independente em 1969, um grupo de russos liderados por Georgy Adelson-Velsky mostrou que existem grafos que são distância-regulares, mas não distância-transitivos. O único grafo deste tipo com um grau três é o Tutte 12-gaiola de 126 vértices. O menor grafo distância-regular que não é a distância-transitivo é o grafo de Shrikhande. Listas completas de grafos distância-transitivos são conhecidas para alguns graus maiores do que três, mas a classificação de grafos distância-transitivos com graus de vértice arbitrariamente grandes continua em aberto. A mais simples família de exemplos assintótica de grafos distância-transitivos são os grafos Hipercubo. Outras famílias são os grafos cubo dobrado e os grafos torre quadrados. Todas essas três famílias têm arbitrariamente um grau elevado. Primeiros trabalhos • Adel'son-Vel'skii, G. M.; Veĭsfeĭler, B. Ju.; Leman, A. A.; Faradžev, I. A. (1969), "An example of a graph which has no transitive group of automorphisms", Doklady Akademii Nauk SSSR 185: 975–976, MR 0244107 (http:// www.ams.org/mathscinet-getitem?mr=0244107). • Biggs, Norman (1971), "Intersection matrices for linear graphs", Combinatorial Mathematics and its Applications (Proc. Conf., Oxford, 1969), London: Academic Press, pp. 15–23, MR 0285421 (http://www.ams.org/ mathscinet-getitem?mr=0285421). • Biggs, Norman (1971), Finite Groups of Automorphisms, London Mathematical Society Lecture Note Series, 6, London & New York: Cambridge University Press, MR 0327563 (http://www.ams.org/ mathscinet-getitem?mr=0327563). • Biggs, N. L.; Smith, D. H. (1971), "On trivalent graphs", Bulletin of the London Mathematical Society 3: 155–158, doi: 10.1112/blms/3.2.155 (http://dx.doi.org/10.1112/blms/3.2.155), MR 0286693 (http://www. ams.org/mathscinet-getitem?mr=0286693). • Smith, D. H. (1971), "Primitive and imprimitive graphs", The Quarterly Journal of Mathematics, Oxford, Second Series 22: 551–557, doi: 10.1093/qmath/22.4.551 (http://dx.doi.org/10.1093/qmath/22.4.551), MR 0327584 (http://www.ams.org/mathscinet-getitem?mr=0327584). Pesquisas • Biggs, N. L. (1993), "Distance-Transitive Graphs", Algebraic Graph Theory (2nd ed.), Cambridge University Press, pp. 155–163, chapter 20. • Van Bon, John (2007), "Finite primitive distance-transitive graphs", European Journal of Combinatorics 28 (2): 517–532, doi: 10.1016/j.ejc.2005.04.014 (http://dx.doi.org/10.1016/j.ejc.2005.04.014), MR 2287450 (http:/

Grafo distância-transitivo

65

/www.ams.org/mathscinet-getitem?mr=2287450). • Brouwer, A. E.; Cohen, A. M.; Neumaier, A. (1989), "Distance-Transitive Graphs", Distance-Regular Graphs, New York: Springer-Verlag, pp. 214–234, chapter 7. • Cohen, A. M. Cohen (2004), "Distance-transitive graphs", in Beineke, L. W.; Wilson, R. J., Topics in Algebraic Graph Theory, Encyclopedia of Mathematics and its Applications, 102, Cambridge University Press, pp. 222–249. • Godsil, C.; Royle, G. (2001), "Distance-Transitive Graphs", Algebraic Graph Theory, New York: Springer-Verlag, pp. 66–69, section 4.5. • Ivanov, A. A. (1992), "Distance-transitive graphs and their classification", in Faradžev, I. A.; Ivanov, A. A.; Klin, M. et al., The Algebraic Theory of Combinatorial Objects, Math. Appl. (Soviet Series), 84, Dordrecht: Kluwer, pp. 283–378, MR 1321634 (http://www.ams.org/mathscinet-getitem?mr=1321634).

Grafo simétrico

O grafo de Petersen é um grafo (cúbico) simétrico. Qualquer par de vértices ligados pode ser mapeado para outro por um automorfismo, uma vez que qualquer anel de cinco vértices pode ser mapeado para qualquer outro.

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

Grafo simétrico No campo da matemática da teoria dos grafos, um grafo G é simétrico (ou arco-transitivo) se, dados quaisquer dois pares de vértices ligados u1—v1 e u2—v2 de G , há um automorfismo f : V(G) → V(G) tal que f(u1) = u2 and f(v1) = v2.[] Em outras palavras, um grafo é simétrico se seu grupo de automorfismo age transitivamente em pares ordenados de vértices ligados (isto é, sobre as arestas consideradas como tendo um sentido).[] Tal grafo é chamado às vezes também 1-arco-transitivo[] ou flag-transitivo.[] Por definição (ignorando u1 e u2), um grafo simétrico sem vértices isolados deve também ser vértice-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 precisa ser simétrico, uma vez que a—b pode mapear a c—d, mas não a d—c. Grafos simétricos, por exemplo, aão aresta-transitivos e regulares, mas não vértice-transitivos. Todo grafo simétrico conexo deve, portanto, ser tanto vértice-transitivo quanto aresta-transitivo, e o inverso é verdadeiro para grafos de grau ímpar.[] No entanto, para graus pares, existem grafos conectados que são vértice-transitivos e aresta-transitivos, mas não simétricos.[1] Tais grafos são denominados meio-transitivos.[] O menor grafo conexo meio-transitiva é o grafo de Holt, com grau 4 e 27 vértices.[][2] De forma confusa, alguns autores usam o termo "grafo simétrico" para significar um grafo que é vértice-transitivo e aresta-transitivo, ao invés de um grafo arco-transitivo. Tal definição inclui grafos meio-transitivos, que são excluídos pela definição acima. Um grafo distância-transitivo é aquele em que em vez de considerar pares de vértices ligados (i.e. vértices a uma distância de um), a definição abrange dois pares de vértices, cada um à mesma distância. Tais grafos são automaticamente simétricos, por definição.[] Um t-arco é definido como uma sequência de t+1 vértices ligados, com quaisquer vértices repetidos estando a mais de 2 passos distante. Um grafo t-transitivo é um grafo tal que o grupo de automorfismo atua transitivamente nos t-arcos, mas não nos (t+1)-arcos. Uma vez que os 1-arcos são simplesmente arestas, qualquer grafo 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 disso classificar grafos simétricos. O cubo é 2-transitivo, por exemplo.[]

Exemplos Combinando a condição de simetria com a restrição de que os grafos sejam cúbicos (ou seja, todos os vértices tem grau 3) resulta abolutamente uma forte condição, e tais grafos são raros o bastante para serem citados. O censo de Foster e suas extensões fornecem tais listas.[3] O censo de Foster foi iniciado na década de 1930 por Ronald M. Foster enquanto ele era um contratado pela Bell Labs,[4] e em 1988 (quando Foster estava com 92 anos de idade[]) o então censo de Foster corrente (listando todos os grafos cúbicos simétricos até 512 vértices) foi publicado em forma de livro.[5] [2] . [3] Marston Conder, Trivalent symmetric graphs on up to 768 vertices (http:/ / www. math. auckland. ac. nz/ ~conder/ preprints/ cubic768. ps), J. Combin. Math. Combin. Comput, vol. 20, pp. 41–63 [4] Foster, R. M. "Geometrical Circuits of Electrical Networks." Transactions of the American Institute of Electrical Engineers 51, 309–317, 1932. [5] "The Foster Census: R.M. Foster's Census of Connected Symmetric Trivalent Graphs", by Ronald M. Foster, I.Z. Bouwer, W.W. Chernoff, B. Monson and Z. Star (1988) ISBN 0919611192

66

Grafo simétrico

Ligações externas • grafos cúbicos simétricos (The Foster Census) (http://people.csse.uwa.edu.au/gordon/remote/foster/) • grafos trivalentes (cúbicos) simétricos com até 2048 vértices (http://www.math.auckland.ac.nz/~conder/ symmcubic2048list.txt)

67

Grafo meio-transitivo

68

Grafo meio-transitivo Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo meio-transitivo é um grafo que é tanto vértice-transitivo quanto aresta-transitivo, mas não é simétrico.[] Em outras palavras, um grafo é meio-transitivo, se o seu grupo de automorfismo atua transitivamente em ambos os seus vértices e arestas, mas não em pares ordenados de vértices ligados. Todo grafo simétrico conectado deve ser vértice-transitivo e aresta-transitivo, e o inverso é verdadeiro para grafos de grau ímpar,[] de modo que os grafos meio-transitivos de grau ímpar não existem. Contudo, existem grafos meio-transitivos de grau par.[1] O menor grafo meio-transitivo é o grafo de Holt, com grau 4 e 27 vértices.[][2] [1] Bouwer, Z. "Vertex and Edge Transitive, But Not 1-Transitive Graphs." Canad. Math. Bull. 13, 231–237, 1970. [2] .

O grafo de Holt é o menor grafo meio-transitivo. A falta de simetria reflexiva neste desenho destaca o fato de que as arestas não são equivalentes aos suas inversas.

Grafo semissimétrico

69

Grafo semissimétrico

O grafo de Folkman, o menor grafo semissimétrico.

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo semissimétrico é um grafo não-direcionado que é aresta-transitivo e regular, mas não é vértice transitivo. Em outras palavras, um grafo é semissimétrico se cada vértice tem o mesmo número de arestas incidentes, e há uma simetria tomando qualquer das suas arestas para quaisquer outras de suas arestas, mas há algum par de vértices que não podem ser mapeados entre si por uma simetria. Um grafo semissimétrico deve ser bipartido e seu grupo de automorfismo deve agir transitivamente em cada um dos dois conjuntos de vértices da bipartição. No diagrama da direita, os vértices verdes não podem ser mapeados para os vermelhos por qualquer automorfismo. Grafos semissimétricos foram primeiramente estudados por Jon Folkman em 1967, que descobriu o menor grafo semissimétrico, o grafo de Folkman em 20 vértices[1]. O menor grafo cúbico semissimétrico é o grafo de Gray em 54 vértices. Foi observado pela primeira vez que era semissimétrico por Bouwer em 1968.[] Foi provado ser o menor grafo cúbico semissimétrico por Dragan Marušič e Aleksander Malnič[] . Todos os grafos cúbicos semissimétricos de até 768 vértices são conhecidos. Segundo Malnič, Marušič e Potočnik, os quatro menores grafos cúbicos semissimétricos possíveis, após o grafo de Gray são o grafo de Iofinova-Ivanov em 110 vértices, o grafo de Ljubljana em 112 vértices,[] um grafo de 120 vértices com cintura 8 e a gaiola-12 de Tutte.[2]

Grafo semissimétrico

70

[2] .

Grafo aresta-transitivo Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo aresta-transitivo é um grafo G tal que, dadas duas arestas e1 e e2 de G, há um automorfismo de G que mapeia e1 em e2.[] Em outras palavras, um grafo é aresta-transitivo, se o seu grupo de automorfismo atua transitivamente em suas arestas.

Exemplos e propriedades Grafos aresta-transitivos incluem qualquer grafo bipartido completo , e qualquer grafo simétrico, como os vértices e as arestas do cubo.[] Grafos simétricos são també vértice-transitivo (se eles são conectados), mas no geral grafos aresta-transitivos não precisam ser vértice-transitivos. O grafo Gray é um exemplo de um grafo que é aresta-transitivo, mas não vértice-transitivo. Todos estes grafos são bipartidos,[] e, portanto, podem ser coloridos, com apenas duas cores. Um grafo aresta-transitivo que també é regular, mas não vértice-transitivo, é chamado semi-simétrico. O grafo Gray mais uma vez dá um exemplo. O grafo Gray é aresta-transitivo e regular, mas não é vértice-transitivo.

Grafo vértice-transitivo

71

Grafo vértice-transitivo Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo vértice-transitivo é um grafo G tal que, dados quaisquer dois vértices v1 e v2 de G, existe algum automorfismo tal que

Em outras palavras, um grafo é vértice-transitivo se o seu grupo de automorfismo atua transitivamente em seus vértices.[1] Um grafo é vértice-transitivo se e somente se seu grafo complementar é, uma vez que as ações do grupo são idênticas. Todo grafo simétrico, sem vértices isolados é vértice-transitivo, e cada grafo vértice-transitivo é regular. No entanto, nem todos os grafos vértice-transitivos são simétricos (por exemplo, as arestas do tetraedro truncado), e nem todos os grafos regulares são vértice-transitivos (por exemplo, o grafo de Frucht).

Exemplos finitos Grafos vértice-transitivos finitos incluem os grafos simétricos (como o grafo de Petersen, o grafo de Heawood e os vértices e arestas dos sólidos platônicos). Os grafos de Cayley finitos (como ciclos de cubos conectados) também são vértice-transitivos, como o são os vértices e arestas dos sólidos de Arquimedes (embora apenas dois deles sejam simétricos).

Propriedades 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, ou o grafo também é aresta-transitivo, ou o grafo é um grafo de Cayley mínimo, então a conectividade de vértice também será igual a d.[3]

As arestas do tetraedro truncado formam um grafo vértice-transitivo (também um grafo de Cayley) que não é simétrico.

Grafo vértice-transitivo

Exemplos infinitos Grafos vértice-transitivos finitos incluem: • • • •

caminhos infinitos (infinitos em ambas as direções) árvores regulares infinitas, por exemplo o grafo de Cayley dos grupos livres grafos de Cayley infinitos o grafo de Rado

Dois grafos vértice-transitivos contáveis são chamados quase-isométricos se a razão de suas funções distância é delimitada a partir de baixo e de cima. Uma conjectura conhecida diz que todo grafo infinito vértice-transitivo é quase-isométrico a um grafo de Cayley. Um contra-exemplo foi proposto por Diestel e Leader.[4] Mais recentemente, Eskin, Fisher e Whyte confirmaram o contra-exemplo.[5]

Referências [3] (http:/ / www. cs. uchicago. edu/ files/ tr_authentic/ TR-94-10. ps)

72

Grafo de Cayley

73

Grafo de Cayley

O grafo de Cayley do grupo livre em dois geradores a e b

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

Em matemática, área da teoria dos grafos, um grafo de Cayley, também conhecido como grafo colorido de Cayley, diagrama de Cayley, diagrama de grupo, ou grupo colorido[] é um grafo que codifica a estrutura abstrata de um grupo. Sua definição é sugerida pelo teorema de Cayley (nomeado em honra a Arthur Cayley) e usa um conjunto de geradores específico, usualmente finito, para o grupo. É um instrumento central em combinatória e teoria geométrica de grupos.

Definição Suponha que

seja um grupo e

seja um conjunto de geradores. O grafo de Cayley

é um grafo

direcionado colorido construído como se segue[1] • A cada elemento de é atribuído um vértice: o conjunto de vértices • A cada gerador de é atribuída uma cor . • Para qualquer cor

os vértices correspondentes aos elementos

. Assim, o conjunto de arestas

consiste em pares da forma

de e

é identificado com são unidos por uma aresta de com

proporcionando a

cor. Na teoria geométrica de grupos, o conjunto

é geralmente assumido ser finito, simétrico, isto é

e não

contendo o elemento identidade do grupo. Neste caso, o grafo de Cayley incolor é um grafo comum: suas arestas não são orientadas e não contém laços se e somente se .

Grafo de Cayley

74

Exemplos • Suponha que

é 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. • Similarmente, se

é o grupo cíclico finito de ordem n e o conjunto S consiste de dois elementos, o

gerador padrão de G e o seu inverso, então o grafo de Cayley é o ciclo

.

• O grafo de Cayley do produto direto de grupos é o produto cartesiano dos grafos de Cayley correspondentes. Assim, o grafo de Cayley do grupo abeliano com o conjunto de geradores que consiste em quatro elementos é a grade no plano

, enquanto que para o produto direto

semelhantes o grafo de Cayley é a grade finita

com geradores

em um toro. • O grafo Cayley do grupo diedro D4 em dois geradores α e β é descrito à esquerda. As setas vermelhas representam a multiplicação à esquerda pelo elemento α. Uma vez que o elemento β é auto-inversível, as linhas azuis que representam a multiplicação à esquerda pelo elemento β são não direcionadas. Portanto, o grafo é misto: ele tem oito vértices, oito setas, e quatro arestas. A tabela Cayley do grupo D4 pode ser derivada a partir da apresentação do grupo

Ligações externas O grafo de Cayley do grupo diedro D4 em dois geradores α e β

• Diagramas Cayley [2] [2] http:/ / www. weddslist. com/ groups/ cayley-plat/ index. html

Grafo antissimétrico

75

Grafo antissimétrico

Um grafo antissimétrico.

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo antissimétrico é um grafo orientado que é isomórfico ao seu próprio grafo transposto, o grafo formado pela inversão de todas as suas arestas. O isomorfismo necessita ser uma involução sem nenhum ponto fixo. Grafos antissimétricos foram primeiramente introduzidos 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 algoritmos para encontrar acoplamentos em grafos, em testes se um padrão still life no jogo da vida, desenvolvido pelo matemático britânico John Horton Conway, pode ser dividido em componentes mais simples, em desenho de grafos, e em grafos de implicação usados para resolver eficientemente o problema da 2-satisfatibilidade.

Grafo antissimétrico

Definição Conforme definido, por exemplo, por Goldberg e Karzanov (1996)[], um grafo antissimétrico G é um grafo direcionado, junto com uma função σ mapeando vértices de G a outros vértices de G, satisfazendo as seguintes propriedades: 1. Para cada vértice v, σ(v) ≠ v 2. Para cada vértice v, σ(σ(v)) = v 3. Para cada aresta (u,v), (σ(v),σ(u)) também deve ser uma aresta. Pode-se usar a terceira propriedade para estender σ para uma função de inversão de orientação das arestas de G. 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 isomorfismo forme pares de cada vértice com um vértice diferente, ao invés de permitir a um vértice ser mapeado para si pelo isomorfismo ou agrupar mais de dois vértices em um ciclo de isomorfismos. Um caminho ou um ciclo em um grafo anti-simétrico é dito ser regular se, para cada vértice v do caminho ou do ciclo, o vértice correspondente σ(v) não faz parte do caminho ou do ciclo.

Grafos switch e grafos bipartidos um grafo anti-simétrico pode de forma equivalente ser definido em termos de um grafo switch (para usar a terminologia de Cook, 2003[2]), um grafo não direcionado em 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 antissimétrico. Esta equivalência é a utilizada por Goldberg e Karzanov (1996)[] para modelar problemas de acoplamento 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 visualiza 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 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[3] 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[4], 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. [4] . Reimpresso em Combinatorial Optimization — Eureka, You Shrink!, Springer-Verlag, Lecture Notes in Computer Science 2570, 2003, pp. 27–30, DOI:10.1007/3-540-36478-1 3.

76

Grafo assimétrico

77

Grafo assimétrico

Os 8 grafos assimétricos de 6-vértices

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

Famílias de grafos definidos por seus automorfismos distância-transitivo

distância-regular

simétrico (arco-transitivo)

t-transitivo, t ≥ 2

fortemente regular

(se conectado)

transitivo nos vértices e nas arestas

aresta-transitivo e regular

vértice-transitivo

regular

grafo de Cayley

anti-simétrico

aresta-transitivo

assimétrico

No campo da matemática da teoria dos grafos, um grafo não direcionado é chamado um grafo assimétrico se não tiver simetrias não triviais. Formalmente, um automorfismo de um grafo é uma permutação p de seus vértices com a propriedade que quaisquer dois vértices u e v são adjacentes se e somente se p(u) e p(v) são adjacentes. O mapeamento identidade de um grafo em si é sempre um automorfismo, e é chamado de automorfismo trivial do grafo. Um grafo assimétrico é um grafo para os quais não existem outros automorfismos.

Grafo assimétrico

Exemplos O menor grafo não trivial assimétrico tem 6 vértices[1] O menor grafo regular assimétrico têm dez vértices; existem grafos assimétricos de dez vértices são 4-regulares e 5-regulares[2][3]. O menor grafo cúbico assimétrico é o grafo de Frucht de doze vértices descoberto em 1939.[] De acordo com uma versão reforçada do teorema de Frucht, há infinitamente mais grafos cúbicos assimétricos.

Propriedades A classe de grafos assimétrica é fechada em complementos: um grafo G é assimétrico se e somente 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]

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 é informalmente expressado como "quase todos grafos finitos são assimétricos". Em contraste, uma vez mais informalmente, "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 probabilidade 1, isomórficos ao altamente simétrico grafo Rado.[1]

Á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[4] Em contraste com a situação dos grafos, quase todas as árvores são simétricas. Em particular, se uma árvore é escolhida de forma uniforme aleatoriamente 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] [1] [2] [3] [4]

. . . .

78

79

Algoritmos em Grafos Busca em largura Na teoria dos grafos, busca em largura (ou busca em amplitude, também conhecido em inglês por Breadth-First Search (BFS)) é um algoritmo de busca em grafos utilizado para realizar uma busca ou travessia num grafo e estrutura de dados do tipo árvore. Intuitivamente, você começa pelo vértice raiz e explora todos os vértices vizinhos. Então, para cada um desses vértices mais próximos, exploramos os seus vértices vizinhos inexplorados e assim por diante, até que ele encontre o alvo da busca.

Ordem dos vértices explorados na busca em largura

Definição Formalmente, uma busca em largura é um método de 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, podemos dizer que o algoritmo realiza uma busca exaustiva num grafo passando por todas as arestas e vértices do grafo. Sendo assim, o algoritmo deve garantir que nenhum vértice ou aresta será visitado mais de uma vez e, para isso, utiliza uma estrutura de dados fila para garantir a ordem de chegada dos vértices. Dessa maneira, as visitas aos vértices são realizadas através da ordem de chegada na estrutura fila e um vértice que já foi marcado não pode retornar a esta estrutura.

Percurso realizado pelo algoritmo

Uma analogia muito conhecida (figura ao lado) para demonstrar o funcionamento do algoritmo é pintando os vértices de branco, cinza e preto. Os vértices na cor branca ainda não foram marcados e nem infileirados, os da cor cinza são os vértices que estão na estrutura fila e os pretos são aqueles que já tiveram todos os seus vértices vizinhos infileirados e marcados pelo algoritmo. Tal mecanismo permite que se descubra todos os vértices a uma distância n do vértice raiz antes de qualquer outro vértice de distancia n+a com a≥1, sendo n o número de arestas para atingir qualquer outro vértice no grafo considerado. Essa característica do algoritmo permite construir uma árvore de distâncias mínimas (menor número de arestas) entre o vértice raiz e os demais, sendo que o vértice responsável por infileirar o seu vizinho na cor branca

Busca em largura

80

que será o vértice pai deste na representação em árvore gerada.

Características Complexidade de Tempo Considerando um grafo representado em listas de adjacência, o pior caso, aquele em que todos os vértices e arestas são explorados pelo algoritmo, a complexidade de tempo pode ser representada pela seguinte expressão , onde significa o tempo total gasto nas operações sobre todas as arestas do grafo onde cada operação requer um tempo constante

sobre uma aresta, e

todos os vértices que possui uma complexidade constante

que significa o número de operações sobre para cada vértice uma vez que todo vértice é

enfileirado e desinfileirado uma unica vez.

Complexidade de Espaço Quando o número de vértices no grafo é conhecido e supondo-se a representação deste em listas de adjacência, a complexidade de espaço do algoritmo pode ser representada por onde representa o número total de vértices no grafo.

Pseudocódigo A seguir é apresentado um pseudocódigo do algoritmo busca em largura para uma estrutura de dados grafo com lista de adjacência. A letra F representa uma fila (FIFO) inicialmente vazia, G é o grafo em questão e s, v, w representam vértices do grafo onde listaDeAdjacência representa a lista de adjacência de um vértice. BuscaEmLargura escolha uma raiz s de G marque s insira s em F enquanto F não está vazia faça seja v o primeiro vértice de F para cada w ∈ listaDeAdjacência 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 enquanto

Busca em largura

81

Exemplo 1 Seguindo os passos do pseudocódigo acima e iniciando no vértice 6 da figura ao lado, o algoritmo estará com a sequência de vértices marcados e a fila assim:

Grafo exemplo 1

Vértices Vértices Vértices Vértices Vértices Vértices Vértices Vértices Vértices Vértices Vértices Vértices Vértices

Marcados= Marcados= Marcados= Marcados= Marcados= Marcados= Marcados= Marcados= Marcados= Marcados= Marcados= Marcados= Marcados=

∅; Fila(F)=∅. 6; Fila(F)=6. 6,4; Fila(F)=6,4. 6,4; Fila(F)=4. 6,4,5; Fila(F)=4,5. 6,4,5,3; Fila(F)=4,5,3. 6,4,5,3; Fila(F)=5,3. 6,4,5,3,1; Fila(F)=5,3,1. 6,4,5,3,1,2; Fila(F)=5,3,1,2. 6,4,5,3,1,2; Fila(F)=3,1,2. 6,4,5,3,1,2; Fila(F)=1,2. 6,4,5,3,1,2; Fila(F)=2. 6,4,5,3,1,2; Fila(F)=∅.

Exemplo 2 Aplicando o pseudocódigo nesse grafo de cidades alemãs e iniciando o algoritmo na cidade de Frankfurt, repare que para montar a arvore da figura foi necessário gravar na figura apenas as arestas que são processadas na primeira condição "se" do pseudocódigo (se w não está marcado então). Caso as arestas desse exemplo não fossem valoradas (como no primeiro exemplo) ficaria fácil encontrar a distância para o vértice raiz com o algoritmo busca em largura, mas, para o grafo deste exemplo (que são valoradas) pesquise por Algoritmo de Dijkstra para encontrar o menor caminho de um vértice a outro.

Busca em largura

82

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

Árvore gerada em um algoritmo BFS começando em Frankfurt.

C int BuscaEmLargura(Grafo *G, Fila *F, int raiz) { int *verticesMarcados = (int*)malloc(G->NumVertices * sizeof(int));//vetor de vertices marcados int tamVerticesMarcados= 0; int vertice1; no_lista *p;

Busca em largura

83

verticesMarcados[0] = raiz;//marca raiz tamVerticesMarcados++; PoeVerticeNaFila(F , raiz); //poe raiz na fila while(!FilaVazia(F))//enquanto a fila nao esta vazia { vertice1 = F->ini->vertice;//vertice que esta no inicio da fila p = G->Ladj[vertice1-1].inicio;// Ladj = lista de adjacencia de vertice1 while(p!=NULL)//enquanto a lista de adjacencia do vertice1 nao acaba { if(!BuscaVertice(p->vertice, verticesMarcados, tamVerticesMarcados))//busca p->vertice no vetor verticesMarcados { verticesMarcados[tamVerticesMarcados++] = p->vertice;//marcou p->vertice PoeVerticeNaFila(F , p->vertice);//poe p->vertice na fila //arestas que compoem arvore geradora mínima, aresta (vertice1, p->vertice) } else if(WPertenceF(p->vertice, F))//se p->vertice pertence a F { //arestas (vertice1, p->vertice) que não compoem árvore geradora mínima } p = p->prox; } RetiraVerticeFila(F); } return 0; }

Exemplo de Implementação em Object Pascal program Busca_em_largura; {$APPTYPE CONSOLE} uses SysUtils; var

Busca em largura vListaNos : array[1..8] of char; function NoEsquerdo(pNoAtual: Integer): integer; begin result := (2 * pNoAtual); end; function NoDireito(pNoAtual: Integer): integer; begin result := (2 * 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 vListaNos[NoEsquerdo(vLoop)] = Alvo then begin vAchou := true; Result := NoEsquerdo(vLoop); end else if vListaNos[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'; { / / } vListaNos[7] := 'E'; { P 8 } vListaNos[8] := 'P'; // Pesquisa por elementos na árvore…

84

Busca em largura Writeln('A 'J'))); Writeln('A 'B'))); Writeln('A 'R'))); Writeln('A 'P'))); Writeln('A 'Y'))); Writeln('A 'E'))); Writeln('A 'Q'))); Readln; end.

85 letra "J" esta no no numero: '+ IntToStr(busca_Largura(2, letra "B" esta no no numero: '+ IntToStr(busca_Largura(1, letra "R" esta no no numero: '+ IntToStr(busca_Largura(1, letra "P" esta no no numero: '+ IntToStr(busca_Largura(4, letra "Y" esta no no numero: '+ IntToStr(busca_Largura(1, letra "E" esta no no numero: '+ IntToStr(busca_Largura(1, letra "Q" esta no no numero: '+ IntToStr(busca_Largura(1,

Usos e extensões • • • •

Achar componentes conectados Achar todos os nódulos contectado a apenas um componente Achar o menor caminho entre um nó raiz e os outros nós do grafo Testar bipartição em grafos

O conjunto de nós alcançados pela busca em largura são os maiores componentes conectados que contém o nó inicial. Se não houver arestas nos nós adjacentes numa mesma camada de busca, então o grafo deve conter um número ímpar de ciclos e não ser bipartido.

Busca em profundidade

86

Busca em profundidade Busca em profundidade (ou busca em profundidade-primeiro, também usada a sigla em inglês DFS) é um algoritmo usado para realizar uma busca ou travessia numa árvore, estrutura de árvore ou grafo. Intuitivamente, o algoritmo começa 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).

Ordem dos vértices explorados na busca em profundidade

Definição Formal Formalmente, um algoritmo de busca em profundidade realiza uma busca não-informada que progride através da expansão do primeiro nó filho da árvore de busca, e se aprofunda cada vez mais, até que o alvo da busca seja encontrado ou até que ele se depare com um nó que não possui filhos (nó folha). Então a busca retrocede (backtrack) e começa no próximo nó. Numa implementação não-recursiva, todos os nós expandidos recentemente são adicionados a uma pilha, para realizar a exploração. A complexidade espacial de um algoritmo de busca em profundidade é muito menor que a de um algoritmo de busca em largura. A complexidade temporal de ambos algoritmos são proporcionais ao número de vértices somados ao número de arestas dos grafos aos quais eles atravessam.

Representação visual de uma busca em profundidade

Quando ocorrem buscas em grafos muito grandes, que não podem ser armazenadas completamente na memória, a busca em profundidade não termina, em casos onde o comprimento de um caminho numa árvore de busca é infinito. O simples artifício de “ lembrar quais nós já foram visitados ” não funciona, porque pode não haver memória suficiente. Isso pode ser resolvido estabelecendo-se um limite de aumento na profundidade da árvore.

Busca em profundidade

87

Exemplo Para o grafo ao lado, uma busca em profundidade começ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 previamente 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, 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. O aprofundamento iterativo previne esse looping, alcançando os seguintes nós, nas seguintes profundidades, assumindo-se que ele prossiga da esquerda para a direita, como mostrado abaixo:

Exemplo Busca em profundidade gráfico transversal

• 0: A • 1: A (repetido), B, C, E (Perceba que o aprofundamento iterativo agora enxergou C, ao passo que uma busca em profundidade convencional não enxergaria.) • 2: A, B, D, F, C, G, E, F (Perceba que a busca ainda enxerga C, mas que ele vem depois. Perceba também que ele enxerga E via diferentes caminhos, e passa duas vezes pelo F .) • 3: A, B, D, F, E, C, G, E, F, B Para esse grafo, quanto maior for a profundidade aplicada, os dois ciclos “ABFE” e “AEFB” simplesmente ficarão maiores, antes que o algoritmo desista e tente outro ramo.

Aplicações • • • •

Achar componentes conectados Achar componentes fortemente conectados Ordenação topológica Resolução de quebra-cabeças como labirinto

Pseudocódigo function Busca_Profundidade(Inicio, Alvo) empilha(Pilha,Inicio) while Pilha is not empty var Nodo := desempilha(Pilha) Colore(Nodo, Cinza) if Nodo = Alvo return Nodo for Filho in Expande(Nodo) if Filho.cor = Branco empilha(Pilha, Filho) Colore(Nodo, Preto)

Caminho

88

Caminho Em teoria de grafos, um caminho em um grafo é uma 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 primeiro vértice é chamado de vértice inicial e o último é chamado de vértice final.

Definição matemática Matematicamente: Seja G um grafo. Um caminho em G é uma sequência de vértices de G, digamos

({vi1, vj1} , . . ., {vir, vjr}) tal que

vja = via+1, para todo 1 ≤ a ≤ r − 1.

Tipos de caminhos Um ciclo de comprimento r é um caminho constituído por r + 1 vértices, onde o primeiro vértice é igual ao último. Note que a escolha do vértice inicial em um ciclo é arbitrária. Um caminho sem vértices repetidos é chamado de caminho simples e um ciclo sem vértices repetidos com exceção do inicial/final é um ciclo simples. Por vezes o termo "simples" é omitido de "caminho simples" e "ciclo simples", embora essa não seja a regra. Um ciclo simples que envolva todos os vértices de um grafo é chamado de caminho hamiltoniano. Um grafo é dito conexo se para quaisquer dois vértices existe um caminho que começa num vértice e termina no outro.

Referências • Bondy, J. A.; Murty, U. S. R. (1976). Graph Theory with Applications. North Holland. pp. 12–21. ISBN 0-444-19451-7. • Diestel, Reinhard (2005). Graph Theory [1] (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. Cambridge University Press. pp. 5–6. ISBN 0-521-28881-9. • Korte, Bernhard; Lovász, László; Prömel, Hans Jürgen; Schrijver, Alexander (Eds.) (1990). Paths, Flows, and VLSI-Layout. Algorithms and Combinatorics 9, Springer-Verlag. ISBN 0-387-52685-4.

Referências [1] http:/ / www. math. uni-hamburg. de/ home/ diestel/ books/ graph. theory/

Caminho euleriano

89

Caminho euleriano Um Caminho Euleriano é um caminho em um grafo que visita cada aresta apenas uma vez. Com caso especial, um Circuito Euleriano é um caminho Euleriano que começa e termina no mesmo vértice. O conceito foi introduzido por Leonard Euler para a resolução do famoso problema das sete pontes de Königsberg em 1736. Grafos que possuem um circuito Euleriano são chamados Grafos Eulerianos. Uma das principais condições para um grafo ser Euleriano é que todos os vértices precisam ser de grau par. Esta condição é também suficiente. Euler provou que uma condição necessária para a existência de circuitos eulerianos é de que todos os vértices tenham grau par, e afirmou, sem prova de que grafos conexos com todos os vértices pares tem um circuito Euleriano. A primeira prova completa desta última afirmação foi publicada em 1873 por Carl Hierholzer.[1]

O grafo das pontes de Königsberg. Este grafo não é Euleriano, portanto, uma solução não existe.

Há, ainda, grafos com caminhos Eulerianos se houver 2 vértices de grau ímpar. Nesse caso, ao se acrescentar uma aresta ligando estes dois vértices, o novo grafo passa a ser Euleriano. Pode-se assim enunciar um corolário do Teorema de Euler 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 caminho deve passar uma vez em cada vértice.

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.

Referências

Caminho hamiltoniano

90

Caminho hamiltoniano Um caminho hamiltoniano é um caminho que permite passar por todos os vértices de um grafo G, não repetindo nenhum, ou, seja, passar por todos uma e uma só vez por cada. Caso esse caminho seja possível descrever um ciclo, este é denominado ciclo hamiltoniano (ou circuito hamiltoniano) em G. E, um grafo que possua tal circuito é chamado de grafo hamiltoniano. O caminho vermelho é hamiltoniano. O problema de decidir se um dado grafo é hamiltoniano é completo em NP, o que significa que é pouco provável que exista um algoritmo polinomial para o problema. Outro objetivo provavelmente ambicioso demais: mostrar que o problema está em co-NP, ou seja, obter uma boa condição necessária e suficiente para existência de 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 algoritmo, que historicamente costuma ter um custo de tempo de computação exponencial.

Definições Um caminho Hamiltoniano ou caminho rastreável é um caminho que visita cada vértice exatamente uma vez. Um 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 Hamiltoniano entre os dois vértices. Um ciclo Hamiltoniano, circuito Hamiltoniano, passeio em vértices ou grafo ciclo é um ciclo que visita cada vértice exatamente uma vez (exceto o vértice que é tanto o início quanto o fim, e portanto é visitado duas vezes). Um grafo que contémum ciclo Hamiltoniano é chamado de grafo Hamiltoniano. Noções semelhantes podem ser definidas para grafos orientados, 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 atravessadas "da cauda para a ponta").

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

Uma decomposição Hamiltoniana é uma decomposição de arestas de um grafo em circuitos Hamiltonianos.

Caminho hamiltoniano

91

Exemplos • Um grafo completo com mais de dois vértices é Hamiltoniano • 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 ciclo Hamiltoniano em um dodecaedro. Como todos os sólidos platônicos, o dodecaedro é Hamiltoniano.

Propriedades Qualquer ciclo hamiltoniano pode ser convertido para um caminho Hamiltoniano, removendo-se uma de suas arestas, mas um caminho Hamiltoniano só pode ser estendido para um ciclo hamiltoniano se suas extremidades são adjacentes. O grafo linha de um grafo Hamiltoniano é Hamiltoniano. O grafo linha de um grafo Euleriano é Hamiltoniano. Um torneio (com mais de 2 vértices) é Hamiltoniano se e somente se ele é fortemente conectado. Um ciclo Hamiltoniano pode ser usado como base de uma prova com zero conhecimentos. Número de diferentes ciclos hamiltonianos para um grafo completo = (n-1)! / 2.

Um caminho hamiltoniano no grafo de Mycielski.

Número de diferentes ciclos hamiltonianos para um grafo orientado completo = (n-1)!. [1] Computador feito com bactérias resolve problemas matemáticos (http:/ / tecnologia. terra. com. br/ interna/ 0,,OI3896704-EI4801,00-Computador+ feito+ com+ bacterias+ resolve+ problemas+ matematicos. html) Terra Tecnologia, acessado em 31 de julho de 2009

Ligações externas • Solução do problema utilizando bactérias (http://tecnologia.terra.com.br/interna/ 0,,OI3896704-EI4801,00-Computador+feito+com+bacterias+resolve+problemas+matematicos.html)

Ordenação topológica

92

Ordenação topológica Em teoria dos grafos, uma ordenação topológica de um digrafo acíclico (DAG) é uma ordem linear de seus nós em que cada nó vem antes de todos nós para os quais este tenha arestas de saída. Cada DAG tem uma ou mais ordenações topológicas. Mais formalmente, define-se a relação acessibilidade R sobre os nós do DAG tal que xRy se e somente se existe um caminho dirigido de x para y. Então, R é uma ordem parcial, e uma ordenação topológica é uma extensão linear desta ordem parcial, isto é, uma ordem total compatível com a ordem parcial.

Exemplos A aplicação canônica da ordenação topológica (ordem topológica) está na programação de uma seqüência de trabalhos ou tarefas; tem uso potencial todas as vezes em que o problema abordado envolve uma ordem parcial[1]; algoritmos de ordenação topológica começaram a ser estudados no início dos anos 1960 no contexto da técnica PERT para a agendamento de tarefas em gerenciamento de projetos.[2] Os trabalhos são representados por vértices, e existe uma aresta de x para y se o trabalho x deve estar concluído antes do trabalho y poder ser iniciado (por exemplo, ao lavar roupas, a máquina de lavar deve terminar antes de se poder colocar as roupas para secar). Em seguida, uma ordenação topológica dá uma ordem na qual se possa realizar os trabalhos. Em informática, as aplicações deste tipo surgem em agendamentos de instruções, ordenação de fórmulas de avaliação de células quando recalculando os valores de fórmulas em planilhas, síntese lógica, determinação da ordem das tarefas de compilação para executar em arquivos "make", e resolução de dependências de símbolos em ligadores. O grafo mostrado à esquerda tem muitas ordenações topológicas, incluindo: • •

7, 5, 3, 11, 8, 2, 9, 10 (visual esquerda-para-direita, de-cima-para-baixo) 3, 5, 7, 8, 11, 2, 9, 10 (vértice de menor número disponível primeiro)

• •

3, 7, 8, 5, 11, 10, 2, 9 5, 7, 3, 8, 11, 10, 9, 2 (menor número de arestas primeirofirst)

• •

7, 5, 11, 3, 10, 8, 9, 2 (vértice de maior número disponível primeiro) 7, 5, 11, 2, 3, 8, 9, 10

Algoritmos 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|)). Um desses algoritmos, descrito pela primeira vez por Kahn[3], trabalha escolhendo vértices na mesma ordem da eventual ordenação topológica. Primeiro, encontra uma lista de nós "íniciais", que não tem arestas de entrada e 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 ← Conjunto de todos os nós sem arestas de entrada enquanto S é não-vazio faça remova um nodo n de S insira n em L

Ordenação topológica 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 arestas então escrever mensagem de erro (grafo tem pelo menos um ciclo) senão escrever mensagem (ordenação topológica proposta: L) Se o grafo é um digrafo acíclico (DAG), a solução está contida na lista L (a solução não é única). Caso contrário, o grafo tem pelo menos um ciclo e, portanto, uma ordenação topológica é impossível. Note-se que, reflectindo a não-exclusividade da ordenação resultante, a estrutura S pode ser simplesmente um conjunto ou uma fila ou uma pilha. Dependendo da ordem em que os nodos n são removidos do conjunto S, uma solução diferente é criada. Um algoritmo alternativo para a ordenação topológica é baseado em uma busca em profundidade. Para este algoritmo, as arestas apontam na direção oposta, como o algoritmo anterior (e no sentido oposto ao mostrado no diagrama na seção de exemplos acima). Existe uma aresta de x para y se a tarefa x depende da tarefa y (em outras palavras, se a tarefa y deve ser concluída antes da tarefa x poder ser iniciada). O algoritmo faz um loop através de cada nó do grafo, em uma ordem arbitrária, iniciando uma busca em profundidade que termina quando se atinge qualquer nó que já foi visto desde o início da ordenação topológica: L ← Lista vazia que irá conter os elementos ordenados S ← Conjunto de todos os nós sem arestas de entrada função visita(nodo n) se n não foi visitado ainda então marque n como visitado para cada nodo m com uma aresta de n para m faça visite(m) adicione n em L para cada nodo n em S faça visite(n) Note que cada nodo n é adicionado à lista de saída L somente após considerar todos os outros nodos dos quais n depende (todos os nodos descendentes de n no grafo). Especificamente, quando o algoritmo acrescenta o nodo n, temos a garantia que todos os nodos dos quais n depende já estão na lista de saída L: eles foram adicionados a L tanto pela chamada recursiva anterior à visite(), ou por uma chamada anterior à visite(). Uma vez que cada aresta e nodo é visitado uma vez, o algoritmo executa em tempo linear. Note que o simples pseudocódigo acima não consegue detectar o caso de erro, onde o grafo de entrada contém ciclos. O algoritmo pode ser refinado para detectar os ciclos, observando nodos que são visitados mais de uma vez durante toda a seqüência de chamadas recursivas aninhadas à visite() (por exemplo, passar uma lista adiante como um argumento extra para visite(), indicando que nodos já foram visitados na pilha de chamada corrente). Este algoritmo de busca em profundidade é o descrito por Cormen, Leiserson, Rivest e Stein[4]; parece ter sido descrito pela primeira vez em artigo por Tarjan[5]

93

Ordenação topológica

94

Unicidade Se uma ordenação topológica tem a propriedade de todos os pares de vértices consecutivos na ordem de classificação serem conectados por arestas, essas arestas formam um caminho hamiltoniano dirigido no DAG. Se existe um caminho Hamiltoniano, a ordenação topológica é única, nenhuma outra ordem respeita as arestas caminho. Inversamente, se uma ordenação topológica não formar um caminho Hamiltoniano, o DAG terá duas ou mais ordenações topológicas válidas, porque neste caso, é sempre possível formar-se uma segunda ordenação válida ao se trocar dois vértices consecutivos, que não são ligados por uma aresta, uns com os outros. Portanto, é possível testar em tempo polinomial se existe uma única ordenação, e se existe um caminho hamiltoniano, apesar da característica NP-hard do problema do caminho hamiltoniano para grafos dirigidos mais gerais[6]

Ligações externas • Dicionário (NIST) de Algoritmos e Estruturas de Dados: ordenação topológica [7] [2] [3] [5] [6] [7]

. *. . . http:/ / www. nist. gov/ dads/ HTML/ topologicalSort. html

Algoritmo de Bellman-Ford O Algoritmo de Bellman-Ford é um algoritmo de busca de caminho mínimo em um dígrafo ponderado, ou seja, cujas arestas têm peso, inclusive negativo. O Algoritmo de Dijkstra resolve o mesmo problema, em um tempo menor, porém exige que todas as arestas tenham pesos positivos. Portanto, o algoritmo de Bellman-Ford é normalmente usado apenas quando existem arestas de peso negativo. O algoritmo de Bellman-Ford executa em tempo

onde v é o número de vértices e a o número de arestas.

Pseudocódigo função BellmanFord(lista vértices, lista arestas, vértice origem) // Esta implementação recebe um grafo representado como uma // lista de vértices e arestas e modifica os vértices para // que que seus atributos distância e anterior armazenem // os caminhos mais curtos. // Passo 1: Inicializar o grafo para cada vértice v em vértices faça: se v é origem então: v.distância = 0 senão: v.distância := infinito v.anterior := nulo // Passo 2: Ajustar as arestas repetidamente repita tamanho (vértices) vezes: para cada aresta uv em arestas faça: u := uv.origem

Algoritmo de Bellman-Ford v := uv.destino // uv é a aresta de u para v se v.distância > u.distância + uv.peso então: v.distância := u.distância + uv.peso v.anterior := u // Passo 3: Verificar a existência de ciclos com peso negativo para cada aresta uv em arestas faça: u := uv.origem v := uv.destino se v.distância < u.distância + uv.peso então: erro "O grafo contém um ciclo de peso negativo."

Código em C++ #include #define INFINITY 0x3f3f3f3f #define NODOS 1000

using namespace std;

typedef struct { int source; int dest; //destino int weight; //peso } Edge;

int distancia[NODOS];

void BellmanFord(Edge edges[], int edgecount, int nodecount, int source) { int i,j,trocou; for (i = 0; i < nodecount; i++) { distancia[i] = INFINITY; } distancia[source]=0; for (i = 0; i < nodecount; i++) { trocou = 0; for (j = 0; j < edgecount; j++) { if (distancia[edges[j].dest] > distancia[edges[j].source] + edges[j].weight) { distancia[edges[j].dest] = distancia[edges[j].source] + edges[j].weight; trocou=1; } } // se nenhuma iteração teve efeito, futuras iterações estão dispensadas

95

Algoritmo de Bellman-Ford

96

if (trocou==0) break; } // usado somente para detectar ciclos negativos (dispensável) for (i = 0; i < edgecount; i++) { if (distancia[edges[i].dest] > distancia[edges[i].source] + edges[i].weight) { cout << "Ciclo negativo de pesos de arestas detectado" << endl; break; } } for (i = 0; i < nodecount; i++) { cout << "A distancia mais curta entre os nodos " << source << " e " << i <<" eh " << distancia[i] << endl; } }

int main (void){ // Este caso de teste produzira as distancias entre o nodo 0 e os outros nodos Edge Arestas[10] = {{0, 1, 5},

{0,2, 8}, {0,3, -4}, {1,0, -2},

{2, 1, -3}, {2,3, 9}, {3,1, 7}, {3,4, 2}, {4,0, 6}, {4,2, 7}}; // BellmanFord(Estrutura, arestas, vertices,origem); BellmanFord(Arestas, 10, 5, 0); return 0; }

Algoritmo A*

Algoritmo A* Algoritmo A* (Lê-se: A-estrela) é um algoritmo para Busca de Caminho. Ele busca o caminho em um grafo de um vértice inicial até um vértice final. Ele é a combinação de aproximações heurísticas como do algoritmo Best-first Search e da formalidade do Algoritmo de Dijkstra. O algoritmo foi descrito pela primeira vez em 1968 por Peter Hart, Nils Nilsson, e Bertram Raphael. Na publicação deles, ele foi chamado de algoritmo A; usando este algoritmo com uma heurística apropriada atinge-se um comportamento ótimo, e passou a ser conhecido por A*. Sua aplicação vai desde aplicativos para encontrar rotas de deslocamento entre localidades a resolução de problemas, como a resolução de um quebra-cabeças. Ele é muito usado em jogos.

Algoritmo Sejam Q = conjunto de nós a serem pesquisados; S = o estado inicial da busca Faça: 1. 2. 3. 4. 5.

Inicialize Q com o nó de busca (S) como única entrada; Se Q está vazio, interrompa. Se não, escolha o melhor elemento de Q; Se o estado (n) é um objetivo, retorne n; (De outro modo) Remova n de Q; Encontre os descendentes do estado (n) que não estão em visitados e crie todas as extensões de n para cada descendente; 6. Adicione os caminhos estendidos a Q e vá ao passo 2; caminhos expandidos; Uma estimativa que sempre subestima o comprimento real do caminho ate o objetivo é chamada de admissível. O uso de uma estimativa admissível garante que a busca de custo-uniforme ainda encontrará o menor caminho.

Ligações externas • (em português) A* Pathfinding para Iniciantes [1] • (em português) Projeto de Pesquisa de Algoritmos de Busca [2] • (em inglês) Amit's A* Pages -- Path finding [3] Texto bastante completo sobre busca de caminhos (Path finding) usando o Algoritmo A*

Referências [1] http:/ / www. policyalmanac. org/ games/ aStarTutorial_port. htm [2] http:/ / www2. dc. uel. br/ ~rarosa/ pixel/ path. html [3] http:/ / theory. stanford. edu/ ~amitp/ GameProgramming/

97

Algoritmo de Floyd-Warshall

98

Algoritmo de Floyd-Warshall Na ciência da computação, o algoritmo de Floyd-Warshall (às vezes chamado de algoritmo de Roy-Floyd ou algoritmo de Warshall) é um algoritmo que resolve o problema de calcular o caminho mais curto entre todos os pares de vértices em um grafo orientado (com direção) e valorado (com peso). Sua complexidade é cúbica.

Definição O algoritmo de Floyd-Warshall recebe como entrada uma matriz de adjacência que representa um grafo orientado e valorado. O valor de um caminho entre dois vértices é a soma dos valores de todas as arestas ao longo desse caminho. As arestas do grafo podem ter valores negativos, mas o grafo não pode conter nenhum ciclo de valor negativo. O algoritmo calcula, para cada par de vértices, o menor de todos os caminhos entre os vértices. Por exemplo, o caminho de menor custo. Sua ordem de complexidade é . O algoritmo se baseia nos passos abaixo: • Assumindo que os vértices de um grafo orientado ; • Para qualquer par de vértices

em

são

, considere todos os caminhos de

, considere um subconjunto a

cujos vértices intermediários

pertencem ao subconjunto , e como o mais curto de todos eles; • O algoritmo explora um relacionamento entre o caminho e os caminhos mais curtos de vértices intermediários em • O relacionamento depende de

; ser ou não um vértice intermediário do caminho

.

Abaixo segue uma implementação em pseudocódigo do algoritmo de Floyd-Warshall: ROTINA fw(Inteiro[1..n,1..n] grafo) # Inicialização VAR Inteiro[1..n,1..n] dist := grafo VAR Inteiro[1..n,1..n] pred PARA i DE 1 A n PARA j DE 1 A n SE dist[i,j] < Infinito ENTÃO pred[i,j] := i # Laço principal do algoritmo PARA k DE 1 A n PARA i DE 1 A n PARA j DE 1 A n SE dist[i,j] > dist[i,k] + dist[k,j] ENTÃO dist[i,j] = dist[i,k] + dist[k,j] pred[i,j] = pred[k,j] RETORNE dist

a

com todos os

Algoritmo de Floyd-Warshall

Aplicações O algoritmo de Floyd-Warshall pode ser utilizado para resolver os problemas abaixo: • Caminhos mais curtos em grafos orientados (algoritmo de Floyd). Para funcionar, os valores de todas as arestas são configurados para o mesmo número positivo. Esse número é normalmente escolhido como único, tanto é que o valor de um caminho coincide com o número de arestas ao longo desse caminho; • Proximidade transitiva de grafos orientados (algoritmo de Warshall). Na formulação original deste último, o grafo se torna desvalorado (perde valores) e é representado por uma matriz booleana de adjacência. Depois, a operação de soma é substituída por conjunção lógica (E) e a operação de subtração por disjunção lógica (OU); • Encontrar uma expressão regular denotando a linguagem regular aceita por um autômato finito (algoritmo de Kleene); • Inversões de matrizes de números reais (algoritmo de Gauss-Jordan); • Roteamento otimizado. Nesta aplicação, o interesse é encontrar o caminho com o máximo fluxo entre dois vértices. Isto significa que, em vez de calcular o mínimo no pseudocódigo acima, calcula-se o máximo. Os pesos das arestas representam constantes fixas de fluxo. Valores do caminho representam gargalos, logo a operação de soma acima é substituída pela operação de subtração; • Testar se um grafo não-orientado é bipartido.

Ligações externas • Uma implementação em Javascript está disponível em Alex Le's Blog [1] • Algoritmo de Floyd-Warshall em C++ [2]

Referências [1] http:/ / alexle. net/ stuff/ floyd-algorithm/ [2] http:/ / lampiao. ic. unicamp. br/ maratona/ ?name=implementa#toc15

99

Algoritmo de Johnson

100

Algoritmo de Johnson Algoritmo de Johnson classe

Algoritmo de busca

estrutura de dados

Grafo Algoritmos

Algoritmo de Johnson é uma forma de encontrar o menor caminho entre entre dois pontos. Ele permite que algumas bordas tenham número negativo, mas ciclos negativos não devem existir. Este algoritmo trabalha com base no Algoritmo de Bellman-Ford, para computar uma transformação de um grafo de entrada, que remove todas 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 descreve-lo, em 1977.

Descrição do algoritmo É formado pelos seguintes passos: 1. Primeiro, um novo nó q é adicionado ao grafo, conectado com peso zero (0) com cada um dos outros nós. 2. Segundo, é usado o algoritmo de Bellman–Ford, começando a partir do novo nó q, para encontrar cada um dos vértices v, o de menor peso h(v) do caminho de q para v. Se esse passo detectar um ciclo negativo, o algoritmo é terminado. 3. O próxima borda do grafo original é reponderada usando os valores calculados pelo algoritmo Bellman–Ford: uma borda de u para v, tendo comprimento w(u,v), é dada pelo novo comprimento w(u,v) + h(u) −h(v). 4. Finalmente, q é removido, e o algoritmo de Dijkstra é usado para encontrar o menor caminho para cada um dos nós s para todos os outros vértices no grafo reponderado.

Veja também algoritmo de Bellman-Ford Algoritmo de Dijkstra Problema do caminho mais curto Grafo

Ligações externas • Boost: All Pairs Shortest Paths [1]

Algoritmo de Johnson

Referências [1] http:/ / www. boost. org/ doc/ libs/ 1_40_0/ libs/ graph/ doc/ johnson_all_pairs_shortest. html

101

102

Algoritmos para obter a árvore de extensão mínima Algoritmo de Kruskal O algoritmo de Kruskal é um algoritmo em teoria dos grafos que busca uma árvore geradora mínima para um grafo conexo com pesos. Isto significa que ele encontra um subconjunto das arestas que forma uma árvore que inclui todos os vértices, onde o peso total, dado pela soma dos pesos das arestas da árvore, é minimizado. Se o grafo não for conexo, então ele encontra uma floresta geradora mínima (uma árvore geradora mínima para cada componente conexo do grafo). O algoritmo de Kruskal é um exemplo de um algoritmo guloso (também conhecido como ganancioso ou greedy). Seu funcionamento é mostrado a seguir: • crie uma floresta F (um conjunto de árvores), onde cada vértice no grafo é uma árvore separada • crie um conjunto S contendo todas as arestas do grafo • enquanto S for não-vazio, faça: • remova uma aresta com peso mínimo de S • se essa aresta conecta duas árvores diferentes, adicione-a à floresta, combinando duas árvores numa única árvore parcial • do contrário, descarte a aresta Ao fim do algoritmo, a floresta tem apenas um componente e forma uma árvore geradora mínima do grafo. Com o uso de uma estrutura de dados aceitável, o algoritmo de Kruskal pode ser demonstrado que executa em tempo O (m log n), onde m é o número de arestas e n o número de vértices.

Exemplo Grafo original a ser computado o algoritmo de Kruskal. Os números representam o peso nas arestas, e no momento não existe aresta selecionada.

As arestas AD e CE são as mais leves do grafo e ambas podem ser selecionadas. É escolhido ao acaso AD.

Agora a aresta CE é a mais leve. Já que ele não forma um laço com AD ela é selecionada.

Algoritmo de Kruskal

103 A próxima aresta é a DF com peso 6. Ela não forma um laço com as arestas já selecionadas então ela é selecionada.

Agora duas arestas com peso 7 podem ser selecionadas e uma é escolhida ao acaso. A aresta BD é marcada pois forma um laço com as outras arestas já selecionadas.

Agora a outra aresta de peso 7 é selecionada pois cobre todos os requisitos de seleção. Similarmente ao passo anterior, outras arestas são marcadas para não serem selecionadas, pois resultariam em um laço.

Para finalizar é selecionada a aresta EG com peso 9. FG é marcada. Já que agora todas as arestas disponíveis formariam um laço, chega-se ao final do algoritmo e a árvore geradora mínima é encontrada.

Algoritmo de Prim Na ciência da computação o algoritmo de Prim é um algoritmo guloso (greedy algorithm) empregado para encontrar uma árvore geradora mínima (minimal spanning tree) num grafo conectado, valorado e não direcionado. Isso significa que o algoritmo encontra um subgrafo do grafo original no qual a soma total das arestas é minimizada e todos os vértices estão interligados. O algoritmo foi desenvolvido em 1930 pelo matemático Vojtěch Jarník e depois pelo cientista da computação Robert C. Prim em 1957 e redescoberto por Edsger Dijkstra em 1959. Outros algoritmos conhecidos para encontrar árvores geradoras mínimas são o algoritmo de Kruskal e algoritmo de Boruvka. No entanto estes algoritmos podem ser empregados em grafos desconexos, enquanto o algoritmo de Prim precisa de um grafo conexo.

Algoritmo de Prim

104

Descrição O algoritmo de Prim encontra uma árvore geradora mínima para um grafo desde que ele seja valorado e não direcionado. Por exemplo, se na figura 1 os vértices deste grafo representassem cidades e as arestas fossem estradas de terra que interligassem estas cidades, como poderíamos determinar quais estradas asfaltar gastando a menor quantidade de asfalto possível para interligar todas as cidades. O algoritmo de Prim neste caso fornecerá uma resposta ótima para este problema que não necessariamente é única. A etapa f) da figura 1 demonstra como estas cidades devem ser conectadas com as arestas em negrito.

Algoritmo genérico Um algoritmo genérico para o algoritmo de Prim é dado da seguinte forma: Escolha um vértice S para iniciar o subgrafo enquanto há vértices que não estão no subgrafo selecione uma aresta segura insira a aresta segura e seu vértice no subgrafo

Figura 1: passo a passo da execução do algoritmo de Prim iniciado pelo vértice 0

Complexidade A complexidade do algoritmo de Prim pode mudar de acordo com a estrutura de dados utilizada para representar o grafo. As implementações mais comuns para um grafo são por listas de adjacência e por matrizes de adjacência e suas respectivas complexidades e no pior caso.

Exemplo de execução Repare neste exemplo de execução do algoritmo como as arestas são escolhidas para entrar no subgrafo. O conjunto V\U são os vértices que ainda não entraram no subgrafo, o conjunto U são os vértices que já estão no subgrafo, as arestas possíveis é uma lista de arestas que poderiam ser incluidas no subgrafo, pois conectam vértices contidos no subgrafo com os que ainda não estão e as arestas incluídas são aquelas que já estão no subgrafo. Dessa maneira e segundo o algoritmo genérico dado acima, para escolhermos uma aresta segura devemos observar o conjunto de arestas possíveis e selecionar aquelas que não formam ciclos com o subgrafo até entao formado e cujo peso é o mínimo possível naquele momento. Se uma aresta apresentar todos estes quesitos podemos considerá-la uma aresta segura.

Algoritmo de Prim

Imagem

105

Arestas incluídas no subgrafo

U

Arestas possíveis

V\U

Descrição

{}

{}

{A,B,C,D,E,F,G} Este é o grafo original. Os números próximos das arestas significam o seu peso.

{DA}

{D}

{D,A} = 5V {D,B}=9 {D,E}=15 {D,F}=6

{A,B,C,E,F,G}

O vértice D foi escolhido como ponto inicial do algoritmo. Vértices A, B, E e F estão conectados com D através de uma única aresta. A é o vértice mais próximo de D e, portanto a aresta AD será escolhida para formar o subgrafo.

{DA, DF}

{A,D}

{D,B}=9 {D,E}=15 {D,F}=6V {A,B}=7

{B,C,E,F,G}

O próximo vértice escolhido é o mais próximo de D ou A. B está a uma distância 9 de D, E numa distância 15 e F numa distância 6. E A está a uma distância de 7 de B. Logo devemos escolher a aresta DF, pois é o menor peso.

{DA, DF, AB}

{A,D,F}

{D,B}=9 {D,E}=15 {A,B}=7V {F,E}=8 {F,G}=11

{B,C,E,G}

Agora devemos escolher o vértice mais próximo dos vértices A, D ou F. A aresta em questão é a aresta AB.

{DA, DF, AB, BE}

{A,B,D,F}

{B,C}= 8 {B,E}=7V {D,B}=9ciclo {D,E}=15 {F,E}=8 {F,G}=11

{C,E,G}

Agora podemos escolher entre os vértices C, E, e G. C está a uma distância de 8 de B, E está a uma distância 7 de B e G está a 11 de F. E é o mais próximo do subgrafo e, portanto escolhemos a aresta BE.

{DA, DF, {A,B,D,E,F} AB, BE, EC}

{B,C}=8 {C,G} {D,B}=9ciclo {D,E}=15ciclo {E,C}=5V {E,G}=9 {F,E}=8 ciclo {F,G}=11

Restam somente os vértices C e G. C está a uma distância 5 de E e de G a E 9. C é escolhido, então a aresta EC entra no subgrafo construído.

{DA, DF, AB, BE, EC, EG}

{A,B,C,D,E,F}

{B,C}=8ciclo {G} {D,B}=9ciclo {D,E}=15ciclo {E,G}=9V {F,E}=8ciclo {F,G}=11

Agora só resta o vértice G. Ele está a uma distância de 11 de F, e 9 de E. E é o mais próximo, então G entra no subgrafo conectado pela aresta EG.

{DA, DF, AB, BE, EC, EG}

{A,B,C,D,E,F,G} {B,C}=8 ciclo {} {D,B}=9 ciclo {D,E}=15 ciclo {F,E}=8 ciclo {F,G}=11 ciclo

Aqui está o fim do algoritmo e o subgrafo formado pelas arestas em verde representam a árvore geradora mínima. Nesse caso esta árvore apresenta a soma de todas as suas arestas o número 39.

Algoritmo de Prim

Implementação em PHP $origem = array( 1 => 1,1,2,2,2,3,4,4,5); $destino = array( 1 => 2,3,3,4,5,5,6,5,6); $custo = array( 1 => 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:
"); for($i =1 ; $i <= count($origem) ; $i++) { echo utf8_decode("$origem[$i] $destino[$i] $custo[$i]
"); } // ------ Passo inicial // Seta os valores de T for($i =1 ; $i <= 6 ; $i++) { if($i == 1) { $t[$i] = $i; } else { $t[$i] = "nulo"; } } // Seta os valores de V for($i =1 ; $i <= 6 ; $i++) { if($i == 1) { $v[$i] = "nulo"; } else { $v[$i] = $i; } } echo utf8_decode("Início"); echo utf8_decode("
T: "); print_r($t); echo utf8_decode("
V: "); print_r($v); echo utf8_decode("
"); // ------ Fim do passo inicial $total_nos = count($origem);

106

Algoritmo de Prim for($x =1 ; $x <= ($nos-1) ; $x++) { // Verifica origem -> destino $minimo1 = $infinito; for($i =1 ; $i <= $narcos ; $i++) { for($j =1 ; $j <= $nos ; $j++) { if($origem[$i] == $t[$j]) { for($k =1 ; $k <= $nos ; $k++) { if($destino[$i] == $v[$k]) { if($custo[$i] < $minimo1) { $minimo1 = $custo[$i]; $aux1 = $i; } } } } } } // Verifica destino -> origem $minimo2 = $infinito; for($i =1 ; $i <= $narcos ; $i++) { for($j =1 ; $j <= $nos ; $j++) { if($destino[$i] == $t[$j]) { for($k =1 ; $k <= $nos ; $k++) { if($origem[$i] == $v[$k]) { if($custo[$i] < $minimo2) { $minimo2 = $custo[$i]; $aux2 = $i; } } } } } } if($minimo2 < $minimo1) { $cont = 1; $minimo = $minimo1; $aux = $aux1; echo utf8_decode("
Aresta ($origem[$aux],$destino[$aux]) escolhida de custo $custo[$aux]"); } else { $minimo = $minimo2; $aux = $aux2; echo utf8_decode("
Aresta ($destino[$aux],$origem[$aux])

107

Algoritmo de Prim escolhida de custo $custo[$aux]"); $cont = 2; } if($cont == 1) { $t[$destino[$aux]] = $destino[$aux]; $v[$destino[$aux]] = "nulo"; } else { $t[$origem[$aux]] = $origem[$aux]; $v[$origem[$aux]] = "nulo"; } echo utf8_decode("
".$x."° iteração"); echo utf8_decode("
T: "); print_r($t); echo utf8_decode("
V: "); print_r($v);}

Bibliografia • Cormen, Thomas; Stein, Clifford. Introduction to Algorithms (em inglês). 2 ed. [S.l.]: MIT Press and McGraw-Hill, 2001. Capítulo: 23, ISBN 0-262-03293-7

Ligações Externas • • • • •

Algoritmo de Prim (http://www.mincel.com/java/prim.html) Exemplo animado de um algoritmo de Prim (http://students.ceid.upatras.gr/~papagel/project/prim.htm) Demonstração em Python de uma árvore mínima (http://people.csail.mit.edu/rivest/programs.html) Implementção em Java do algoritmo de Prim (http://code.google.com/p/annas/) Implementação em C# do algoritmo de Prim (http://code.google.com/p/ngenerics/)

108

Algoritmo de Dijkstra

109

Algoritmo de Dijkstra Algoritmo de Dijkstra

classe

Algoritmo de busca

estrutura de dados

Grafo

complexidade pior caso Algoritmos

O algoritmo de Dijkstra, concebido pelo cientista da computação holandês Edsger Dijkstra em 1956 e publicado em 1959[][1], soluciona o problema do caminho mais curto num grafo dirigido ou não dirigido com arestas de peso não negativo, em tempo computacional O([m+n]log n) onde m é o número de arestas e n é o número de vértices. O algoritmo que serve para resolver o mesmo problema em um grafo com pesos negativos é o algoritmo de Bellman-Ford, que possui maior tempo de execução que o Dijkstra. O algoritmo de Dijkstra assemelha-se ao BFS, mas é um algoritmo guloso, ou seja, toma a decisão que parece ótima no momento. Para a teoria dos grafos uma "estratégia gulosa" é conveniente já que sendo P um menor caminho entre 2 vértices U e V, todo sub-caminho de P é um menor caminho entre 2 vértices pertencentes ao caminho P, desta forma construímos os melhores caminhos dos vértices alcançáveis pelo vértice inicial determinando todos os melhores caminhos intermediários. Nota: diz-se 'um menor caminho' pois caso existam 2 'menores caminhos' apenas um será descoberto. O algoritmo considera um conjunto S de menores caminhos, iniciado com um vértice inicial I. A cada passo do algoritmo busca-se nas adjacências dos vértices pertencentes a S aquele vértice com menor distância relativa a I e adiciona-o a S e, então, repetindo os passos até que todos os vértices alcançáveis por I estejam em S. Arestas que ligam vértices já pertencentes a S são desconsideradas. Um exemplo prático do problema que pode ser resolvido pelo algoritmo de Dijkstra é: alguém precisa se deslocar de uma cidade para outra. Para isso, ela dispõe de várias estradas, que passam por diversas cidades. Qual delas oferece uma trajetória de menor caminho?

Algoritmo de Dijkstra • 1º passo: iniciam-se os valores: para todo v ∈ V[G] d[v]← ∞ π[v] ← nulo d[s] ← 0 V[G] é o conjunto de vértices(v) que formam o Grafo G. d[v] é o vetor de distâncias de s até cada v. Admitindo-se a pior estimativa possível, o caminho infinito. π[v] identifica o vértice de onde se origina uma conexão até v de

Algoritmo de Dijkstra

110

maneira a formar um caminho mínimo. • 2º passo: temos que usar o conjunto Q, cujos vértices ainda não contém o custo do menor caminho d[v] determinado. Q ← V[G] • 3º passo: realizamos uma série de relaxamentos das arestas, de acordo com o código: enquanto Q ≠ ø u ← extrair-mín(Q) para cada v adjacente a u se d[v] > d[u] + w(u, v) então d[v] ← d[u] + w(u, v) π[v] ← u Q ← Q ∪ {v}

//Q ← Q - {u} //relaxe (u, v)

w(u, v) é o peso(weight) da aresta que vai de u a v. u e v são vértices quaisquer e s é o vértice inicial. extrair-mín(Q), pode usar um heap de mínimo ou uma lista de vértices onde se extrai o elemento u com menor valor d[u]. No final do algoritmo teremos o menor caminho entre s e qualquer outro vértice de G. O algoritmo leva tempo O(m + n log n) caso seja usado um heap de Fibonacci, O(m log n) caso seja usado um heap binário e O(n²) caso seja usado um vetor para armazenar Q.

Implementação em C/C++ Implementação em C utilizando uma matriz de adjacências. Dependendo da quantidade limite de vértices (MAXV) pode se tornar ineficiente quanto ao uso de memória, sendo recomendado usar uma lista de adjacências. #include <string.h> //memset

// MAXV é uma constante que define a quantidade máxima de vértices #define MAXV 100

// Matriz de adjacências // Se MAdj[i][j] > 0, então há aresta que liga 'i' a 'j' com custo MAdj[i][j]. int MAdj[MAXV][MAXV];

// Armazena a distância mínima partindo de um vértice 'i' até todos os outros vértices // dis[j] representa a menor distância de 'i' a 'j'. int dis[MAXV];

// Calcula as distâncias de 'Vi' a todos os outros vértices de um grafo com 'V' vértices e armazena-as em dis[] void dijkstra (int Vi, int V) { // vis[i] informa se o vértice 'i' já foi visitado/analisado ou não (inicialmente nenhum vértice foi) char vis[MAXV]; memset (vis, 0, sizeof (vis));

// Inicialmente afirmamos que a menor distância encontrada entre Vi e qualquer outro vértice (exceto o próprio Vi) é infinita

Algoritmo de Dijkstra

111

memset (dis, 0x7f, sizeof (dis)); dis[Vi] = 0;

while (1) { int i, n = -1;

for (i = 0; i < V; i++) if (! vis[i] && (n < 0 || dis[i] < dis[n])) n = i;

if (n < 0) break; vis[n] = 1;

for (i = 0; i < V; i++) if (MAdj[n][i] && dis[i] > dis[n] + MAdj[n][i]) dis[i] = dis[n] + MAdj[n][i]; } }

Implementação em C++ utilizando uma lista de adjacências. #include <string.h> //memset #include

using namespace std;

// MAXV é uma constante que define a quantidade máxima de vértices #define MAXV 100

// Lista de adjacências // Para inserir uma aresta - partindo do vértice 'i' ao vértice 'j', com custo 'c' - na lista, podemos usar: // LAdj[i].push_back (make_pair (j, c)); vector < pair > LAdj[MAXV];

// Armazena a distância mínima partindo de um vértice 'i' até todos os outros vértices // dis[j] representa a menor distância de 'i' a 'j'. int dis[MAXV];

// Calcula as distâncias de 'Vi' a todos os outros vértices de um grafo com 'V' vértices e armazena-as em dis[] void dijkstra (int Vi, int V) { // vis[i] informa se o vértice 'i' já foi visitado/analisado ou não (inicialmente nenhum vértice foi) char vis[MAXV]; memset (vis, 0, sizeof (vis));

// Inicialmente afirmamos que a menor distância encontrada entre Vi e qualquer outro vértice (exceto o próprio Vi) é infinita

Algoritmo de Dijkstra

112

memset (dis, 0x7f, sizeof (dis)); dis[Vi] = 0;

while (1) { int i, n = -1;

for (i = 0; i < V; i++) if (! vis[i] && (n < 0 || dis[i] < dis[n])) n = i;

if (n < 0) break; vis[n] = 1;

for (i = 0; i < LAdj[n].size (); i++) // Aresta n -> LAdj[n][i].first com custo LAdj[n][i].second if (dis[LAdj[n][i].first] > dis[n] + LAdj[n][i].second) dis[LAdj[n][i].first] = dis[n] + LAdj[n][i].second; } }

A implementação do algorítmo utilizando uma lista de adjacências é ligeiramente mais rápida que a implementação com uma matriz de adjacências para casos em que o número de arestas não se aproxima do pior caso (uma aresta ligando cada par de vértices); quando próximo ao pior caso, o desempenho é similar. Ambos possuem complexidade de tempo em torno de O(V²). É possível obter uma solução em O(E + V log V) (custo amortizado), onde E é o número de arestas, utilizando um heap de fibonacci ou O(E log V) usando priority queue da STL de C++ para extrair o vértice não-visitado com menor distância. O heap simples, embora levemente mais lento que o heap de fibonacci, também pode ser usado para obter uma complexidade similar.

Ligações externas • • • • • •

Artigo explicativo sobre o algoritmo [2] Artigo e Implementação do Algoritmo de Dijkstra em C [3] (em espanhol) Algoritmo de Dijkstra em C [4] (em inglês) Algoritmo de Dijkstra em C# [5] (em inglês) [6] - NIST (em inglês) Applet do algoritmo de Dijkstra [7]

[2] [3] [4] [5] [6] [7]

http:/ / www. inf. ufsc. br/ grafos/ temas/ custo-minimo/ dijkstra. html http:/ / www. vivaolinux. com. br/ script/ Algoritmo-de-Dijkstra http:/ / www. mis-algoritmos. com/ source-154. html http:/ / www. codeproject. com/ useritems/ Shortest_Path_Problem. asp http:/ / www. nist. gov/ dads/ HTML/ dijkstraalgo. html http:/ / www-b2. is. tokushima-u. ac. jp/ ~ikeda/ suuri/ dijkstra/ Dijkstra. shtml

Algoritmo de Boruvka

113

Algoritmo de Boruvka O o algoritmo de Borůvka (ou Barůvka como também é conhecido) é um algoritmo para encontrar uma árvore geradora mínima em um grafo para o qual todos os pesos de arestas sejam distintos. Este algoritmo caracteriza-se pela divisão do grafo original em vários subgrafos para os quais é calculado a Minimum Spanning Tree (árvore geradora mínima). Ou seja, no fundo, pode ser considerada uma variação de algoritmos como os de Prim e Kruskal. É um algoritmo que, de modo diverso dos algoritmos de Kruskal e Prim, não usa uma fila de prioridades[1]. É um algoritmo com uma velocidade de convergência (ou resolução) bastante rápida sendo ideal para implementação em computadores paralelos já que a Minimum Spanning Tree de cada um dos subgrafos pode ser calculada numa máquina diferente. Este algoritmo é recursivo e só termina quando existe apenas um vértice. O algoritmo de Baruvka compreende os seguintes passos: 1 - para cada vértice escolher o seu arco com peso mínimo. Deste passo poderão resultar vários subgrafos. 2 - caso o passo 1 dê origem a grafos não conectados, considere-se cada subgrafo gerado no passo anterior como um vértice do grafo final. Estes vértices do grafo final conterão os vértices de cada umdos subgrafos gerados no passo 1. Para cada um dos subgrafos gerados execute-se de novo o passo 1 (recursividade). Neste momento pode-se, caso existam várias máquinas diferentes, correr este algoritmo nas várias máquinas sendo que cada 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á que cada máquina vai executar as mesmas instruções mas sobre um conjunto de dados diferentes). 3 - Quando for encontrada a Minimum Spanning Tree para cada um dos grafos gerar um novo grafo onde cada um vértices deste grafo é um dos subgrafos. O objectivo agora será voltar a executar os passos 1 a 3 até que existam apenas 2 vértices e um único arco. A título de exemplo Seja V um grafo não orientado cuja representação matricial é a seguinte:

Exemplo 1 - a b

c

d

e

f

a 0 4

2

0

0

0

b 4 0

2

0

5

1

c 2 2

0

10

1

0

d 0 0 10

0

15 0

e 0 5

1

15

0

2

f 0 1

0

0

2

0

Nota: As posições (i,j) e (j,i) da matriz anterior têm os mesmos valores. Isso indica que o grafo em análise é não orientado.

Executando o passo 1 acima referido sobre esta matriz passaríamos a ter a seguinte matriz:

Algoritmo de Boruvka

114

- a b

c

d e f

a 0 0

2

0 0 0

b 0 0

0

0 0 1

c 0 0

0

0 1 0

d 0 0 10 0 0 0 e 0 0

0

0 0 0

f 0 0

0

0 0 0

Analisando esta nova matriz podemos ver que existem duas linhas a zero (e e f), o que claramente indica a existência de dois subgrafos. Como verificar quais os subgrafos? É um processo simples de verificar quais as linhas e colunas que se cruzam. Neste caso os novos subgrafos são dados pelas seguintes matrizes: - b f b 0 1 f 0 0

- a

c

d e

a 0

2

0 0

c 0

0

0 1

d 0 10 0 0 e 0

0

0 0

Notar que é necessário reter,da matriz original os valores que cruzam os vértices dos diferentes subgrafos gerados no passo 1, ou seja, a arco a-b (com peso 4), o arco c-b (com peso 2), o arco b-e (com peso 5) e o arco e-f (com peso 2). Estes arcos são usados para unir os vértices do arco gerado no passo 3. Neste exemplo bastante simples, o passo 2 representado pelas duas matrizes anteriores. Deste modo, não é necessário encontrar a Minimum Spanning Tree para cada uma destas matrizes já que quando se executa o passo 1 estas são encontradas automaticamente (outros exemplos há em que é necessário executar o passo 2). Isto leva, então, à geração do grafo do passo 3 em que temos dois vértices (um para cada uma das matrizes anteriores) e que pode ser representado sob a seguinte forma -

bf

acde

bf

0

4/2/2/5

acde 4/2/2/5

0

Note-se que a diagonal principal da matriz está a zero mas a outra diagonal não (é apenas uma questão de representacão. (matriz transposta esta matriz ir-se-ia obter a diagonal principal não nula e a outra diagonal a zero.) Estes valores indicam possíveis arcos que ligam os vértices deste grafo. Então, volta-se a executar o passo 1 sobre este grafo pelo que se chega à conclusão de que o grafo inicial deu origem a um grafo final cuja representação é a seguinte:

Algoritmo de Boruvka

Referências

115

-

bf acde

bf

0

2

acde 0

0

116

Grafos individuais Grafo de Biggs-Smith Grafo de Biggs–Smith

O grafo de Biggs–Smith

vértices

102

arestas

153

Raio

7

Diâmetro

7

Cintura

9

Automorfismos 2448 (PGL(2,17)) Número cromático

3

Índice cromático

3

Propriedades

Cúbico Hamiltoniano simétrico distância-regular

No campo da matemática da teoria dos grafos o grafo de Biggs–Smith é um grafo não-orientado 3-regular com 102 vértices e 153 arestas.[1] Ele tem número cromático 3, índice cromático 3, raio 7, diâmetro 7 e cintura 9. É tanto 3-vértice-conectado quanto 3-aresta-conectado. Todos os grafos distância-regular cúbicos são conhecidos.[2] O grafo Biggs–Smith é um destes 13 grafos.

Propriedades algébricas O grupo de automorfismo do grafo de Biggs–Smith é um grupo de ordem 2448[3] isomórfico ao PGL(2,17). Ele age transitivamente sobre os vértices, nas arestas e nos arcos do grafo. Portanto, o grafo de Biggs–Smith é im grafo 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, o grafo de Biggs-Smith, referenciado como F102A, é o único grafo cúbico simétrico em 102 vértices.[4]

Grafo de Biggs-Smith

117

O grafo de Biggs–Smith é também singularmente determinado por seu espectro de grafo, o conjunto de autovalores do grafo de sua matriz de adjacência.[5] O polinômio característico do grafo de Biggs–Smith é: .

Galeria

O número cromático do grafo de Biggs–Smith graph é 3. [2] [3] [4] [5]

O índice cromático do grafo de Biggs–Smith graph é 3.

Desenho alternativo do grafo de Biggs–Smith.

Brouwer, A. E.; Cohen, A. M.; and Neumaier, A. Distance-Regular Graphs. New York: Springer-Verlag, 1989. Royle, G. F102A data (http:/ / www. csse. uwa. edu. au/ ~gordon/ foster/ F102A. html) Conder, M. and Dobcsányi, P. "Trivalent Symmetric Graphs Up to 768 Vertices." J. Combin. Math. Combin. Comput. 40, 41–63, 2002 E. R. van Dam and W. H. Haemers, Spectral Characterizations of Some Distance-Regular Graphs. J. Algebraic Combin. 15, pages 189–202, 2003

Grafo de Brouwer-Haemers

118

Grafo de Brouwer-Haemers Grafo de Brouwer–Haemers

vértices

81

arestas

810

Cintura

3

Automorfismos 233280 Número cromático

7

Propriedades

Fortemente regular

No campo da matemática da teoria dos grafos, o Grafo de Brouwer–Haemers é um grafo não direcionado 20-regular com 81 vértices e 810 arestas. É o único grafo fortemente regular com parâmetros (81, 20, 1, 6).

Propriedades algébricas O automorfismo de grupo do grafo de Brouwer-Haemers é um grupo da oredem de 233280. O polinômio característico do grafo de Brouwer-Haemers é: .

Ligações externas • Weisstein, Eric W. "Brouwer–Haemers Graph." From MathWorld—A Wolfram Web Resource. [1] • Página de Andries E. Brouwer. [2]

Referências [1] http:/ / mathworld. wolfram. com/ Brouwer-HaemersGraph. html [2] http:/ / www. win. tue. nl/ ~aeb/ graphs/ Brouwer-Haemers. html

Grafo de Desargues

119

Grafo de Desargues Grafo de Desargues

O grafo de Desargues

Nomeado em honra a

Girard Desargues

vértices

20

arestas

30

Raio

5

Diâmetro

5

Cintura

6

Automorfismos

240 (S5× Z/2Z)

Número cromático 2 Índice cromático

3

Propriedades

Cúbico Hamiltoniano simétrico distância-regular Bipartido

No campo da matemática da teoria dos grafos o grafo de Desargues é um grafo cúbico, distância-transitivo com 20 vértices e 30 arestas.[1] É nomeado em honra a Girard Desargues, surge a partir de diferentes construções combinatória, tem um elevado nível de simetria, é o único conhecido cubo parcial cúbico não-planar , e tem sido aplicado em bases de dados químicos. O nome "grafo de Desargues" também tem sido usado para se referir ao complemento do grafo de Petersen[2].

Construções Existem várias maneiras diferentes de construir o grafo de Desargues: • É o grafo de Petersen generalizado G(10, 3). Para formar o grafo de Desargues desta forma, conecte dez dos vértices em um decágono regular, e conecte os outros dez vértices em uma estrela de dez pontas que conecta os pares de vértices a uma distância três em um segundo decágono. O grafo de Desargue consiste das 20 arestas destes dois polígonos juntamente com 10 arestas adicionais de pontos de conexão de um decágono para os pontos correspondentes do outro. • É o grafo de Levi da configuração de Desargues. Esta configuração é composta por dez pontos e dez linhas descrevendo dois triângulos em perspectiva, seu centro de perspectiva, e seu eixo de perspectiva. 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

Grafo de Desargues ponto incidente. O teorema de Desargues, nomeado em honra ao matemático francês do século 17 Girard Desargues, descreve um conjunto de pontos e linhas que formam essa configuração, e a configuração e o grafo devem seu nome a ela. • É a cobertura bipartida dupla do grafo de Petersen, formada pela substituição de cada vértice do grafo de Petersen por um par de vértices e cada aresta do grafo de Petersen por um par de arestas cruzadas. • É o grafo de Kneser bipartido H5,2. Seus vértices podem ser rotulados pelos dez subconjuntos de dois elementos e os dez subconjuntos de três elementos de um conjunto de cinco elementos, com uma aresta conectando dois vértices quando um dos conjuntos correspondentes é um subconjunto do outro. • O grafo de Desargues é Hamiltoniano e pode ser construído pela notação LCF: [5,−5,9,−9]5

Propriedades algébricas O grafo de Desargues é um grafo simétrico: tem simetrias que levam qualquer vértice para qualquer outro vértice e qualquer aresta para qualquer outra aresta. Seu grupo de simetria tem ordem 240, e é isomórfico ao o produto de um grupo simétrico em 5 pontos, com um grupo de ordem 2. Pode-se interpretar esta representação de produtos do grupo de simetria em termos de construções do grafo de Desargues: o grupo simétrico em cinco pontos é o grupo de simetria da configuração de Desargues, e o subgrupo de ordem-2 troca os papéis dos vértices que representam pontos da configuração de Desargues e os vértices que representam as linhas. Como alternativa, em termos do grafo bipartido de Kneser, o grupo simétrico em cinco pontos de age em separado sobre os subconjuntos 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 outro. O grupo simétrico em cinco pontos é também o grupo de simetria do grafo de Petersen, e o subgrupo de ordem-2 troca os vértices dentro de cada par de vértices formados na construção da dupla cobertura. O grafo de Petersen generalizado G(n, k) é vértice-transitivo se e somente se n = 10 e k = 2 ou se k2 ≡ ±1 (mod n) e é aresta-transitivo somente nos seguintes sete casos: (n, k) = (4, 1), (5, 2), (8, 3), (10, 2), (10, 3), (12, 5), (24, 5).[3] Assim, o grafo de Desargues é um dos apenas sete grafos de Petersen generalizados simétricos. Entre estes sete grafos estão o grafo cúbico G(4, 1), o grafo de Petersen G(5, 2), o grafo de Möbius–Kantor G(8, 3), o grafo dodecaédrico G(10, 2) e o grafo de Nauru G(12, 5). O polinômio característico do grafo de Desargues é:

Portanto o grafo de Desargues é um grafo integral: seu espectro consiste inteiramente de inteiros.

Aplicações Em química, o grafo de Desargues é conhecido como o grafo de Desargues-Levi; é utilizado para organizar sistemas de estereoisômeros de compostos 5-ligantes. Nesta aplicação, as trinta arestas do grafo correspondem a pseudorotações dos ligantes[4][5].

Outras propriedades O grafo de Desargues tem um número de cruzamento retilíneo 6, e é o menor grafo cúbico com este número de cruzamento (sequência A110507 na OEIS). É o único conhecido cúbico não planar cubo parcial[6] . O grafo de Desargues tem um número cromático 2, índice cromático 3, raio 5, diâmetro 5 e cintura 6. É também um grafo hamiltoniano, 3-vértice-conectado, e 3-aresta-conectado. Todos os grafos distância-regular cúbicos são conhecidos.[7] O grafo de Desargues é um destes 13 grafos.

120

Grafo de Desargues

121

Galeria

O grafo de Desargues colorido para sobresaltar vários ciclos.

O índice cromático do grafo de Desargues é 3.

O número cromático do grafo de Desargues é 2.

[3] . [7] Brouwer, A. E.; Cohen, A. M.; and Neumaier, A. Distance-Regular Graphs. New York: Springer-Verlag, 1989.

Grafo de Folkman Grafo de Folkman

O grafo de Folkman

Nomeado em honra a

J. Folkman

vértices

20

arestas

40

Raio

3

Diâmetro

4

Cintura

4

Número cromático 2 Índice cromático

4

Propriedades

Perfeito Hamiltoniano Semi-simétrico Bipartido Regular Euleriano

Grafo de Folkman

122

No campo da matemática da teoria dos grafos o grafo de Folkman, nomeado em honra a Jon Folkman, é um grafo bipartido 4-regular com 20 vértices e 40 arestas.[1] O grafo de Folkman é Hamiltoniano e tem número cromático 2, índice cromático 4, raio 3, diâmetro 4 e cintura 4. e é um grafo perfeito tanto 4-vértice-conectado quanto 4-aresta-conectado.

Propriedades algébricas O grupo de automorfismo do grafo de Folkman age transitivamente em suas arestas, mas não em seus vértices. É o menor grafo não direcionado, que é aresta-transitivo e regular, mas não é vértice-transitivo.[2] Esses grafos são chamados semi-simétricos e foram estudados pela primeira vez por Folkman em 1967 que descobriu o grafo de 20 vértices, que agora é nomeado em sua honra.[3] Como um grafo semi-simétrico, o gráfico de Folkman é bipartido, e seu grupo de automorfismo age transitivamente em cada um dos dois conjuntos de vértices da bipartição. No diagrama abaixo, indicando o número cromático do grafo, os vértices verdes não podem ser mapeados para os vermelhos por qualquer automorfismo, mas 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. O polinômio característico do grafo de Folkman é

.

Galeria

O índice cromático do grafo de Folkman é 4.

O número cromático do grafo de Folkman é 2.

O grafo de Folkman é Hamiltoniano.

[2] Skiena, S. Implementing Discrete Mathematics: Combinatorics and Graph Theory with Mathematica. Reading, MA: Addison-Wesley, pp. 186-187, 1990

Grafo de Foster

123

Grafo de Foster Grafo de Foster

Nomeado em honra a

Ronald Martin Foster

vértices

90

arestas

135

Raio

8

Diâmetro

8

Cintura

10

Automorfismos

4320

Número cromático 2 Índice cromático

3

Propriedades

Cúbico simétrico distância-transitivo Hamiltoniano simétrico

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] O grafo de Foster é Hamiltoniano e tem número cromático 2, índice cromático 3, raio 8, diâmetro 8 e cintura 10. Ele é também um grafo 3-vértice-conectado e 3-aresta-conectado. Todos os grafos distância-regular cúbicos são conhecidos.[2] O grafo de Foster é um destes 13 grafos. É o único grafo distância-transitivo com array de intersecção {3,2,2,2,2,1,1,1;1,1,1,1,2,2,2,3}.[3] Pode ser 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 honra a R. M. Foster, cujo censo de Foster de grafos simétricos cúbicos incluíam este grafo.

Grafo de Foster

124

Propriedades algébricas O grupo de automorfismo do grafo de Foster é um grupo de ordem 4320.[4] Ele age transitivamente sobre os vértices, nas arestas e nos arcos do grafo. Portanto o grafo de Foster é um grafo simétrico. Ele tem automorfismos que levam qualquer vértice para qualquer outro vértice e qualquer aresta a qualquer outra aresta. Segundo o censo de Foster, o grafo de Foster, referenciado como F90A, é o único grafo cúbico simétrico em 90 vértices.[5] O

polinômio

característico

do

grafo

de

Foster

é

igual

.

Galeria

Grafo de Foster colorido para ressaltar vários ciclos. [2] [3] [4] [5]

O número cromático do grafo de Foster é 2.

O índice cromático do grafo de Foster é 3.

Brouwer, A. E.; Cohen, A. M.; and Neumaier, A. Distance-Regular Graphs. New York: Springer-Verlag, 1989. Cubic distance-regular graphs (http:/ / www. win. tue. nl/ ~aeb/ graphs/ cubic_drg. html), A. Brouwer. Royle, G. F090A data (http:/ / www. csse. uwa. edu. au/ ~gordon/ foster/ F090A. html) Conder, M. and Dobcsányi, P. "Trivalent Symmetric Graphs Up to 768 Vertices." J. Combin. Math. Combin. Comput. 40, 41-63, 2002

a

Grafo de Frucht

125

Grafo de Frucht Grafo de Frucht

Nomeado em honra a

Robert Frucht

vértices

12

arestas

18

Raio

3

Diâmetro

4

Cintura

3

Automorfismos

1 ({id})

Número cromático 3 Índice cromático

3

Propriedades

Cúbico Planar Hamiltoniano

No campo da matemática da teoria dos grafos, o Grafo de Frucht é um grafo 3-regular com 12 vértices e 18 arestas e nenhuma simetria não-trivial.[1] Foi descrito pela primeira vez por Robert Frucht em 1939.[] O grafo de Frucht é um grafo Halin com número cromático 3, índice cromático 3, raio 3, diâmetro 4, e cintura 3. Como em todos os grafos Halin, o grafo de Frucht é planar, 3-vértice-conectado, e poliédrico. É também um grafo 3-aresta-conectado. O grafo de Frucht é hamiltoniano e pode ser construído a partir da notação LCF: [−5,−2,−4,2,5,−2,2,5,−2,−5,4,2].

Propriedades algébricas O grafo de Frucht é o menor grafo cúbico possuindo somente um único automorfismo de grafos, a identidade[2](ou seja, cada vértice pode ser distinguido topologicamente de todos os outros vértices). Tais grafos são chamados assimétricos (ou identidade). O teorema de Frucht diz que qualquer grupo pode ser compreendido como o grupo de simetrias de um grafo,[] e um reforço deste teorema também devido à Frucht afirma que qualquer grupo pode ser percebido como as simetrias de um grafo 3-regular;[3] o grafo de Frucht fornece um exemplo desta realização para o grupo trivial. O

polinômio

característico

do

grafo

de

Frucht

é .

igual

a

Grafo de Frucht

126

Galeria

O grafo de Frucht é planar.

O número cromático do grafo de Frucht é 3.

O grafo de Frucht é Hamiltoniano.

[2] Skiena, S. Implementing Discrete Mathematics: Combinatorics and Graph Theory with Mathematica. Reading, MA: Addison-Wesley, 1990

Grafo de Gray Grafo de Gray

O grafo de Gray

Nomeado em honra a

Marion Cameron Gray

vértices

54

arestas

81

Raio

6

Diâmetro

6

Cintura

8

Automorfismos

1296

Número cromático 2 Índice cromático

3

Propriedades

Cúbico Hamiltoniano Semi-simétrico

No campo da matemática da teoria dos grafos o grafo de Gray é um grafo não direcionado bipartido, com 54 vértices e 81 arestas. É um grafo cúbico: todo vértice toca exatamente três arestas. Foi descoberto por Marion C.

Grafo de Gray Gray, em 1932, (de forma inédita), em seguida, descoberto independentemente por Bouwer 1968, em resposta a uma pergunta feita por Jon Folkman em 1967[1]. O grafo de Gray é interessante como o primeiro exemplo conhecido de um grafo cúbico tendo a propriedade algébrica de ser aresta-transitivo, mas não sendo vértice-transitivo (ver abaixo). O grafo de Gray tem um número cromático 2, índice cromático 3, raio 6 e diâmetro 6. Ele é também um grafo 3-vértice-conectado e 3-aresta-conectado não-planar.

Construção O grafo de Gray pode ser construído [2] dos 27 pontos de uma grade de 3 × 3 × 3 e as 27 linhas de eixo paralelo a esses pontos. Esta coleção de pontos e linhas formam um configuração projetiva: cada ponto tem exatamente três linhas, através dele, e cada linha tem exatamente três pontos sobre ela. O grafo de Gray é o grafo de Levi dessa configuração, que tem um vértice para cada ponto e para cada linha da configuração, e uma aresta para cada par de um ponto e uma linha que se tocam. Esta construção generaliza (Bouwer 1972) para qualquer dimensão n ≥ 3, rendendo um grafo de Levi n-valente com propriedades algébricas semelhantes às do gráfico deGray. Em (Monson, Pisanski, Schulte, Ivic-Weiss 2007)[3], o grafo de Gray aparece como um tipo diferente de grafo de Levi com as arestas e faces triangulares de uma determinada localmente toroidal resumo regular 4 politopo. É, portanto, o primeiro de uma família infinita de grafos cúbicos similarmente construídos. Marušič e Pisanski (2000)[4] indicaram vários métodos alternativos de construção do grafo de Gray. Como acontece com qualquer grafo bipartido, não há ciclos de comprimento impar, e também não há ciclos de quatro ou seis vértices, de modo que a cintura do gráfico Gray é 8. A superfície orientada mais simples sobre a qual o grafo de Gray pode ser incorporado tem gênero 7[5]. O grafo de Gray é hamiltoniano e pode ser construído a partir da notação LCF:

Propriedades algébricas O grupo de automorfismo do grafo de Gray é um grupo de ordem 1296. Ele atua transitivamente nas arestas do grafo, mas não em seus vértices : existem simetrias levando cada aresta para qualquer outra aresta mas não tomando cada vértice para qualquer outro vértice. Os vértices que correspondem a pontos da configuração subjacentes apenas podem ser simétricos para outros vértices que correspondem a pontos, e os vertices que correspondem a linhas só podem ser simétricos para outros vértices que correspondem a linhas. Portanto, o grafo de Gray é um grafo semi-simétrico, o menor possível grafo semi-simétrico cúbico. O polinômio característico do grafo de Gray é

[1] [2] [4] [5]

. . . .

127

Grafo de Gray

128

Ligações externas • O grafo de Gray é o menor grafo de seu tipo (http://mathworld.wolfram.com/news/2002-04-09/graygraph/) , em MathWorld.

Galeria

O grafo de Gray

O número cromático do grafo de Gray é 2.

O índice cromático do grafo de Gray é 3.

Grafo de Heawood Grafo de Heawood

Nomeado em honra a

Percy John Heawood

vértices

14

arestas

21

Raio

3

Diâmetro

3

Cintura

6

Automorfismos

336 (PGL (7)) 2

Número cromático 2 Índice cromático

3

Propriedades

Cúbico gaiola distância-transitivo distância-regular Toroidal Hamiltoniano simétrico

A configuração básica do grafo de Gray.

Grafo de Heawood

129

No campo da matemática da teoria dos grafos o grafo de Heawood é um grafo não-orientado com 14 vértices e 21 arestas.[1] O grafo é cúbico, e todos os ciclos do grafo têm seis ou mais arestas. Todos os menores grafos cúbicos têm ciclos mais curtos, de modo que este grafo é o gaiola-6, o menor grafo cúbico de cintura 6. É também o grafo de Levi do plano de Fano, o grafo que representa a incidência entre os pontos e linhas nesta geometria. É um grafo distância-regular; o seu grupo de simetrias é PGL2(7).[2] Há 24 correspondências perfeitas no grafo de Heawood; para cada correspondência, o conjunto de arestas fora 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 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 é, usando 3 cores em suas arestas) em oito formas diferentes (Brouwer). O grafo de Heawood foi batizado em honra de Percy John Heawood, que em 1890 provou que cada subdivisão do toro em polígonos pode ser colorida, no máximo, com sete cores.[3][4] O grafo de Heawood forma uma subdivisão do toro com sete regiões adjacentes mutuamente, mostrando que esse limite é apertado. O grafo de Heawood tem número de cruzamento 3, e é o menor grafo cúbico com este número de cruzamento. Incluindo o grafo de Heawood, existem 8 grafos distintos de ordem 14 com número de cruzamento 3. O grafo de Heawood é um grafo distância-unidade.[5]

Propriedades algébricas O grupo de automorfismo do grafo de Heawood é isomórfico ao grupo linear projetivo PGL2(7), um grupo de ordem 336.[6] Ele atua transitivamente sobre os vértices, nas arestas e nos arcos do grafo. Portanto o grafo Heawood é um grafo 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 Foster, o grafo de Heawood, referenciado como F014A, é o único grafo cúbico simétrico com 14 vértices.[7][8] O polinômio característico do grafo de Heawood é

. É o único grafo com este

polinômio característico, tornando-se um grafo determinado pelo seu espectro.

Incorporado em um Toro O grafo de Heawood é um grafo toroidal; ou seja, ele pode ser incorporado sem cruzamentos em um toro. Uma incorporaçã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 topologia de um toro, o poliedro de Szilassi.

Galeria

O poliedro de Szilassi.

O grafo de Heawood tem número de cruzamento 3.

O índice cromático do grafo de Heawood é 3.

O número cromático do grafo de Heawood é 2.

Grafo de Heawood

130

A incorporação do grafo de Heawood em um toro (mostrado como um quadrado com condições de contorno periódicas) particionando-o em sete regiões mutuamente adjacentes [7] Royle, G. "Cubic Symmetric Graphs (The Foster Census)." (http:/ / www. cs. uwa. edu. au/ ~gordon/ remote/ foster/ #census) [8] Conder, M. and Dobcsányi, P. "Trivalent Symmetric Graphs Up to 768 Vertices." J. Combin. Math. Combin. Comput. 40, 41-63, 2002.

Grafo de Higman-Sims Grafo de Higman–Sims

[1]

Desenho baseado em uma construção de Paul R. Hafner

Nomeado em honra a

Donald G. Higman Charles C. Sims

vértices

100

arestas

1100

Raio

2

Diâmetro

2

Cintura

4

Automorfismos

88704000 (HS:2)

Propriedades

Fortemente regular Aresta-transitivo Hamiltoniano Euleriano Integral

Grafo de Higman-Sims

No campo da matemática da teoria dos grafos, o Grafo de Higman–Sims é um grafo não direcionado, 22-regular com 100 vértices e 1100 arestas. É o único grafo fortemente regular com 100 vértices e valência 22, onde nenhum par de vértices vizinhos partilham um vizinho comum e cada par de vértices não-vizinhos partilham seis vizinhos comuns.[2] Foi construído em 1968 por Donald G. Higman e Charles C. Sims como uma forma de definir o grupo de Higman–Sims, e este grupo é um subgrupo do índice dois no grupo de automorfismos do grafo de Higman–Sims.[3]

131

As partes em separado da construção de Hafner.

A construção começa com o grafo M22, cujos 77 vértices são os blocos do S(3,6,22) sistema de Steiner W22. 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 vizinhos comuns, e quaisquer dois vértices não adjacentes têm 4 vizinhos comuns. Este grafo tem M22:2 como seu automorfismo de grupo, sendo M22 o seu grupo Mathieu. O grafo de Higman–Sims é formado anexando os 22 pontos de W22 e um 100º vértice C. Os vizinhos de C são definidos ser estes 22 pontos. Um ponto adjacente a um bloco é definido ser aquele que está incluído. Um grafo de Higman–Sims pode ser particionado em duas cópias do grafo de Hoffman–Singleton de 352 maneiras.

Propriedades algébricas O grupo de automorfismo do grafo de Higman–Sims graph é um grupo de ordem 88704000 isomórfico ao produto semidireto do grupo de Higman–Sims de ordem 44352000 com o grupo cíclico de ordem 2.[4] Ele tem automorfismos que levam qualquer aresta para outra aresta, fazendo o grafo de Higman–Sims um grafo aresta-transitivo.[5] O polinômio característico do grafo de Higman–Sims graph is (x − 22)(x − 2)77(x + 8)22. Portanto o grafo de Higman–Sims é um grafo integral: seu espectro de grafo consiste inteiramente de inteiros. Ele é também considerado o único grafo com este polinômio característico, fazendo dele um grafo determinado por seu espectro.

Dentro da malha de Leech O grafo de Higman-Sims ocorre naturalmente no interior da malha de Leech: se X, Y e Z são três pontos na malha de Leech tais que as distâncias XY, XZ e YZ são 2, 3, 3 respectivamente, então há exatamente 100 pontos da malha de Leech T de tal forma que todas as distâncias XT, YT e ZT são iguais a 2, e se ligarmos dois pontos, tais T e T′ quando a distância entre eles é 2, O grafo resultante é isomorfo ao grafo de Higman-Sims. Além disso, o conjunto de todos os automorfismos da malha de Leech (Isto é, congruências euclidiana fixando-a) que fixam cada um dos X, Y e Z é o grupo de Higman–Sims (Se nós permitirmos trocar X e Y, a extensão de ordem 2 de todos os automorfismos de grafos é obtida). Isso mostra que o grupo Higman-Sims ocorre dentro do grupo de Conway Co2 (com sua extensão de ordem 2) e Co3, e, conseqüentemente, também Co1.[6]

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

[1] . [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.

Grafo de Hoffman-Singleton

132

Grafo de Hoffman-Singleton Grafo de Hoffman–Singleton

Nomeado em honra a

Alan J. Hoffman Robert R. Singleton

vértices

50

arestas

175

Raio

2

Diâmetro

2

Cintura

5

Automorfismos

252000 (PGL(3,5 ):2)

[] [] 2

[1]

Número cromático 4 [2]

Índice cromático

7

Propriedades

Simétrico Grafo de Moore Hamiltoniano Integral Gaiola Fortemente regular

No campo da matemática da teoria dos grafos, o Grafo de Hoffman–Singleton é um grafo 7-regular não direcionado com 50 vértices e 175 arestas. É o único grafo fortemente regular com parâmetros (50,7,0,1).[3] Foi construído por Alan Hoffman e Robert Singleton ao tentar classificar todos os grafos de Moore, e é a mais alta ordem de grafo de Moore esistente conhecida até o momento.[4] Como é um grafo de Moore onde cada vértice tem grau 7, e sua cintura é 5, ele é um (7,5)-gaiola.

O grafo de Hoffman-Singleton. O subgrafo das arestas azuis é a soma dos dez pentágonos disjuntos.

Grafo de Hoffman-Singleton

133

Construção Uma construção simples, direta é como se segue: Tome cinco pentágonos Ph e cinco pentagramas Qi, de forma que o vértice j de Ph seja adjacente aos vértices j-1,j+1 de Ph e o vértice j de Qi seja adjacente aos vértices j-2,j+2 de Qi. Agora conecte o vértice j de Ph ao vértice hi+j de Qi. (Todos os índices mod 5.)

Propriedades algébricas O grupo de automorfismo do grafo de Hoffman-Singleton é um grupo de ordem 252000 isomórfico a PΣU(3,52). Ele age transitivamente sobre os vértices, nas arestas e nos arcos do grafo. Portanto, o grafo de Biggs–Smith é im grafo simétrico. O polinômio característico do grafo de Hoffman-Singleton é igual a

. Portanto o

grafo de Hoffman-Singleton é um grafo integral: seu espectro de grafo consiste inteiramente de inteiros. [1] Hafner, P. R. "The Hoffman-Singleton Graph and Its Automorphisms." J. Algebraic Combin. 18, 7-12, 2003. [2] Royle, G. "Re: What is the Edge Chromatic Number of Hoffman-Singleton?" [email protected] posting. 28 de Setembro de 2004. (http:/ / listserv. nodak. edu/ scripts/ wa. exe?A2=ind0409& L=graphnet& F=& S=& P=4981. ) [3] . [4] .

Grafo de Holt Grafo de Holt

No grafo de Holt, todos os vértices são equilvalentes, e todas as arestas são equivalentes, mas as arestas não são necessáriamente equivalentes as suas inversas.

Nomeado em honra a

Derek F. Holt

vértices

27

arestas

54

Raio

3

Diâmetro

3

Cintura

5

Automorfismos

54

Número cromático

3

Índice cromático

5

Grafo de Holt

134 Vértice-transitivo Aresta-transitivo Meio-transitivo grafo de Cayley Hamiltoniano Euleriano

Propriedades

No campo da matemática da teoria dos grafos o grafo de Holt ou grafo de Doyle é o menor grafo meio-transitivo, ou seja, o menor exemplo de grafo vértice-transitivo e aresta-transitivo que não é também simétrico.[1][2] Esses grafos não são comuns.[3] É nomeado em honra a Peter G. Doyle e Derek F. Holt, que descobriram o mesmo grafo de forma independente em 1976[4] e 1981[5] respectivamente. 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 com 98472 ciclos distintos hamiltonianos.[] é também um grafo 4-vértice-conectado e 4-aresta-conectado. Ele tem um grupo de automorfismo da ordem de 54 automorfismos.[] Este é um grupo menor que um grafo simétrico com o mesmo número de vértices e arestas teria. O desenho do grafo à direita destaca isto, na medida em que carece de simetria reflexiva. O polinômio característico do grafo de Holt é:

Galeria

O número cromático do grafo de Holt é 3.

O índice cromático do grafo de Holt é 5.

O grafo de Holt é Hamiltoniano.

[1] Doyle, P. "A 27-Vertex Graph That Is Vertex-Transitive and Edge-Transitive But Not L-Transitive." October 1998. (http:/ / arxiv. org/ abs/ math/ 0703861/ ) [2] . [3] Jonathan L. Gross, Jay Yellen, Handbook of Graph Theory, CRC Press, 2004, ISBN 1584880902, p. 491. [4] . Como citado pela MathWorld. [5] .

Grafo de Ljubljana

135

Grafo de Ljubljana Grafo de Ljubljana

O grafo de Ljubljana

vértices

112

arestas

168

Raio

7

Diâmetro

8

Cintura

10

Automorfismos 168 Número cromático

2

Índice cromático

3

Propriedades

Cúbico Hamiltoniano Semi-simétrico

No campo da matemática da teoria dos grafos o grafo de Ljubljana é um grafo não direcionado bipartido com 112 vértices e 168 arestas. É um grafo cúbico com diâmetro 8, raio 7, número cromático 2 e índice cromático 3. Sua cintura é 10 e há exatamente 168 ciclos de comprimento 10 nele. Há também 168 ciclos de comprimento 12.[1]

Construção O grafo de Ljubljana é Hamiltoniano e pode ser construído a partir da notação LCF : [47, -23, -31, 39, 25, -21, -31, -41, 25, 15, 29, -41, -19, 15, -49, 33, 39, -35, -21, 17, -33, 49, 41, 31, -15, -29, 41, 31, -15, -25, 21, 31, -51, -25, 23, 9, -17, 51, 35, -29, 21, -51, -39, 33, -9, -51, 51, -47, -33, 19, 51, -21, 29, 21, -31, -39]2. O grafo de Ljubljana é o grafo de Levi da configuração de Ljubljana, uma configuração quadrangular livre com 56 linhas e 56 pontos.[1] Nesta configuração, cada linha contém exatamente três pontos, cada ponto pertence a exatamente 3 linhas e quaisquer duas linhas se cruzam em no máximo um ponto.

Grafo de Ljubljana

136

Propriedades algébricas O grupo de automorfismo do grafo de Ljubljana é um grupo de ordem 168. Ele age transitivamente em suas arestas, mas não em seus vértices: existem simetrias levando cada aresta para qualquer outra aresta, mas não levando cada vértice para qualquer outro vértice. Portanto, o grafo de Ljubljana é um grafo semi-simétrico, o terceiro menor grafo cúbico semi-simétrico possível após o grafo de Levi em 54 vértices e o grafo de Iofinova-Ivanov em 110 vértices.[2] O polinômio característico do grafo de Ljubljana é

História O grafo de Ljubljana foi publicado pela primeira vez em 1993 por Brouwer, Dejter e Thomassen.[3] Em 1972, Bouwer já estava falando de uma de um grafo cúbico de 112 vértices aresta- mas não vértice-transitivo encontrado por R. M. Foster, mas não publicado ainda.[4] Conder, Malnic, Marusic, Pisanski e Potočnik redescobriram este grafo de 112 vértices em 2002 e nomearam-no grafo de Ljubljana capital da Eslovénia. Eles provaram que ele era o único grafo cúbico de 112 vértices aresta- mas não vértice-transitivo cúbicos e, portanto, que o grafo era aquele encontrado por Foster.

Galeria

O número cromático do grafo de Ljubljana é 2.

O índice cromático do grafo de Ljubljana é 3.

Desenho alternativo do grafo de Ljubljana.

O grafo de Ljubljana é o grafo de Levi desta configuração.

[1] Conder, M.; Malnič, A.; Marušič, D.; Pisanski, T.; and Potočnik, P. "The Ljubljana Graph." 2002. (http:/ / citeseer. ist. psu. edu/ conder02ljubljana. html). [2] Marston Conder, Aleksander Malnič, Dragan Marušič and Primž Potočnik. "A census of semisymmetric cubic graphs on up to 768 vertices." Journal of Algebraic Combinatorics: An International Journal. Volume 23, Issue 3, pages 255-294, 2006. [3] Brouwer, A. E.; Dejter, I. J.; and Thomassen, C. "Highly Symmetric Subgraphs of Hypercubes." J. Algebraic Combinat. 2, 25-29, 1993. [4] Bouwer, I. A. "On Edge But Not Vertex Transitive Regular Graphs." J. Combin. Th. Ser. B 12, 32-40, 1972.

Grafo de Nauru

137

Grafo de Nauru Grafo de Nauru

O grafo Nauru

vértices

24

arestas

36

Raio

4

Diâmetro

4

Cintura

6

Automorfismos 144 (S4×S3) Número cromático

2

Índice cromático

3

Propriedades

Cúbico Hamiltoniano simétrico Integral Bipartido Grafo de Cayley

No campo da matemática da teoria dos grafos o grafo de Nauru é um grafo simétrico, bipartido cúbico com 24 vértices e 36 arestas. Foi nomeado por David Eppstein em alusão a estrela de doze pontas da bandeira do Nauru[1] Ele tem número cromático 2, índice cromático 3, raio 4, diâmetro 4, e cintura 6[2]. Ele também é 3-vértice-conectado, e 3-aresta-conectado. 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 Nauru. Existe 5 grafos cúbicos não-isomorfos de ordem 24 com número de cruzamentos de 8[3]. Um deles é o grafo de McGee também conhecido como (3-7)-gaiola[4].

Grafo de Nauru

138

Construção O grafo de Nauru é Hamiltoniano e pode ser descrito pela notação LCF : [5, −9, 7, −7, 9, −5]4.[1] O grafo de Nauru também pode ser construído como o grafo de Petersen generalizado G(12, 5) que é formado pelos vértices de um dodecágono, ligado aos vértices de uma estrela de doze pontos, em que cada ponta da estrela está ligada aos pontos quer estão a cinco passos de distância dela.

Propriedades algébricas O grupo de automorfismo do grafo de Nauru é um grupo de ordem 144[5]. É isomórfico ao produto direto dos grupos simétricos S4 e S3 e age transitivamente nos vértices, nas arestas e nos arcos do grafo. Portanto o grafo de Nauru é um grafo simétrico (embora não seja distância-transitivo). 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, o grafo de Nauru é o único grafo cúbico simétrico em 24 vértices[2]. O grafo generalizado de Petersen G(n,k) é vértice-transitivo se e somente se n = 10 e k =2 ou se k2 ≡ ±1 (mod n) e é aresta-transitivo somente nos sete casos seguintes: (n,k) = (4,1), (5,2), (8,3), (10,2), (10,3), (12,5), (24,5)[6]. Assim, o grafo de Nauru é um de apenas sete grafos simétricos generalizados de Petersen. Entre estes sete grafos estão o grafo cubico , o grafo de Petersen , o grafo de Möbius–Kantor , o grafo dodecaedro e o grafo de Desargues

.

O grafo de Nauru é um grafo de Cayley de S4, o grupo de permutações simétricas em quatro elementos, gerados pelas três maneiras diferentes de trocar o primeiro elemento com um dos outros três: (1 2), (1 3) e (1 4). O polinômio característico do grafo de Nauru é igual a

tornando-o um grafo integral—um grafo cujo espectro consiste inteiramente de inteiros.

Toro simétrico incorporado O toro é formado, topologicamente, colando-se arestas opostas de um hexágono regular com o outro.

Grafo de Petersen generalizado Matriz de adjacência As cores e permutações indicam, que este é um grafo Cada aresta é representada por duas entradas na mesma de Cayley de S4. cor, que são simétricas à diagonal principal.

Grafo de Nauru

139

Propriedades topológicas O grafo de Nauru tem duas incorporções diferentes como poliedros regulares generalizados: superfícies topológicas particionadas em arestas, vértices e faces de tal forma que há uma simetria levando qualquer bandeira (uma tripla incidente de um vértice, uma aresta 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 12 faces hexagonais, juntamente com os 24 vértices e 36 arestas do grafo de Nauru. O grafo dual desta incorporação é um grafo simétrico 6-regular com 12 vértices e 36 arestas.

Uma incorporação simétrica do grafo de Nauru sobre uma superfície de gênero-4, com seis faces dodecagonais.

A outra incorporação simétrica do gráfico Nauru tem seis faces dodecagonais, e formas de uma superfície de gênero 4. Seu dual não é um grafo simples, uma vez que cada face compartilha três arestas com quatro outras faces, mas um multigrafo. Este dual pode ser formado a partir do grafo de um octaedro regular substituindo cada aresta por um feixe de três arestas paralelas. O conjunto de faces de qualquer um destas duas incorporações é o conjunto de polígonos de Petrie da outra incorporação.

Propriedades geométricas 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 únicos 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 representação de seu grafo distancia-unidade tem o grupo diedral Dih6 como o seu grupo de simetria.

O grafo de Nauru como um grafo unidade de distância, em Žitnik, Horvat & Pisanski (2010).

Grafo de Nauru

140

História A primeira pessoa a escrever sobre o gráfico Nauru foi R. M. Foster em um eforço para colecionar todos os grafos cúbicos simétricos..[9] [1] [2] [3] [5] [7] [8] [9]

Eppstein, D., The many faces of the Nauru graph (http:/ / 11011110. livejournal. com/ 124705. html) on LiveJournal, 2007. Conder, M. and Dobcsányi, P. "Trivalent Symmetric Graphs Up to 768 Vertices." J. Combin. Math. Combin. Comput. 40, 41-63, 2002. . Royle, G. F024A data (http:/ / www. csse. uwa. edu. au/ ~gordon/ foster/ F024A. html) . . .

Grafo de Pappus Grafo de Pappus

O grafo de Pappus

Nomeado em honra a

Pappus de Alexandria

vértices

18

arestas

27

Raio

4

Diâmetro

4

Cintura

6

Automorfismos

216

Número cromático 2 Índice cromático

3

Propriedades

Cúbico Hamiltoniano Simétrico Distância-transitivo Distância-regular

No campo da matemática da teoria dos grafos o grafo de Pappus é um grafo não-orientado 3-regular com 18 vértices e 27 arestas formado como o grafo de Levi da configuração de Pappus.[1] É nomeado em honra a Pappus de Alexandria, um antigo matemático grego que se acredita ter descoberto o "teorema do hexágono" que descreve a configuração de Pappus. Todos os grafos distância-regular cúbicos são conhecidos; o grafo de Pappus é um destes 13 grafos.[2]

Grafo de Pappus

141

O grafo de Pappus tem um número de cruzamento retilíneo 5, e é o menor grafo cúbico com este número de cruzamento. Tem cintura 6, diâmetro 4, raio 4, número cromático 2, índice cromático 3 e é tanto 3-vértice-conectado quanto 3-aresta-conectado. O

grafo

de

Pappus

tem

um

polinômio

cromático

igual

a:

. O nome "grafo de Pappus" também tem sido usado para se referir a um grafo relacionado com nove vértices [3], com um vértice para cada ponto da configuração de Pappus e uma aresta para cada par de pontos na mesma linha; este grafo de nove vértice é 6-regular, e é o grafo complementar da união de três grafos triângulo disjuntos.

Propriedades algébricas O grupo de automorfismo do grafo de Pappus é um grupo de ordem 216. Ele age transitivamente sobre os vértices, nas arestas e nos arcos do grafo. Portanto, o grafo de Pappus é im grafo 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, o grafo de Biggs-Smith, referenciado como F018A, é o único grafo cúbico simétrico em 18 vértices.[4][5] O polinômio característico do grafo de Pappus é:

. É o único grafo com este

polinômio característico, tornando-se um grafo determinado pelo seu espectro.

Galeria

Grafo de Pappus colorido para destacar vários ciclos.

O índice cromático do grafo de Pappus é 3.

O número cromático do grafo de Pappus é 2.

[2] Brouwer, A. E.; Cohen, A. M.; and Neumaier, A. Distance-Regular Graphs. New York: Springer-Verlag, 1989. [4] Royle, G. "Cubic Symmetric Graphs (The Foster Census)." (http:/ / www. cs. uwa. edu. au/ ~gordon/ remote/ foster/ #census) [5] Conder, M. and Dobcsányi, P. "Trivalent Symmetric Graphs Up to 768 Vertices." J. Combin. Math. Combin. Comput. 40, 41-63, 2002.

Grafo de Petersen

142

Grafo de Petersen Grafo de Petersen

O gráfico de Petersen é mais comumente desenhado como um pentágono com um pentagrama no interior, com cinco raios

Nomeado em honra a

Julius Petersen

vértices

10

arestas

15

Raio

2

Diâmetro

2

Cintura

5

Automorfismos

120 (S5)

Número cromático

3

Índice cromático

4

Propriedades

Cúbico grafo fortemente regular distância-transitivo

No campo da matemática da teoria dos grafos o grafo de Petersen é um grafo não-orientado com 10 vértices e 15 arestas. É um pequeno grafo que serve como um exemplo útil e contra-exemplo para muitos problemas em teoria dos grafos. O grafo de Petersen é nomeado em honra a Julius Petersen, que em 1898 construiu o menor grafo cúbico sem ponte cujas arestas não podem ser coloridas com somente três cores[1]. Embora o grafo seja geralmente creditado a Petersen, ele tinha, de facto, aparecido pela primeira vez 12 anos antes, em 1886[2]. Donald Knuth afirma que o grafo de Petersen é "uma configuração notável que serve como um contra-exemplo para muitas previsões otimistas sobre o que poderia ser verdade para os grafos em geral."[3]

Construções O grafo de Petersen é o complementar do grafo linha de

. É também o grafo Kneser

; isso significa que

ele tem um vértice para cada subconjunto de dois elementos de um conjunto de 5 elementos, e dois vértices são conectados por uma aresta se e somente se os correspondentes subconjuntos de dois elementos são disjuntos entre si. Como um grafo de Kneser da forma é 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 identificadas em conjunto.

Grafo de Petersen

143

Incorporações O grafo de Petersen é não-planar. Qualquer grafo não planar tem como menores tanto o grafo completo o grafo bipartido completo

, mas o grafo de Petersen tem ambos os menores. O

, quanto

menor pode ser formado

restringindo-se as arestas de um acoplamento perfeito, por exemplo as cinco arestas curtas na primeira figura. O menor pode ser formado se deletando um vértice (por exemplo, o vértice central do desenho do 3-simétrico) e contratando uma aresta incidente para cada vizinho do vértice que foi excluído. O mais comum e simétrico desenho do plano do grafo de Petersen, como um pentagrama dentro de um pentágono, tem cinco cruzamentos. No entanto, este não é o melhor desenho que minimiza os cruzamentos; existe um outro desenho (mostrado na figura), com apenas dois cruzamentos. Assim, o grafo de Petersen tem número de cruzamento 2. Em um toro o grafo de Petersen pode ser desenhado sem cruzamentos de arestas; tem, portanto, gênero orientável 1.

O grafo de Petersen tem número de cruzamento 2.

O grafo de Petersen também pode ser desenhado (com cruzamentos) no plano de tal forma que todas as arestas tenham o mesmo comprimento. Ou seja, ele é um grafo distância-unidade. A mais simples superfície não orientável em que o grafo 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 incorporaçã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.

O grafo de Petersen é um grafo distância-unidade: ele pode ser desenhado no plano com cada aresta tendo comprimento de uma unidade.

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 dirigidas no grafo de Petersen pode ser transformado em qualquer outro tipo de percurso por uma simetria do grafo.[4] [4] .

Grafo de Shrikhande

144

Grafo de Shrikhande Grafo de Shrikhande

Nomeado em honra a

S. S. Shrikhande

vértices

16

arestas

48

Raio

2

Diâmetro

2

Cintura

3

Automorfismos

192

Número cromático 4 Índice cromático

6

Propriedades

Simétrico Euleriano Hamiltoniano Integral Fortemente regular

No campo da matemática da teoria dos grafos, o Grafo de Shrikhande é um grafo nomeado descoberto por S. S. Shrikhande em 1959.[1] é um grafo fortemente regular com 16 vértices e 48 arestas, com cada vértice tendo um grau de 6.

Propriedades 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 I ser adjacente a J. Em outras palavras, seus parâmetros para ser fortemente regulares são: {16,6,2,2}, com , esta igualdade implicando que o grafo é associado a um BIBD simétrico. Ele compartilha esses parâmetros com um grafo diferente, o 4×4 grafo torre (rook's graph). 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 grafo de Shrikhande é o 1-esqueleto de uma triangulação de Whitney de alguma superfície; no caso do grafo de Shrikhande, esta superfície é um toro em que cada vértice é cercado por seis triângulos.[2] Assim, o grafo de Shrikhande é um grafo toroidal. O dual desta incorporação é o grafo de Dick, um grafo cúbico simétrico. O grafo de Shrikhande não é um grafo distância-transitivo. É o menor grafo distância-regular que não é a distância-transitivo.[3]

Grafo de Shrikhande

145

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 é:

. Portanto o grafo de Shrikhande

é um grafo integral: seu espectro consiste inteiramente de inteiros. [1] . [2] . [3] .

Ligações externas • O grafo de Shrikhande (http://cameroncounts.wordpress.com/2010/08/26/the-shrikhande-graph/) , Peter Cameron, Agosto de 2010.

Galeria

O grafo de Shrikhande é um grafo toroidal.

O grafo de Shrikhande é Hamiltoniano.

O número cromático do grafo de Shrikhande é 4.

O índice cromático do grafo de Shrikhande é 6.

O grafo de Shrikhande desenhado simetricamente.

Grafos de Chang

146

Grafos de Chang Grafos de Chang

À direita da árvore os grafos de Chang; estes grafos são gerados selecionando uma mudança adequada no conjunto de vértices. À esquerda os grafos triangulares T8 originários: os vértices do conjunto de comutação são verdes, as arestas são vermelhas e as novas adicionadas em azul.

vértices

28

arestas

168

Propriedades

Fortemente regular

No campo da matemática da teoria dos grafos, os Grafos de Chang são um conjunto de grafos de árvore, que são um grafo 18-regular não-orientados com 28 vértices e 168 arestas.

Ligações externas • Weisstein, Eric W. "Chang Graphs." de MathWorld--A Wolfram Web Resource. http://mathworld.wolfram. com/ChangGraphs.html [1] • Página de Andries E. Brouwer's sobre grafos de Chang [2] • Página de Nadia Hamoud, "Os grafos de Chang" [3]

Referências [1] http:/ / mathworld. wolfram. com/ ChangGraphs. html [2] http:/ / www. win. tue. nl/ ~aeb/ graphs/ Chang. html [3] http:/ / math. ucdenver. edu/ ~wcherowi/ courses/ m6023/ nadia. pdf

Fontes e Editores da Página

Fontes e Editores da Página Sete pontes de Königsberg  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34441180  Contribuidores: Agiesbrecht, Bonás, Cícero, Diego UFCG, Fasouzafreitas, Jcb, JucaZero, Kaktus Kid, LeonardoRob0t, Maxtremus, Mschlindwein, Nuno Tavares, Opera Omnia, Oraculo, OtavioCC, Paulonei, Selenium, Thegoergen, Zdtrlik, 16 edições anónimas Teoria dos grafos  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34399998  Contribuidores: 200.249.56.xxx, 2A02:8109:8140:11:E1B4:C844:FFBC:7111, Al Lemos, AndreHahn, Bonás, BrunoSupremo, Carbol, Cícero, Daniel Dias Branco Arthaud, Diego UFCG, Dotti, E2m, Faustino.F, Firer, GOE, Hallel, Helder.wiki, Israelrocha, JSSX, JoaoMiranda, Jonex, Jorge, Lechatjaune, Leonardo.stabile, LeonardoG, LeonardoRob0t, Lusitana, Luís Felipe Braga, Manuel Anastácio, Maxtremus, Mrsouza, Muriel Gottrop, Nuno Tavares, OS2Warp, Opaulo, Pdellani, Polyethylen, Quiumen, Rei-artur, Ricardo Ferreira de Oliveira, Rickhard 22, Rlopes, Roxul84, Ruy Pugliesi, Rômulo Penido, SHASTA136013.ig.com.br, Salgueiro, Sobao, Stego, Thiago Serra, Thiagoprocaci, Viniciusmc, Webkid, Yanguas, 97 edições anónimas Grafo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34486206  Contribuidores: Colaborador Z, Cícero, Der kenner, FSogumo, Faustino.F, FelipeVargasRigo, Hallel, Humbertobrandao, Israelrocha, JotaCartas, Lechatjaune, Leonardo.stabile, LeonardoG, Luiz Jr, Maxtremus, Michelmfb, Nuno Tavares, Rcaetano, Ricardo Ferreira de Oliveira, Rômulo Penido, Salgueiro, Stegop, TradutoresJEDI, Villarinho, 34 edições anónimas Vértice  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34987970  Contribuidores: Eamaral, Ricardo Ferreira de Oliveira, 2 edições anónimas Aresta  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34692577  Contribuidores: Ricardo Ferreira de Oliveira Aresta múltipla  Fonte: http://pt.wikipedia.org/w/index.php?oldid=28562358  Contribuidores: Alexg, JSSX, 2 edições anónimas Ciclos em um grafo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34986042  Contribuidores: Adolfont, Ricardo Ferreira de Oliveira, Waltercruz, 1 edições anónimas Clique  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34435881  Contribuidores: Csandrocampos, Cícero, Fabiano Tatsch, Nuno Tavares, Pintopc, RafaAzevedo, Ricardo Ferreira de Oliveira, Rui Silva, Salgueiro, 5 edições anónimas O grau de um grafo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35143904  Contribuidores: Ricardo Ferreira de Oliveira, 1 edições anónimas Grafo bipartido  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141642  Contribuidores: Amcorreia, Ricardo Ferreira de Oliveira, Vanthorn, 1 edições anónimas Grafo bipartido completo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141649  Contribuidores: Ricardo Ferreira de Oliveira Grafo caminho  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141654  Contribuidores: FSogumo, Ricardo Ferreira de Oliveira, Vanthorn Grafo completo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34490966  Contribuidores: Bonás, Cícero, Jcmo, Lameiro, NunoMota, Ramzysamman, Ricardo Ferreira de Oliveira, Salgueiro, Zdtrlik, 3 edições anónimas Grafo cúbico  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141668  Contribuidores: Ricardo Ferreira de Oliveira, Zdtrlik Grafo Estrela  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35075881  Contribuidores: Ricardo Ferreira de Oliveira, Zdtrlik Grafo nulo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141778  Contribuidores: Ricardo Ferreira de Oliveira, Vanthorn Grafo orientado  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141781  Contribuidores: Kaktus Kid, Lijealso, Ricardo Ferreira de Oliveira, Rickgauden, Stegop, 2 edições anónimas Grafo simples  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35338323  Contribuidores: 2801:A0:1:1:216:3EFF:FE1D:C671, Bonás, Cícero, Fernando S. Aldado, Marivb, Rlopes, Salgueiro, 12 edições anónimas Grafo valorado  Fonte: http://pt.wikipedia.org/w/index.php?oldid=28843203  Contribuidores: FelipeVargasRigo, Leonardo.stabile, Ricardo Ferreira de Oliveira, Yanguas, 1 edições anónimas Homomorfismo de grafos  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35308493  Contribuidores: HanielBarbosa, Kaktus Kid, 1 edições anónimas Isomorfismo de grafos  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35167823  Contribuidores: Ricardo Ferreira de Oliveira, 2 edições anónimas Laço  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35159317  Contribuidores: Eduardo P, Ricardo Ferreira de Oliveira Multigrafo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35137054  Contribuidores: Alexg, HanielBarbosa, Ricardo Ferreira de Oliveira, 3 edições anónimas Pseudografo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=8900044  Contribuidores: Alexg, HanielBarbosa, Ricardo Ferreira de Oliveira, 3 edições anónimas Quiver  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35037982  Contribuidores: Al Lemos, Leyo, Ricardo Ferreira de Oliveira, Rodrigo Devolder, 1 edições anónimas Vértice de corte (teoria dos grafos)  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35201304  Contribuidores: Eduardo P, Ricardo Ferreira de Oliveira, 5 edições anónimas Vizinhança  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34981109  Contribuidores: Asturius, Ricardo Ferreira de Oliveira Árvores  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34942902  Contribuidores: Jpcwiki, Leonardo.stabile, Luishsousa, Luiz Jr, Ricardo Ferreira de Oliveira, Salamat, 4 edições anónimas Árvore de extensão  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35061145  Contribuidores: Alexg, Ricardo Ferreira de Oliveira, Rômulo Penido, 4 edições anónimas Árvore de extensão mínima  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34916369  Contribuidores: Alessandro70, Belanidia, Cícero, Danielamaral, Leonardo.stabile, Less, Lond, Reynaldo, Ricardo Ferreira de Oliveira, Rômulo Penido, Salgueiro, Ungoliant MMDCCLXIV, 5 edições anónimas Matriz de adjacência  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34718389  Contribuidores: BMalajovich, Chaves, Cícero, E2mb0t, FelipeVargasRigo, Leonardo.stabile, Lucas081994, Marivb, Ricardo Ferreira de Oliveira, Salgueiro, 17 edições anónimas Matriz de incidência  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35182861  Contribuidores: FelipeVargasRigo, 1 edições anónimas Lista de adjacência  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35176950  Contribuidores: Eric Duff, Hermógenes Teixeira Pinto Filho, Lijealso, Ricardo Ferreira de Oliveira, 5 edições anónimas Automorfismo de grafos  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35208064  Contribuidores: Ricardo Ferreira de Oliveira, Ruy Pugliesi, 2 edições anónimas Grafo regular  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141784  Contribuidores: Marlus Gancher, Ricardo Ferreira de Oliveira, Zdtrlik Grafo fortemente regular  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141766  Contribuidores: Ricardo Ferreira de Oliveira, Vanthorn Grafo distância-regular  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141761  Contribuidores: Ricardo Ferreira de Oliveira, Vanthorn Grafo distância-transitivo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141764  Contribuidores: Ricardo Ferreira de Oliveira, Vanthorn Grafo simétrico  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141788  Contribuidores: Ricardo Ferreira de Oliveira, Zdtrlik Grafo meio-transitivo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141771  Contribuidores: Ricardo Ferreira de Oliveira, Vanthorn Grafo semissimétrico  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141786  Contribuidores: Ricardo Ferreira de Oliveira, Yanguas, Zdtrlik

147

Fontes e Editores da Página Grafo aresta-transitivo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141629  Contribuidores: Ricardo Ferreira de Oliveira, Vanthorn Grafo vértice-transitivo  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141790  Contribuidores: Ricardo Ferreira de Oliveira, Vanthorn, 1 edições anónimas Grafo de Cayley  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141678  Contribuidores: Eamaral, JotaCartas, Ricardo Ferreira de Oliveira, Vanthorn Grafo antissimétrico  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141627  Contribuidores: Blamed, Ricardo Ferreira de Oliveira, Zdtrlik Grafo assimétrico  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141635  Contribuidores: Ricardo Ferreira de Oliveira, Zdtrlik Busca em largura  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34520693  Contribuidores: Aexpedito, Ariel C.M.K., Cícero, Diego Queiroz, EduM, FelipeVargasRigo, Fernando S. Aldado, Hugo Baés, LeonardoG, Maxtremus, Nuno Tavares, O CoRVo, Olavom, Renato Rebouças, Ricardo Ferreira de Oliveira, Salgueiro, Vini 175, 20 edições anónimas Busca em profundidade  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34520840  Contribuidores: Bjmedeiros, BrunoSupremo, Cícero, FSogumo, FelipeVargasRigo, Fernando S. Aldado, Hermógenes Teixeira Pinto Filho, Leonardo.stabile, Maxtremus, Nuno Tavares, Olavom, 17 edições anónimas Caminho  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35611783  Contribuidores: AndreHahn, Quiumen, 4 edições anónimas Caminho euleriano  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34883878  Contribuidores: ErikvanB, Kaktus Kid, Marcelloc2, Maxtremus, Ricardo Ferreira de Oliveira, UlrichSchiel, 6 edições anónimas Caminho hamiltoniano  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34471945  Contribuidores: Andrevruas, Cícero, Humbertobrandao, Jic, Lechatjaune, Luiz Jr, Maxtremus, OTAVIO1981, Reynaldo, Ricardo Ferreira de Oliveira, Rômulo Penido, Salgueiro, 10 edições anónimas Ordenação topológica  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34853369  Contribuidores: Ricardo Ferreira de Oliveira, SimãoMiguel, 4 edições anónimas Algoritmo de Bellman-Ford  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34442419  Contribuidores: BrunoSupremo, Cícero, Dermeister, Elloabguedes, FelipeVargasRigo, Glum, Hermógenes Teixeira Pinto Filho, Leonardo.stabile, Patrick, 15 edições anónimas Algoritmo A*  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34646636  Contribuidores: BrunoSupremo, ChristianH, Dhminholi, FelipeVargasRigo, GRS73, Hermógenes Teixeira Pinto Filho, Hgfernan, Leonardo.stabile, Mschlindwein, Thom, 12 edições anónimas Algoritmo de Floyd-Warshall  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34646695  Contribuidores: Cícero, FelipeVargasRigo, Lameiro, Lampiao, Leonardo.stabile, Ricardo Ferreira de Oliveira, SrMeneses, 28 edições anónimas Algoritmo de Johnson  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34646698  Contribuidores: Auréola, Dbastro, Jonas AGX, 2 edições anónimas Algoritmo de Kruskal  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34442529  Contribuidores: CommonsDelinker, Cícero, Danielamaral, Danielcc10, FelipeVargasRigo, Giro720, Kaktus Kid, Leonardo.stabile, Maxtremus, Osias, Ricardo Ferreira de Oliveira, Salgueiro, 27 edições anónimas Algoritmo de Prim  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34494498  Contribuidores: Aexpedito, Cícero, Firmo, Gkitchmaker, Indech, Leonardo.stabile, LeonardoG, Martiniano Hilário, Ricardo Ferreira de Oliveira, Rômulo Penido, 20 edições anónimas Algoritmo de Dijkstra  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34440939  Contribuidores: Adailton, Attom, Bortolozzi, Chicocvenancio, CommonsDelinker, Danielcc10, Desnes, Diego UFCG, FelipeVargasRigo, Gfonsecabr, Gruberdiego, JotaCartas, Juntas, Leonardo.stabile, Lijealso, Manuel Anastácio, Mecanismo, Osias, Pedro Ivan de Albuquerque Lima, Ricardo Ferreira de Oliveira, Rui Malheiro, Suisui, Xico.nunes, 69 edições anónimas Algoritmo de Boruvka  Fonte: http://pt.wikipedia.org/w/index.php?oldid=34454832  Contribuidores: Cícero, Manuel Anastácio, Nuno Tavares, Osias, Pedra, Ricardo Ferreira de Oliveira, Salgueiro, 9 edições anónimas Grafo de Biggs-Smith  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141672  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Brouwer-Haemers  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141675  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Desargues  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141692  Contribuidores: Ricardo Ferreira de Oliveira, Rossi pena Grafo de Folkman  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141696  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Foster  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141699  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Frucht  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141704  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Gray  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141712  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Heawood  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141716  Contribuidores: Alexg, Ricardo Ferreira de Oliveira Grafo de Higman-Sims  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141718  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Hoffman-Singleton  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141720  Contribuidores: Koko90, Ricardo Ferreira de Oliveira Grafo de Holt  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141725  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Ljubljana  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141728  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Nauru  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35466463  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Pappus  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141736  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Petersen  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35569975  Contribuidores: Ricardo Ferreira de Oliveira Grafo de Shrikhande  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141749  Contribuidores: Ricardo Ferreira de Oliveira Grafos de Chang  Fonte: http://pt.wikipedia.org/w/index.php?oldid=35141793  Contribuidores: Ricardo Ferreira de Oliveira

148

Fontes, Licenças e Editores da Imagem

Fontes, Licenças e Editores da Imagem Ficheiro:Pontes Königsberg.JPG  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Pontes_Königsberg.JPG  Licença: Public Domain  Contribuidores: Original uploader was Diego UFCG at pt.wikipedia Ficheiro:Konigsburg graph.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Konigsburg_graph.png  Licença: GNU Free Documentation License  Contribuidores: Nux, Squizzz Ficheiro:Grafo k4 plano.PNG  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Grafo_k4_plano.PNG  Licença: GNU Free Documentation License  Contribuidores: Original uploader was Marivb at pt.wikipedia Imagem:6n-graf.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:6n-graf.svg  Licença: Public Domain  Contribuidores: User:AzaToth Ficheiro:6n-graf.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:6n-graf.svg  Licença: Public Domain  Contribuidores: User:AzaToth Ficheiro:Aresta.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Aresta.png  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Ricardo Ferreira de Oliveira File:VR complex.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:VR_complex.svg  Licença: Public Domain  Contribuidores: David Eppstein Image:UndirectedDegrees.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:UndirectedDegrees.svg  Licença: GNU Free Documentation License  Contribuidores: Melchoir Ficheiro:Conjugate-dessins.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Conjugate-dessins.svg  Licença: Public Domain  Contribuidores: David Eppstein Ficheiro:Depth-first-tree.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Depth-first-tree.png  Licença: GNU Free Documentation License  Contribuidores: Alexander Drichel, Braindrain0000, Bukk, Dcoetzee, EugeneZelenko, Regnaron, 2 edições anónimas Image:Simple-bipartite-graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Simple-bipartite-graph.svg  Licença: Public Domain  Contribuidores: MistWiz Ficheiro:RecursiveEvenBipartite.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:RecursiveEvenBipartite.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Melchoir Image:Biclique K 3 5.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Biclique_K_3_5.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Star graphs.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Star_graphs.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Biclique K 3 3.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Biclique_K_3_3.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Path-graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Path-graph.svg  Licença: Public Domain  Contribuidores: Momotaro Ficheiro:Petersen1 tiny.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Petersen1_tiny.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Leshabirukov Ficheiro:Biclique_K_3_3.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Biclique_K_3_3.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Frucht graph.dot.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Frucht_graph.dot.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Image:Star_network_7.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Star_network_7.svg  Licença: GNU Free Documentation License  Contribuidores: Merdis Image:Directed.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Directed.svg  Licença: Public Domain  Contribuidores: Grafite, Jcb, Josette, 2 edições anónimas Image:DirectedDegrees.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:DirectedDegrees.svg  Licença: GNU Free Documentation License  Contribuidores: Melchoir Imagem:Directed acyclic graph 2.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Directed_acyclic_graph_2.svg  Licença: Public Domain  Contribuidores: Johannes Rössel (talk) Image:4-tournament.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:4-tournament.svg  Licença: Public Domain  Contribuidores: Booyabazooka Ficheiro:Prim Algorithm 0.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_0.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel Image:Graph isomorphism a.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Graph_isomorphism_a.svg  Licença: GNU Free Documentation License  Contribuidores: User:Booyabazooka Image:Graph isomorphism b.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Graph_isomorphism_b.svg  Licença: GNU Free Documentation License  Contribuidores: User:Booyabazooka Image:Whitneys theorem exception.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Whitneys_theorem_exception.svg  Licença: Public Domain  Contribuidores: User:Dcoetzee *derivative work: Dcoetzee (talk) Complete_graph_K3.svg: Dbenbenn Complete_bipartite_graph_K3,1.svg: Dbenbenn Ficheiro:6n-graph2.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:6n-graph2.svg  Licença: Public Domain  Contribuidores: Booyabazooka, Dcoetzee, 1 edições anónimas Imagem:Multi-pseudograph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Multi-pseudograph.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: 0x24a537r9 Ficheiro:Directed.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Directed.svg  Licença: Public Domain  Contribuidores: Grafite, Jcb, Josette, 2 edições anónimas Ficheiro:Undirected chain articulation points.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Undirected_chain_articulation_points.svg  Licença: Public Domain  Contribuidores: ~ Booya Bazooka. Original uploader was Booyabazooka at en.wikipedia Ficheiro:Undirected.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Undirected.svg  Licença: Public Domain  Contribuidores: JMCC1, Josette, Kilom691, 2 edições anónimas Image:6n-graf.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:6n-graf.svg  Licença: Public Domain  Contribuidores: User:AzaToth Image:Octahedron graph.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Octahedron_graph.png  Licença: GNU Free Documentation License  Contribuidores: User:Arbor Ficheiro:Tree graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Tree_graph.svg  Licença: Public Domain  Contribuidores: Dcoetzee, Tacsipacsi, Tizio Ficheiro:4x4 grid spanning tree.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:4x4_grid_spanning_tree.svg  Licença: Public Domain  Contribuidores: David Eppstein Ficheiro:Minimum spanning tree.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Minimum_spanning_tree.svg  Licença: Public Domain  Contribuidores: User:Dcoetzee Imagem:6n-graph2.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:6n-graph2.svg  Licença: Public Domain  Contribuidores: Booyabazooka, Dcoetzee, 1 edições anónimas File:Lista de adjacencia.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Lista_de_adjacencia.png  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Ricardo Ferreira de Oliveira File:GuidoRossum.PNG  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:GuidoRossum.PNG  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Ricardo Ferreira de Oliveira Imagem:Petersen1 tiny.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Petersen1_tiny.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Leshabirukov Ficheiro:Dodecahedral graph.neato.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Dodecahedral_graph.neato.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Ficheiro:Arrow east.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Arrow_east.svg  Licença: Public Domain  Contribuidores: User:MarianSigler Ficheiro:Shrikhande graph square.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Shrikhande_graph_square.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Arrow west.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Arrow_west.svg  Licença: Public Domain  Contribuidores: User:MarianSigler Ficheiro:Paley13 no label.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Paley13_no_label.svg  Licença: Public Domain  Contribuidores: Paley13.svg: Original uploader was David Eppstein at en.wikipedia derivative work: Koko90 (talk) Ficheiro:Arrow south.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Arrow_south.svg  Licença: Public Domain  Contribuidores: User:MarianSigler Ficheiro:F26A graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:F26A_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Nauru graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Nauru_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Holt graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Holt_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Folkman graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Folkman_graph.svg  Licença: Public Domain  Contribuidores: David Eppstein

149

Fontes, Licenças e Editores da Imagem Ficheiro:Biclique K 3 5.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Biclique_K_3_5.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Truncated tetrahedral graph.circo.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Truncated_tetrahedral_graph.circo.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Ficheiro:Frucht graph.neato.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Frucht_graph.neato.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Ficheiro:Arrow north.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Arrow_north.svg  Licença: Public Domain  Contribuidores: User:MarianSigler Imagem:Z 2xZ 3.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Z_2xZ_3.svg  Licença: Public Domain  Contribuidores: Tosha Image:0-regulární graf na 6 vrcholech.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:0-regulární_graf_na_6_vrcholech.png  Licença: Public Domain  Contribuidores: Original uploader was Pavel Kotrč at cs.wikipedia Image:1-regulární graf na 6 vrcholech.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:1-regulární_graf_na_6_vrcholech.svg  Licença: Public Domain  Contribuidores: Original uploader was Pavel Kotrč at cs.wikipedia, SVG by User:Jxjl Image:2-regulární graf na 6 vrcholech.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:2-regulární_graf_na_6_vrcholech.svg  Licença: Public Domain  Contribuidores: User:Superm401, based on work by Pavel Kotrč File:3-regular graph2.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:3-regular_graph2.svg  Licença: Public Domain  Contribuidores: AASoft, SVG: Marlus_Gancher Imagem:Paley13.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Paley13.svg  Licença: Public Domain  Contribuidores: Original uploader was David Eppstein at en.wikipedia Image:Shrikhande graph square.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Shrikhande_graph_square.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:BiggsSmith.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:BiggsSmith.svg  Licença: Public Domain  Contribuidores: Original uploader was Stolee at en.wikipedia Image:Petersen1 tiny.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Petersen1_tiny.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Leshabirukov Imagem:Folkman graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Folkman_graph.svg  Licença: Public Domain  Contribuidores: David Eppstein Image:Gray graph 2COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Gray_graph_2COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:TruncatedTetrahedron.gif  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:TruncatedTetrahedron.gif  Licença: Public domain  Contribuidores: Radagast3 Image:Cayley graph of F2.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Cayley_graph_of_F2.svg  Licença: Public Domain  Contribuidores: User:Dbenbenn Image:Cayley Graph of Dihedral Group D4.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Cayley_Graph_of_Dihedral_Group_D4.svg  Licença: Public Domain  Contribuidores: User:Denisgomes, User:Lipedia Image:Period-3-graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Period-3-graph.svg  Licença: Public Domain  Contribuidores: Original uploader was David Eppstein at en.wikipedia Image:Asym-graph.PNG  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Asym-graph.PNG  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Mikkalai File:Frucht graph.dot.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Frucht_graph.dot.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Ficheiro:Breadth-First-Search-Algorithm.gif  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Breadth-First-Search-Algorithm.gif  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Mre Image:Breadth-first search Algorithm.gif  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Breadth-first_search_Algorithm.gif  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: User:Aexpedito Ficheiro:MapGermanyGraph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:MapGermanyGraph.svg  Licença: Public Domain  Contribuidores: AndreasPraefcke, Mapmarks, MistWiz, Regnaron Ficheiro:GermanyBFS.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:GermanyBFS.svg  Licença: Public Domain  Contribuidores: Regnaron Ficheiro:Depthfirst.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Depthfirst.png  Licença: GNU Free Documentation License  Contribuidores: User:Baruneju Ficheiro:graph.traversal.example.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Graph.traversal.example.svg  Licença: GNU Free Documentation License  Contribuidores: Miles Ficheiro:konigsburg graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Konigsburg_graph.svg  Licença: GNU Free Documentation License  Contribuidores: AnonMoos, Piotrus, Riojajar, Squizzz Ficheiro:Labelled Eulergraph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Labelled_Eulergraph.svg  Licença: Public Domain  Contribuidores: S Sepp Ficheiro:Hamilton path.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Hamilton_path.svg  Licença: Creative Commons Attribution-Sharealike 2.5  Contribuidores: Actam, Superborsuk, 1 edições anónimas Ficheiro:Hamilton path.gif  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Hamilton_path.gif  Licença: Creative Commons Attribution-ShareAlike 3.0 Unported  Contribuidores: Claudio Rocchini Ficheiro:Hamiltonian path.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Hamiltonian_path.svg  Licença: Creative Commons Attribution-ShareAlike 3.0 Unported  Contribuidores: Christoph Sommer Ficheiro:Mycielski graph k4 hamiltonian path.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Mycielski_graph_k4_hamiltonian_path.svg  Licença: Public Domain  Contribuidores: Dcoetzee, Mlepicki Image:Directed acyclic graph.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Directed_acyclic_graph.png  Licença: Public Domain  Contribuidores: Anarkman, Dcoetzee, Ddxc, EugeneZelenko, Fæ, Joey-das-WBF File:Johnson's algorithm.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Johnson's_algorithm.svg  Licença: Public Domain  Contribuidores: David Eppstein Ficheiro:Kruskal Algorithm 1.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Kruskal_Algorithm_1.svg  Licença: Public Domain  Contribuidores: Maksim, Yuval Madar Ficheiro:Kruskal Algorithm 2.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Kruskal_Algorithm_2.svg  Licença: Public Domain  Contribuidores: Maksim, Yuval Madar Ficheiro:Kruskal Algorithm 3.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Kruskal_Algorithm_3.svg  Licença: Public Domain  Contribuidores: Maksim, Yuval Madar Ficheiro:Kruskal Algorithm 4.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Kruskal_Algorithm_4.svg  Licença: Public Domain  Contribuidores: Maksim, Yuval Madar Ficheiro:Kruskal Algorithm 5.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Kruskal_Algorithm_5.svg  Licença: Public Domain  Contribuidores: Maksim, Yuval Madar Ficheiro:Kruskal Algorithm 6.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Kruskal_Algorithm_6.svg  Licença: Public Domain  Contribuidores: Maksim, Yuval Madar Ficheiro:Prim.PNG  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim.PNG  Licença: desconhecido  Contribuidores: Original uploader was Rômulo Penido at pt.wikipedia Image:Prim Algorithm 0.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_0.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel Image:Prim Algorithm 1.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_1.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel, Stefan Birkner Image:Prim Algorithm 2.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_2.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel, Stefan Birkner Image:Prim Algorithm 3.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_3.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel, Stefan Birkner Image:Prim Algorithm 4.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_4.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel, Stefan Birkner Image:Prim Algorithm 5.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_5.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel, Stefan Birkner Image:Prim Algorithm 6.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_6.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel, Stefan Birkner

150

Fontes, Licenças e Editores da Imagem Image:Prim Algorithm 7.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Prim_Algorithm_7.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Alexander Drichel, Stefan Birkner Image:Dijkstra_Animation.gif  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Dijkstra_Animation.gif  Licença: Public Domain  Contribuidores: Ibmua Image:Biggs-Smith graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Biggs-Smith_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Imagem:Biggs-Smith graph 3COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Biggs-Smith_graph_3COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Imagem:Biggs-Smith graph 3color edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Biggs-Smith_graph_3color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Imagem:BiggsSmith.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:BiggsSmith.svg  Licença: Public Domain  Contribuidores: Original uploader was Stolee at en.wikipedia File:Brouwer Haemers graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Brouwer_Haemers_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Claudio Rocchini Image:DesarguesGraph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:DesarguesGraph.svg  Licença: Public Domain  Contribuidores: David Eppstein Image:Desargues graph colored.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Desargues_graph_colored.svg  Licença: Creative Commons Attribution-Share Alike  Contribuidores: R. A. Nonenmacher Image:Desargues graph 3color edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Desargues_graph_3color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Image:Desargues graph 2COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Desargues_graph_2COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Image:Folkman graph alt.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Folkman_graph_alt.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Folkman graph 4color edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Folkman_graph_4color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Folkman graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Folkman_graph.svg  Licença: Public Domain  Contribuidores: David Eppstein File:Folkman Lombardi.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Folkman_Lombardi.svg  Licença: Public Domain  Contribuidores: David Eppstein Image:Foster graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Foster_graph.svg  Licença: Creative Commons Attribution-ShareAlike 3.0 Unported  Contribuidores: Claudio Rocchini Ficheiro:Foster graph colored.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Foster_graph_colored.svg  Licença: Creative Commons Attribution-Share Alike  Contribuidores: R. A. Nonenmacher Ficheiro:Foster graph 2COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Foster_graph_2COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Foster_graph_3color_edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Foster_graph_3color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 File:frucht graph.neato.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Frucht_graph.neato.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Ficheiro:frucht_graph.dot.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Frucht_graph.dot.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Ficheiro:Frucht_graph_3COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Frucht_graph_3COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Koko90 Ficheiro:Frucht Lombardi.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Frucht_Lombardi.svg  Licença: Public Domain  Contribuidores: David Eppstein Image:Gray graph hamiltonian.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Gray_graph_hamiltonian.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Gray graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Gray_graph.svg  Licença: Public Domain  Contribuidores: David Eppstein Ficheiro:gray_graph_2COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Gray_graph_2COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:gray_graph_3color_edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Gray_graph_3color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Gray configuration.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Gray_configuration.svg  Licença: Public Domain  Contribuidores: David Eppstein Image:Heawood Graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Heawood_Graph.svg  Licença: Creative Commons Attribution-Share Alike  Contribuidores: R. A. Nonenmacher Image:Szilassi polyhedron.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Szilassi_polyhedron.svg  Licença: Public Domain  Contribuidores: David Eppstein Ficheiro:3-crossing Heawood graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:3-crossing_Heawood_graph.svg  Licença: Public Domain  Contribuidores: David Eppstein Ficheiro:Heawood graph 3color edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Heawood_graph_3color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Heawood graph 2COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Heawood_graph_2COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:7x-torus.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:7x-torus.svg  Licença: Public Domain  Contribuidores: Original uploader was David Eppstein at en.wikipedia Image:Higman Sims Graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Higman_Sims_Graph.svg  Licença: Creative Commons Attribution 3.0  Contribuidores: Claudio Rocchini Image:Higman Sims Graph Parts.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Higman_Sims_Graph_Parts.svg  Licença: Creative Commons Attribution 3.0  Contribuidores: Claudio Rocchini Image:Higman-Sims-19.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Higman-Sims-19.svg  Licença: Public Domain  Contribuidores: Gro-Tsen File:Hoffman-Singleton graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Hoffman-Singleton_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Uzyel Image:Hoffman singleton graph circle2.gif  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Hoffman_singleton_graph_circle2.gif  Licença: Creative Commons Attribution-ShareAlike 3.0 Unported  Contribuidores: Claudio Rocchini File:Holt graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Holt_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Holt graph 3COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Holt_graph_3COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Holt graph 5color edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Holt_graph_5color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Holt graph hamiltonian.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Holt_graph_hamiltonian.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Ljubljana graph hamiltonian.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Ljubljana_graph_hamiltonian.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Imagem:Ljubljana_graph_2COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Ljubljana_graph_2COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Imagem:Ljubljana_graph_3color_edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Ljubljana_graph_3color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90

151

Fontes, Licenças e Editores da Imagem Imagem:Ljubljana graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Ljubljana_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Imagem:Ljubljana configuration.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Ljubljana_configuration.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Nauru graph.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Nauru_graph.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Symmetric group 4; Cayley graph 1,5,21 (Nauru torus).svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Symmetric_group_4;_Cayley_graph_1,5,21_(Nauru_torus).svg  Licença: Public Domain  Contribuidores: Mate2code Ficheiro:Symmetric group 4; Cayley graph 1,5,21 (Nauru Petersen).svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Symmetric_group_4;_Cayley_graph_1,5,21_(Nauru_Petersen).svg  Licença: Public Domain  Contribuidores: Lipedia Ficheiro:Symmetric group 4; Cayley graph 1,5,21 (adjacency matrix).svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Symmetric_group_4;_Cayley_graph_1,5,21_(adjacency_matrix).svg  Licença: Public Domain  Contribuidores: Lipedia Ficheiro:Nauru graph 3d.png  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Nauru_graph_3d.png  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: David Eppstein File:Nauru unit distance.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Nauru_unit_distance.svg  Licença: Public Domain  Contribuidores: David Eppstein Image:Pappus graph LS.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Pappus_graph_LS.svg  Licença: Public Domain  Contribuidores: David Eppstein Imagem:Pappus graph colored.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Pappus_graph_colored.svg  Licença: Creative Commons Attribution-Share Alike  Contribuidores: R. A. Nonenmacher Imagem:Pappus graph 3color edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Pappus_graph_3color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Imagem:Pappus graph 2COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Pappus_graph_2COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Image:Petersen graph, two crossings.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Petersen_graph,_two_crossings.svg  Licença: Public Domain  Contribuidores: User:Dbenbenn Imagem:Petersen graph, unit distance.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Petersen_graph,_unit_distance.svg  Licença: Public Domain  Contribuidores: User:Dbenbenn Ficheiro:Shrikhande torus.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Shrikhande_torus.svg  Licença: Public Domain  Contribuidores: David Eppstein Ficheiro:Shrikhande graph 4COL.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Shrikhande_graph_4COL.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Shrikhande graph 6color edge.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Shrikhande_graph_6color_edge.svg  Licença: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0  Contribuidores: Koko90 Ficheiro:Shrikhande graph symmetrical.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Shrikhande_graph_symmetrical.svg  Licença: Creative Commons Attribution-Share Alike  Contribuidores: R. A. Nonenmacher Ficheiro:Shrikhande Lombardi.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Shrikhande_Lombardi.svg  Licença: Public Domain  Contribuidores: David Eppstein File:Chang graphs.svg  Fonte: http://pt.wikipedia.org/w/index.php?title=Ficheiro:Chang_graphs.svg  Licença: Creative Commons Attribution-Sharealike 3.0  Contribuidores: Claudio Rocchini

152

Licença

Licença Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/

153

Related Documents

Teoria Dos Grafos
January 2021 2
Teoria Dos Erros
March 2021 0
7- Teoria Dos Erros
March 2021 0
Teoria Dos Erros
March 2021 0

More Documents from "Markdeniel"

Teoria Dos Grafos
January 2021 2
February 2021 10
Imagina: Lo Imposible
January 2021 2
February 2021 2