DCC/UFBA – MAT156 Adolfo Almeida Duran 2005. Adolfo Duran - 2005Teoria dos Grafos2 Apresentação...
Transcript of DCC/UFBA – MAT156 Adolfo Almeida Duran 2005. Adolfo Duran - 2005Teoria dos Grafos2 Apresentação...
DCC/UFBA – MAT156
Adolfo Almeida Duran
2005
Adolfo Duran - 2005 Teoria dos Grafos 2
Apresentação
• O curso / motivação
• Horário /sala
• Programa do curso
• Referências
• Avaliação
• E-mail : [email protected]
Adolfo Duran - 2005 Teoria dos Grafos 3
• Porque estudar Grafos
– Importante ferramenta matemática com aplicação em diversas áreas do conhecimento • Genética, química, pesquisa operacional,
telecomunicações, engenharia elétrica, redes de computadores, conexão de vôos aéreos, restrições de precedência, fluxo de programas, dentre outros
– Utilizados na definição e/ou resolução de problemas
Introdução
Adolfo Duran - 2005 Teoria dos Grafos 4
• Porque estudar Grafos
– Em computação: estudar grafos é mais uma forma de solucionar problemas computáveis
– Os estudos teóricos em grafos, buscam o desenvolvimento de algoritmos mais eficientes.
Adolfo Duran - 2005 Teoria dos Grafos 5
• O que são Grafos
• Diagrama - Corresponde a soma de pontos e linhas, onde os pontos apresentam alguma informação e as linhas indicam o relacionamento entre dois pontos quaisquer
• Ferramenta de modelagem• Abstração matemática que representa situações reais
através de um diagrama.
Adolfo Duran - 2005 Teoria dos Grafos 6
• As pontes de Königsberg
Um pouco de história
É possível sair de uma das ilhas, passar uma única vez por cada uma das pontes e retornar ao ponto de origem ?
Adolfo Duran - 2005 Teoria dos Grafos 7
• As pontes de Königsberg– Resolvido em 1736 por Leonhard Euler
– Necessário um modelo para representar o problema
– Abstração de detalhes irrelevantes:• Área de cada ilha• Formato de cada ilha• Tipo da ponte, etc.
Adolfo Duran - 2005 Teoria dos Grafos 8
• As pontes de Königsberg– Euler generalizou o problema através de um
modelo de grafos
Adolfo Duran - 2005 Teoria dos Grafos 9
• As pontes de Königsberg– Euler mostrou que não existe o trajeto proposto
utilizando o modelo em grafos • Verifique nos grafos abaixo se o trajeto proposto é possível
Adolfo Duran - 2005 Teoria dos Grafos 10
• O problema das 3 casas– É possível conectar os 3 serviços às 3 casas sem
haver cruzamento de tubulação?
água luz telefone
A teoria dos grafos mostra que não é possível
Adolfo Duran - 2005 Teoria dos Grafos 11
Quantas cores são necessárias para colorir o mapa do Brasil, sendo que estados adjacentes não podem ter a mesma cor?
Adolfo Duran - 2005 Teoria dos Grafos 12
Questões sobre o caminho mínimoDe forma a reduzir seus custos operacionais, uma empresa de transporte de cargas deseja oferecer aos motoristas de sua frota um mecanismo que os auxilie a selecionar o melhor caminho (o de menor distância) entre quaisquer duas cidades por ela servidas, de forma a que sejam minimizados os custos de transporte.
Adolfo Duran - 2005 Teoria dos Grafos 13
Adolfo Duran - 2005 Teoria dos Grafos 14
• Modelagem com grafos
–Estamos interessados em objetos e nas relações entre eles
–Quem são eles nos problemas apresentados?
–Como representar graficamente?
Adolfo Duran - 2005 Teoria dos Grafos 15
• Modelagem com grafos–No problema das casas
• Vértices são casas e serviços• Arestas são as tubulações entre casas e serviços
–No problema da coloração de mapas• Vértices são estados• Arestas relacionam estados vizinhos
–No problema do caminho mais curto• Vértices são as cidades• Arestas são as ligações entre as cidades
Adolfo Duran - 2005 Teoria dos Grafos 16
•Três desenvolvimentos isolados despertaram o interesse pela área
–Formulação do problema das 4 cores (De Morgan 1852).
Qual a quantidade mínima de cores para colorir um mapa de tal forma que países fronteiriços possuam cores diferentes? Apresenta-se um exemplo em que 3 cores não são suficientes. Uma prova de que 5 cores é suficiente foi formulada. Conjecturou-se então que 4 cores seriam suficientes. Esta questão ficou em aberto até 1976 quando Appel e Haken provaram para 4 cores
Adolfo Duran - 2005 Teoria dos Grafos 17
• Três desenvolvimentos isolados despertaram o interesse pela área
– Problema do ciclo Hamiltoniano (Hamilton 1859)
Existem n cidades. Cada par de cidades pode ser adjacente ou não arbitrariamente. Partindo de uma cidade qualquer, o problema consiste em determinar um trajeto que passe exatamente uma vez em cada cidade e retorne ao ponto de partida.
Adolfo Duran - 2005 Teoria dos Grafos 18
• Três desenvolvimentos isolados despertaram o interesse pela área
– Teoria das árvores - Kirchoff (1847) - problemas de circuitos elétricos - Cayley (1857) - Química Orgânica
Adolfo Duran - 2005 Teoria dos Grafos 19
• Dois tipos de elementos
– Vértices ou nós
– Arestas
Definições
v1
v2v3 v4
v5 v6
Adolfo Duran - 2005 Teoria dos Grafos 20
• G = (V,E)
– V é um conjunto finito não-vazio de vértices
– E é um conjunto finito de arestas
– |V| é o número de vértices representado por n, se n=|V|
– |E| é o número de arestas representado por m, isto é m=|E|
– Cada aresta e pertencente ao conjunto E será denotada pelo
par de vértices (x,y) que a forma
– Dizemos que os vértices x e y são extremos (ou
extremidades) da aresta e.
Grafo Simples
Adolfo Duran - 2005 Teoria dos Grafos 21
G = (V,E)
Adolfo Duran - 2005 Teoria dos Grafos 22
Dois vértices x e y são ditos adjacentes ou vizinhos se existe uma aresta e unindo-os.
Os vértices u e v são ditos incidentes na aresta e, se eles são extremos de e.
Duas arestas são adjacentes se elas têm ao menos um vértice em comum.
A aresta e=(x,y) é incidente a ambos os vértices x e y.
Adolfo Duran - 2005 Teoria dos Grafos 23
v1
v2v3 v4
v5 v6
e1V = {v1, v2, v3, v4, v5, v6}
E = {(v1,v2),(v1,v3),(v1,v4),(v2,v4),(v3,v4),(v4,v5)}
Grafo simples
e1 é incidente a v4 e v5
Adolfo Duran - 2005 Teoria dos Grafos 24
Exemplo
Exercício
Desenhe a representação geométrica do seguinte grafo:
V = {1,2,3,4,5,6}; E ={(1,2),(1,3),(3,2),(3,6),(5,3),(5,1),(5,6),(4,6), (4,5),(6,1),(6,2),(3,4)}
Adolfo Duran - 2005 Teoria dos Grafos 25
• Laço– É uma aresta formada por um par de vértices idênticos
• Arestas múltiplas ou paralelas– Quando existe mais de uma aresta entre o mesmo par
de vértices.
• Multigrafo– Um grafo que permite a existência de arestas múltiplas
Mais definições
Adolfo Duran - 2005 Teoria dos Grafos 26
Exercício
Defina formalmente o grafo abaixo e identifique os conceitos de laço, aresta múltipla e multigrafo no mesmo:
Adolfo Duran - 2005 Teoria dos Grafos 27
Grau de um vértice
Grau de um vértice v (grau(v))é o número de arestas que incidem em v.
O grau de um vértice v também pode ser definido como o número de arestas adjacentes a v.
Obs.: Um laço conta duas vezes para o grau de um vértice
Grau(b) = 3Grau(d) = 2Grau(a) = 2
Adolfo Duran - 2005 Teoria dos Grafos 28
– Qualquer vértice de grau zero é um vértice isolado
– Qualquer vértice de grau 1 é um vértice terminal
– Um vértice ímpar tem um número ímpar de arestas
– Um vértice par, tem um número par de arestas
Adolfo Duran - 2005 Teoria dos Grafos 29
Grafo Regular (k-regular)– todos os vértices têm o mesmo grau (k)
v1
v2v4
v3
Seqüência de graus de um grafo consiste em escrever em ordem crescente o grau de todos os seus vértices
Adolfo Duran - 2005 Teoria dos Grafos 30
v1
v2v3 v4
v5 v6
e1
V6 é um vértice isolado, grau(v6)=0
V5 é um vértice terminal, grau(v5)=1
V2 é um vértice par, grau(v2)=2
V1 é um vértice ímpar, grau(v1)=3
Seqüência de graus = 0,1,2,2,3,4
Adolfo Duran - 2005 Teoria dos Grafos 31
Exercício
Identificar no grafo abaixo os vértices isolados, terminais, impares, pares e a seqüência de graus do grafo :
Reflexão
O que podemos concluir sobre a soma dos graus de um grafo?
Adolfo Duran - 2005 Teoria dos Grafos 32
Soma dos graus de um grafo:
O resultado é sempre par, e corresponde à formula abaixo:
A prova é inspirada no Lema do Aperto de Mãos que diz:
Se várias pessoas se apertam a mão o número total de mãos apertadas tem que ser par. Precisamente porque duas mãos estão envolvidas em cada aperto.
Adolfo Duran - 2005 Teoria dos Grafos 33
Soma dos graus de um grafo:
Em grafos, cada aresta contribui duas unidades para o cômputo geral do grau dos vértices, pois cada aresta possui dois extremos. Portanto, a soma total é par e duas vezes o número de arestas do grafo.
Se o grafo for regular de grau r, a soma dos graus dos vértices também é igual a r vezes o número de vértices.
Adolfo Duran - 2005 Teoria dos Grafos 34
A soma dos graus de um grafo é sempre par:
Quando o grafo é regular de grau r, temos:
Adolfo Duran - 2005 Teoria dos Grafos 35
Corolário
Em qualquer grafo, o no de vértices com grau ímpar deve ser PAR
Prova
Para a soma ser par, o primeiro somatório tem que gerar um resultado par, portanto |Vímpar| é par.
Adolfo Duran - 2005 Teoria dos Grafos 36
Teorema da Amizade I
Em toda cidade, com pelo menos dois habitantes, residem duas pessoas com o mesmo número de amigos na cidade.
Exercício
Modele o teorema acima usando grafos e prove-o .
Adolfo Duran - 2005 Teoria dos Grafos 37
Modelando o problema
V = pessoas.E = relação de amizade.Não existe a necessidade de laços nem de arestas multiplas, então o grafo é simples.
O enunciado do teorema pode ser representado pela seguinte afirmação:Se G(V,E) simples, com |V| 2, implica que existem x e y distintos pertencentes a V, tal que grau(x) = grau(y).
Adolfo Duran - 2005 Teoria dos Grafos 38
Demonstração
Se G é simples, então, 0 grau(v) n - 1, onde n=|V|.
Além disso, se existe v, tal que grau(v)= 0, então não existe v, tal que grau(v) = n-1.
Por outro lado, se existe v, tal que grau(v)= n - 1, então não existe v, tal que grau(v) = 0.
Suponha que não existe vértice v onde grau(v)= 0.
Então o grau de qualquer vértice do grafo terá um dos valores do conjunto {1, ... , n-1}.
Adolfo Duran - 2005 Teoria dos Grafos 39
Demonstração (cont.)
Ou seja, existem n-1 valores para o grau de n vértices, logo existem vértices v e w distintos onde grau(v) = grau(w).
Analogamente, suponha que não existe vértice v onde grau(v)= n-1. Então o grau de qualquer vértice do grafo terá um dos valores do conjunto {0, ... , n-2}.
Ou seja, existem n-1 valores para o grau de n vértices, logo existem vértices v e w distintos onde grau(v) = grau(w).
Adolfo Duran - 2005 Teoria dos Grafos 40
Demonstração por contradição
Suponha que não existam vértices x e y, tais que grau(x) = grau(y), ou seja, para todo x e y pertencentes a V, grau(x) é diferente de grau(y).
Então, para vértices distintos temos: grau(v1) = 0, grau(v2) = 1, grau(v3) = 2, ...., grau(vn) = n -
1
O que representa uma contradição.
Adolfo Duran - 2005 Teoria dos Grafos 41
Grafo Nulo (vazio)
Grafo cujo número de arestas é zero. Ou, grafo regular de grau zero.
Outros tipos de grafos
1
4
3
2
Nn é um grafo nulo com n vértices
Exemplo: N4
V={1,2,3,4}; E={ }.
Adolfo Duran - 2005 Teoria dos Grafos 42
Grafo Completo
Grafo simples em que quaisquer vértices distintos dois a dois são adjacentes. Ou, grafo regular de grau n-1, onde n=|V|.
Kn é um grafo completo com n vértices.
Exemplo: K4
Adolfo Duran - 2005 Teoria dos Grafos 43
Quantas arestas tem o Kn?
Veja que |E| = ( r * |v| ) / 2, onde r é o grau e v o número de vértices.
Logo |E| = (( n - 1 ) n ) / 2
Podemos provar também com análise combinatória. O número de arestas é igual ao número de combinações de n vértices dois a dois.
Cn,m = n! / ( m! (n – m)! )
Adolfo Duran - 2005 Teoria dos Grafos 44
Complemento de um grafo
Seja G um grafo simples com um conjunto de vértices V. G é complemento de G se
V = V e
dois vértices são adjacentes em G, se e somente se, não o são em G
Adolfo Duran - 2005 Teoria dos Grafos 45
Complemento de um grafo
Adolfo Duran - 2005 Teoria dos Grafos 46
Complemento de um grafo
Exercício:
Dê exemplos que confirmem as propriedades acima
Propriedade 1Um grafo regular tem complemento regular
Propriedade 2 O complemento de Kn é Nn
Adolfo Duran - 2005 Teoria dos Grafos 47
Grafo Bipartido
Um grafo é dito ser bipartido quando seu conjunto de vértices V puder ser particionado em dois subconjuntos V1 e V2, tais que toda aresta de G une
um vértice de V1 a outro de V2.
1
4
3
2
5
6
V1
V2
Adolfo Duran - 2005 Teoria dos Grafos 48
Grafo BipartidoSejam os conjuntos H={h | h é um homem} e M={m | m é um mulher} e o grafo G(V,A) onde:
V = H U M A = {(v,w) | (v H e w M) ou (v M e w H) e <v foi namorado de w>}
Adolfo Duran - 2005 Teoria dos Grafos 49
Grafo Bipartido Completo
É um grafo bipartido em V1 e V2, sendo que cada elemento de V1 é adjacente a cada elemento de V2.
K3,3
V1
V2
Adolfo Duran - 2005 Teoria dos Grafos 50
Subgrafo
Um grafo Gs(Vs, As) é dito ser subgrafo de um grafo
G(V,A) quando Vs V e As A. O grafo G2, por
exemplo, é subgrafo de G1
G1 G2
Adolfo Duran - 2005 Teoria dos Grafos 51
Subgrafo Próprio
Um subgrafo G2 é dito próprio, quando G2 é
subgrafo distinto de G1
Subgrafos podem ser obtidos através da remoção de arestas e vértices.
Adolfo Duran - 2005 Teoria dos Grafos 52
Subgrafo Induzido
Se G2 é um subgrafo de G1 e possui toda a aresta (v, w)
de G1 tal que ambos, v e w, estejam em V2, então G2 é o
subgrafo induzido pelo subconjunto de vértices V2.
3 2
1
4 5
V1= {1,2,3,4,5}
G1
3 2
1
4
V2= {1,2,3,4}
G2
V2 induz G2
Adolfo Duran - 2005 Teoria dos Grafos 53
Clique
Denomina-se clique de um grafo G a um subgrafo (induzido) de G que seja completo
Adolfo Duran - 2005 Teoria dos Grafos 54
Conjunto Independente de Vértices (C. I. V.)
Chama-se C.I.V. a um conjunto induzido de G que seja um grafo nulo
O tamanho de um clique ou de um C.I.V. é igual à cardinalidade de seu conjunto de vértices.
Adolfo Duran - 2005 Teoria dos Grafos 55
Grafo Rotulado
Um grafo G(V,A) é dito ser rotulado em vértices (ou arestas) quando a cada vértice (ou aresta) estiver associado um rótulo
Adolfo Duran - 2005 Teoria dos Grafos 56
Grafo Valorado
Um grafo G(V,A) é dito ser valorado quando existe uma ou mais funções relacionando V e/ou A com um conjunto de números.
V = {v | v é uma cidade com aeroporto} A = {(v,w,t) | <há linha aérea ligando v a w, sendo t o tempo esperado de vôo>}
Adolfo Duran - 2005 Teoria dos Grafos 57
Isomorfismo de Grafos
Dois grafos G1 e G2 são isomorfos se existe uma
correspondência um a um entre os vértices de G1 e
G2, com a propriedade de que o número de arestas
unindo os vértices em G1 é igual ao número de
arestas unindo os vértices correspondentes em G2.
Adolfo Duran - 2005 Teoria dos Grafos 58
Isomorfismo de Grafos (em outras palavras)
Sejam dois grafos G1(V1,A1) e G2(V2,A2). Um
isomorfismo de G1 sobre G2 é um mapeamento
bijetivo f: V1 V2 tal que {x,y} A1 se e somente se
{f(x),f(y)} A2, para todo x,y V1.
Função: { (a2), (b 1), (c 3), (d 4), (e 6), (f 5) }
Adolfo Duran - 2005 Teoria dos Grafos 59
Isomorfismo de Grafos (exemplo)
f(u) = azul, f(v) = lilás, f(w) = vermelho,f(x) = verde, f(y) = amarelo, f(z) = rosa
u v w
x y z
Adolfo Duran - 2005 Teoria dos Grafos 60
Isomorfismo de Grafos
Preserva:
•Simetria: G1 G2 G2 G1•Reflexividade: G1 G1•Transitividade: G1 G2 e G2 G3 G1 G3
Proposições válidas se G1 G2
•G1 e G2 têm o mesmo número de vértices•G1 e G2 têm o mesmo número de arestas•G1 e G2 têm a mesma sequência de graus
Adolfo Duran - 2005 Teoria dos Grafos 61
Grafos Orientados ou Dígrafos
Um dígrafo D(V,A) é um conjunto finito não vazio V de vértices, e um conjunto A de pares ordenados de elementos de V. Chamamos o conjunto A de arcos
Digrafo Simples
É um digrafo que não possui laços e os arcos são todos distintos
Adolfo Duran - 2005 Teoria dos Grafos 62
Mais sobre dígrafos
• Conjunto finito não vazio de vértices
• Conjunto finito não vazio de arestas– Arestas são chamadas de arcos– Um arco (v,w) passa a ser vw
D = (V,A)
V = {a,b,c,d)A = {ac,ba,bc,cb,cd,cd)
a d
b c
Adolfo Duran - 2005 Teoria dos Grafos 63
• Dígrafos Simples
– Todos os arcos são distintos
– Não existem auto-laços
• Para obter o grafo correspondente a um dígrafo
– Eliminar as direções dos arcos
– Não necessariamente um grafo correspondente a um dígrafo simples é um grafo simples
Apresente um exemplo de um dígrafo simples que quando transformado em grafo, não é simples
Adolfo Duran - 2005 Teoria dos Grafos 64
• Os vértices de um dígrafo possuem:– Grau de entrada: número de arcos que chegam no vértice
(grauent(v))– Grau de saída: número de arcos que partem do vértice
(grausai(v))• Da mesma forma:
– Sequência de graus de entrada– Sequência de graus de saída
Proposição
grauent(vi) = grausai(vi) = | A |
Adolfo Duran - 2005 Teoria dos Grafos 65
• Os dígrafos são isomórficos se:– Existe um isomorfismo entre os respectivos grafos
correspondentes– Preserva a ordem dos vértices em cada arco
a d
b c
a d
b c
Os grafos abaixo não são isomorfos
Adolfo Duran - 2005 Teoria dos Grafos 66
União
– Considere 2 grafos G1(V1,E1) e G2(V2,E2) onde V1 e V2 são conjuntos distintos
– A união G1 G2 é formada pelo grafo com conjunto de vértices V1 V2 e conjunto de arestas E1 E2
Operações com grafos
Exemplo
G: V1={1,2} e E1={(1,2)}H: V2={3,4} e E2={ }
G H: V={1,2,3,4} e E={(1,2)}
Adolfo Duran - 2005 Teoria dos Grafos 67
Soma
– Considere 2 grafos G1(V1,E1) e G2(V2,E2) onde V1 e V2 são conjuntos distintos
– A soma G1 + G2 é formada por G1 G2 e de arestas ligando cada vértice de G1 a cada vértice de G2.
Exemplo
G: V1 = {1,2} e E1 = {(1,2)}H: V2 = {3,4} e E2 = { }G + H: V={1,2,3,4} e E={(1,2),(1,3),(1,4),(2,3),(2,4)}
Adolfo Duran - 2005 Teoria dos Grafos 68
1 2
G H
3 4
G H G + H
1 2
3 4
1 2
3 4
Exemplo
Adolfo Duran - 2005 Teoria dos Grafos 69
União e Soma
– Podem ser aplicadas a qualquer número finito de grafos
– São operações associativas
– São operações comutativas
Adolfo Duran - 2005 Teoria dos Grafos 70
Remoção de Aresta
– Se e é uma aresta de um grafo G, denota-se G-e o grafo obtido de G pela remoção da aresta e
– Genericamente, se F é um conjunto de arestas em G, denota-se G-F ao grafo obtido pela remoção das arestas em F.
Adolfo Duran - 2005 Teoria dos Grafos 71
Remoção de Vértice
– Se v é um vértice de um grafo G denota-se por G-v o grafo obtido de G pela remoção do vértice v conjuntamente com as arestas incidentes a v.
– Genericamente denota-se G-S ao grafo obtido pela remoção dos vértices em S, sendo S um conjunto qualquer de vértices de G.
Adolfo Duran - 2005 Teoria dos Grafos 72
Contração de aresta
– Denota-se por G/e o grafo obtido pela contração da aresta e.
– Isto significa remover e de G e unir suas duas extremidades v,w de tal forma que o vértice resultante seja incidente às arestas originalmente incidentes a v e w.
Adolfo Duran - 2005 Teoria dos Grafos 73
Embora seja conveniente a representação de grafos através de
diagramas de pontos ligados por linhas, tal representação é
inadequada se desejamos armazenar grandes grafos em um computador
Representação de grafos
Adolfo Duran - 2005 Teoria dos Grafos 74
Uma maneira simples de armazenar grafos, é listando os vértices adjacentes a cada vértice do grafo
u: v,yv: u,y,ww: v,x,yx: w,yy: u,v,w,x
u
y v
x w
Adolfo Duran - 2005 Teoria dos Grafos 75
Matriz de adjacência
Se G é um grafo com vértices {1,2,3,...,n}, sua matriz de adjacência é a matriz n X n cujo elemento ij é o número de arestas ligando o vértice i ao vértice j
Adolfo Duran - 2005 Teoria dos Grafos 76
Matriz de incidência
Se G é um grafo com vértices {1,2,3,...,n} e arestas {1,2,3,...,m}, sua matriz de incidência é a matriz n X m cujo elemento ij é o número de vezes em que o vértice i é incidente à aresta j.
Adolfo Duran - 2005 Teoria dos Grafos 77
Grafo Conexo
– Um grafo G(V,A) é dito ser conexo se ele não pode ser expresso como a união de dois grafos.
G1 G2
Conectividade
Adolfo Duran - 2005 Teoria dos Grafos 78
• Grafo desconexo
– Um grafo G(V,A) é dito ser desconexo se ele pode ser expresso pela união de dois outros grafos.
Adolfo Duran - 2005 Teoria dos Grafos 79
• Componente conexa
– Um grafo G(V,A) desconexo é formado por pelo menos dois subgrafos conexos, disjuntos em relação aos vértices
– Cada um destes subgrafos conexos é dito ser uma componente conexa de G.
Adolfo Duran - 2005 Teoria dos Grafos 80
Vértice de corteUm vértice é dito ser um vértice de corte se sua remoção (juntamente com as arestas a ele conectadas) provoca uma redução na conectividade do grafo.
X2 é um vértice de corte
Adolfo Duran - 2005 Teoria dos Grafos 81
PonteUma aresta é dita ser uma ponte se sua remoção provoca uma redução na conectividade do grafo.
(X1,X4) é uma ponte
Adolfo Duran - 2005 Teoria dos Grafos 82
Grafo cíclico (ou grafo circuito)Um grafo conectado que é regular de grau 2 é um grafo cíclico (= ciclo)
Cn é um grafo cíclico com n vértices
Outros tipos de grafos
C6
Adolfo Duran - 2005 Teoria dos Grafos 83
Grafo caminhoO grafo obtido a partir de Cn através da remoção de um aresta é o grafo caminho em n vértices, Pn
C5 P5
Adolfo Duran - 2005 Teoria dos Grafos 84
Grafo rodaO grafo obtido a partir de Cn-1 através da ligação de cada vértice a um novo vértice v é um grafo roda em n vértices, Wn
Corresponde à soma de N1 com Cn-1
C5 W6
Adolfo Duran - 2005 Teoria dos Grafos 85
Grafos cúbicosSão grafos regulares de grau 3
O primeiro deles é conhecido como Grafo de Petersen
Adolfo Duran - 2005 Teoria dos Grafos 86
• Cadeia (= passeio)– Uma cadeia (walk) é uma seqüência qualquer de
arestas adjacentes que ligam dois vértices.
– O conceito de cadeia vale também para grafos orientados, bastando que se ignore o sentido da orientação dos arcos.
A seqüência de vértices (x6, x5, x4, x1)
é um exemplo de cadeia
Cadeias, caminhos, ciclos...
Adolfo Duran - 2005 Teoria dos Grafos 87
Cadeia elementar (= caminho = path) Uma cadeia é dita ser elementar se não passa duas vezes pelo mesmo vértice
1 2
3 4
1 2
3 4
Cadeia de tamanho 21 2 4
Cadeia de tamanho 33 1 4 2
Adolfo Duran - 2005 Teoria dos Grafos 88
Cadeia simples (= trilha = trail)Uma cadeia é dita ser simples se não passa duas vezes pela mesma aresta (arco).
1 2
3 4
1 2
3 4
Cadeia de tamanho 41 2 4 1 3
Cadeia de tamanho 51 2 4 1 3 2
Adolfo Duran - 2005 Teoria dos Grafos 89
• Caminho– Um caminho é uma cadeia na qual todos os arcos
possuem a mesma orientação. Aplica-se, portanto, somente a grafos orientados
A seqüência de vértices (x1, x2, x5, x6, x3)
é um exemplo de caminho
Adolfo Duran - 2005 Teoria dos Grafos 90
• Ciclo– Um ciclo é uma cadeia simples e fechada (o vértice
inicial é o mesmo que o vértice final).
A seqüência de vértices (x1, x2, x3, x6, x5, x4, x1)
é um exemplo de ciclo
Adolfo Duran - 2005 Teoria dos Grafos 91
Exemplos de ciclos
1 2
3 4
1 2
3 4
Ciclo de tamanho 31 2 4 1
Ciclo de tamanho 31 2 3 1
Adolfo Duran - 2005 Teoria dos Grafos 92
• Circuito
– Um circuito é um caminho simples e fechado. Aplica-se, portanto, somente a grafos orientados
A seqüência de vértices (x1, x2, x5, x4, x1)
é um exemplo de circuito
Adolfo Duran - 2005 Teoria dos Grafos 93
• Grafo fortemente conexo– No caso de grafos orientados, um grafo é dito ser
fortemente conexo (f-conexo) se todo par de vértices está ligado por pelo menos um caminho em cada sentido
– ou seja, se cada par de vértices participa de um circuito. – Isto significa que cada vértice pode ser alcançável
partindo-se de qualquer outro vértice do grafo.
Adolfo Duran - 2005 Teoria dos Grafos 94
•Componente fortemente conexaUm grafo G(V,A) que não é fortemente conexo é formado por pelo menos dois subgrafos fortemente conexos, disjuntos em relação aos vértices
Cada um destes subgrafos é dito ser uma componente fortemente conexa de G
Adolfo Duran - 2005 Teoria dos Grafos 95
Um grafo conectado G(V,A) é dito ser euleriano se existe um ciclo que contém todas as arestas de G.
Grafos Eulerianos
cadeia simples fechada – que não passa 2 vezes pela mesma aresta e termina no mesmo vértice
Adolfo Duran - 2005 Teoria dos Grafos 96
Grafo semi-eulerianoUm grafo conectado, não-euleriano G é semi-euleriano se existe uma cadeia simples contento todas as arestas de G
Adolfo Duran - 2005 Teoria dos Grafos 97
Teorema (Euler 1736)Um grafo conectado G é euleriano se e somente se
o grau de cada vértice de G é par
Prova:
Ida: Seja G um grafo euleriano. Logo ele contém um ciclo euleriano. Por cada ocorrência de vértice desse ciclo, existe uma aresta que chega nesse vértice e outra que sai desse vértice. Como toda aresta faz parte do ciclo, isto é, nenhuma aresta fica fora do ciclo, necessariamente o número de arestas por cada vértice é par.
Adolfo Duran - 2005 Teoria dos Grafos 98
Volta: Suponhamos que todos os vértices possuem grau par. Seja vi um vértice do grafo. Tentemos, a partir
de vi, construir uma cadeia que não passa duas vezes
pela mesma aresta, e até que não seja possível continuar. Como todos os vértices possuem um grau par, sempre será possível entrar e sair de um vértice. A única exceção é o vértice vi onde a cadeia vai terminar.
Se essa cadeia, que chamaremos C1, contém todas as
arestas de G, temos um ciclo euleriano. Senão, retiramos de G todas as arestas que fazem parte de C1.
No grafo resultante G', todos os vértices também possuem grau par e necessariamente um deles faz parte de C1, senão o grafo não seria conexo.
Adolfo Duran - 2005 Teoria dos Grafos 99
Volta (cont.): Recomeçamos o mesmo processo com o grafo G', partindo de um vértice comum com C1,
obtendo assim um novo ciclo C2. A figura abaixo mostra
que dois ciclos que têm um vértice em comum podem formar um ciclo único: chegando no vértice comum em um dos dois ciclos, continuamos o percurso no outro ciclo. Continuando esse processo, necessariamente obteremos um ciclo único que contém todas as arestas de G.
Adolfo Duran - 2005 Teoria dos Grafos 100
Algoritmo de HierholzerAlgoritmo para a construção de um ciclo euleriano
sugerido a partir da prova do teorema de Euler
Comece em qualquer vértice u e percorra aleatoriamente as arestas ainda não visitadas a cada vértice visitado até fechar um ciclo
Se sobrarem arestas não visitadas, recomece a partir de um vértice do ciclo já formado
Se não existem mais arestas não visitadas, construa o ciclo euleriano a partir dos ciclos formados, unindo-os a partir de um vértice comum
Adolfo Duran - 2005 Teoria dos Grafos 101
Algoritmo de HierholzerAlgoritmo para a construção de um ciclo euleriano
sugerido a partir da prova do teorema de Euler
Adolfo Duran - 2005 Teoria dos Grafos 102
• As pontes de Königsberg
É possível sair de uma das ilhas, passar uma única vez por cada uma das pontes e retornar ao ponto de origem ?
Adolfo Duran - 2005 Teoria dos Grafos 103
• As pontes de Königsberg
Como nem todos os vértices têm grau par, o grafo não é euleriano. Logo, é impossível atravessar todas as pontes uma só vez e voltar ao lugar de partida
Adolfo Duran - 2005 Teoria dos Grafos 104
Corolário IUm grafo conectado G é euleriano se e somente se
ele pode ser decomposto em ciclos
Corolário IIUm grafo conectado G é semi-euleriano se e
somente se ele possui exatamente 2 vértices de grau ímpar
Adolfo Duran - 2005 Teoria dos Grafos 105
Algoritmo de FleuryAlgoritmo para a construção de um ciclo euleriano
em um grafo euleriano
Comece em qualquer vértice u e percorra as arestas de forma aleatória, seguindo sempre as seguintes regras:
I – apague as arestas depois de passar por elasII – se aparecer algum vértice isolado, apague-o tambémIII – passe por uma ponte somente se não houver outra alternativa
Adolfo Duran - 2005 Teoria dos Grafos 106
Algoritmo de FleuryAlgoritmo para a construção de um ciclo euleriano
em um grafo euleriano
Adolfo Duran - 2005 Teoria dos Grafos 107
Um grafo G(V,A) é dito ser hamiltoniano se existe um ciclo que passa exatamente uma vez em cada um dos vértices de G
Grafos Hamiltonianos
não hamiltonianohamiltoniano
Adolfo Duran - 2005 Teoria dos Grafos 108
Grafo semi_hamiltoniano
Um grafo G(V,A) é dito ser semi-hamiltoniano se não é hamiltoniano e existe uma cadeia que passa exatamente uma vez em cada um dos vértices de G
Hamiltoniano Semi- hamiltoniano
não hamiltoniano
Adolfo Duran - 2005 Teoria dos Grafos 109
Grafo hamiltoniano
Não existe uma caracterização para identificar grafos hamiltonianos como existe para os eulerianos
A busca de tal caracterização é um dos maiores problemas ainda não solucionados da teoria dos grafos
Adolfo Duran - 2005 Teoria dos Grafos 110
Grafo hamiltoniano
Muito pouco é conhecido dos grafos hamiltonianos
A maioria dos teoremas existentes são da forma: “Se G possui arestas suficientes, então G é hamiltoniano”
Adolfo Duran - 2005 Teoria dos Grafos 111
Ciclo hamiltoniano em grafos completos
Todo grafo completo, que contém mais de 2 vértices é hamiltoniano
Seja v1,v2,...,vn os vértices de G. Como existe uma aresta entre qualquer par de vértices, é possivel, a partir de v1 percorrer essa sequência até vn e voltar para v1
Adolfo Duran - 2005 Teoria dos Grafos 112
Teorema (Dirac 1952)Uma condição suficiente, mas não necessária,
para que um grafo simples G com n (>2) vértices seja hamiltoniano é que o grau de todo vértice de g
seja n/2
O grafo abaixo, é hamiltoniano mas não respeita a condição do teorema de Dirac
Adolfo Duran - 2005 Teoria dos Grafos 113
Teorema (Ore 1960)Uma condição suficiente, mas não necessária, para
que um grafo simples G com n (>2) vértices seja hamiltoniano é que a soma dos graus de cada par
de vértices não adjacentes seja no mínimo n
Permite identificar mais grafos hamiltonianos que o anterior, mas demora muito para efetuar os cálculos. Uma
busca por tentativa e erro pode ser mais eficiente em alguns casos
Adolfo Duran - 2005 Teoria dos Grafos 114
O adjetivo "hamiltoniano" deve-se ao matemático irlandês Sir William Rowan Hamilton (1805-1865). Diz-se que ele inventou um jogo que envolve um dodecaedro (sólido regular com 20 vértices, 30 arestas e 12 faces). Hamilton rotulou cada vértice do dodecaedro com o nome de uma cidade conhecida. O objetivo do jogo era que o jogador viajasse "ao redor do mundo" ao determinar uma viagem circular que incluísse todas as cidades exatamente uma vez, com a restrição de que só fosse possível viajar de uma cidade a outra se existisse uma aresta entre os vértices correspondentes.
Adolfo Duran - 2005 Teoria dos Grafos 115
A figura abaixo mostra um grafo que representa este problema, ou seja os vértices e arestas de um dodecaedro.
Adolfo Duran - 2005 Teoria dos Grafos 116
Como explorar um grafo
Como obter um processo sistemático para caminhar pelos vértices e arestas de um grafo?
Como caminhar no grafo de modo a visitar todos os vértices e arestas evitando repetições desnecessárias de visitas a um mesmo vértice ou aresta?
Que recursos adicionais são necessários?
Alguns Problemas
Adolfo Duran - 2005 Teoria dos Grafos 117
Como explorar um grafoNecessidade de ‘’marcar’’ quando um vértice e uma aresta já foram visitados ou não
Busca Geral G(V,E)1. Escolher e marcar um vértice inicial;2. Enquanto existir algum vértice v marcado e incidente a uma aresta (v,w), não explorada, efetuar: a) escolher o vértice v; b) explorar a aresta (v,w). Se w não é marcado então marcar w.
Algoritmo Geral
Adolfo Duran - 2005 Teoria dos Grafos 118
O problema do Caminho mais curto
Um motorista deseja encontrar o caminho, mais curto possível, entre duas cidades do Brasil
Caso ele receba um mapa das estradas de rodagem do Brasil, no qual a distância entre cada par adjacente de cidades está exposta, como poderíamos determinar uma rota mais curta entre as cidades desejadas?
Uma maneira possível é enumerar todas as rotas possíveis que levam de uma cidade à outra, e então selecionar a menor.
Adolfo Duran - 2005 Teoria dos Grafos 119
O problema do menor caminho consiste em determinar um menor caminho entre um vértice de origem s V e todos os vértices v de V.
Menor caminho com destino único: encontrar um caminho mais curto para um vértice destino v Menor caminho para um par: encontrar um caminho mais curto para um determinado par de vértices u e v Menor caminho para todos os pares: encontrar um caminho mais curto de u para v, para todos e quaisquer pares u e v
Variantes do problema
Adolfo Duran - 2005 Teoria dos Grafos 120
O problema do Caminho mais curtoUma maneira mais eficiente:
Percorra o grafo, partindo do vértice de origem s, associando a cada vértice um número l(v) indicando a menor distância entre s e v.
Isso significa que quando chegamos ao vértice v, na figura abaixo, l(v) será min ( l(u)+6 , l(x)+4 )
6
5
u
3s
6
2 7
v
x y
4123
Adolfo Duran - 2005 Teoria dos Grafos 121
6
5
u
3
s
6
2 7
v
x y
412
3
0
5
3
11
9
Calculando os pesos:
Adolfo Duran - 2005 Teoria dos Grafos 122
Como obter um caminho mínimo partindo de s para y?
6
5
u
3
s
6
2 7
v
x y
412
3
0
5
3
11
9
Adolfo Duran - 2005 Teoria dos Grafos 123
Outra possibilidade:
6
5
u
3
s
6
2 7
v
x y
412
3
0
5
3
11
9
Adolfo Duran - 2005 Teoria dos Grafos 124
O algoritmo de Dijkstra
O algoritmo de Dijkstra identifica, a partir de um vértice do grafo, qual é o custo mínimo entre esse vértice e todos os outros do grafo. No início, o conjunto S contém somente esse vértice, chamado origem. A cada passo, selecionamos no conjunto de vértices sobrando, o que é o mais perto da origem. Depois atualizamos, para cada vértice sobrando, a sua distância em relação à origem. Se passando pelo novo vértice acrescentado, a distância fica menor, é essa nova distância que será memorizada
Adolfo Duran - 2005 Teoria dos Grafos 125
O algoritmo de Dijkstra
Suponhamos que o grafo é representado por uma matriz de adjacência onde temos o valor se não existe aresta entre dois vértices.
Suponhamos também que os vértices do grafo são enumerados de 1 até n, isto é, o conjunto de vértices é N = {1, 2, ..., n}.
Utilizaremos também um vetor D[2..n] que conterá a distância que separa todo vértice do vértice 1 (o vértice do grafo que é o vértice 1 é escolhido arbitrariamente).
Adolfo Duran - 2005 Teoria dos Grafos 126
O algoritmo de Dijkstra
função Dijkstra(L = [1..n, 1..n]: grafo): vetor[2..n] C := {2,3,...,n} {Implicitamente S = N - C}
Para i := 2 até n:D[i] := L[1,i]
Repetir n-2 vezes:v := Elemento de C que minimiza D[v] C := C - {v} Para cada elemento w de C:
D[w] := min(D[w],D[v]+ L[v,w]) Retornar D
Adolfo Duran - 2005 Teoria dos Grafos 127
Passo v C D Início - {2,3,4,5} [50,30,100,10] 1 5 {2,3,4} [50,30,20,10] 2 4 {2,3} [40,30,20,10] 3 3 {2} [35,30,20,10]
Exemplo
Adolfo Duran - 2005 Teoria dos Grafos 128
O algoritmo de Dijkstra
Da maneira descrita, obtemos o custo do caminho mínimo para qualquer vértices, mas não obtemos o caminho mínimo.
Para identificar esse caminho mínimo, é só acrescentar mais um vetor P[2..n], onde P[v] indica o vértice que precede v no caminho mais curto.
Para isso, primeiro devemos inicializar esse vetor.
Segundo, no mesmo momento que o vetor D é atualizado, atualizamos também o vetor P.
Adolfo Duran - 2005 Teoria dos Grafos 129
O algoritmo de Dijkstra para o caminho mínimo
função Dijkstra(L = [1..n, 1..n]: grafo): vetor[2..n] C := {2,3,...,n} Para i := 2 até n:
D[i] := L[1,i] P[i] := 1
Repetir n-2 vezes:v := Elemento de C que minimiza D[v] C := C - {v} Para cada elemento w de C:
Se D[w] > D[v]+ L[v,w] então D[w] := D[v]+ L[v,w] P[w] := v
Retornar P
Adolfo Duran - 2005 Teoria dos Grafos 130
Passo v C D PInício - {2,3,4,5} [50,30,100,10] [1,1,1,1] 1 5 {2,3,4} [50,30,20,10] [1,1,5,1]2 4 {2,3} [40,30,20,10] [4,1,5,1]3 3 {2} [35,30,20,10] [3,1,5,1]
Exemplo
Adolfo Duran - 2005 Teoria dos Grafos 131
O algoritmo de Dijkstra para o caminho mínimo
Vemos que o estado final do vetor P é [3,1,5,1]. Para saber qual é o caminho mais curto entre os vértices 1 e 2, procuramos o valor na posição 2 desse vetor (não esqueça que P e D são indexados a partir de 2). O vetor indica que o último vértice antes do vértice 2 é o vértice 3. Repetimos de novo o mesmo processo para ver o caminho mais curto entre 1 e 3. No vetor, na posição 3, temos o valor 1, que é a origem. Então, o caminho mais curto é 1,3,2.
Adolfo Duran - 2005 Teoria dos Grafos 132
O problema do carteiro chinês
Problema discutido pelo matemático chinês Mei-Ku Kuan
Um carteiro deseja entregar suas cartas, percorrendo a menor distância possível e retornando ao ponto de partida
Ele deve passar por cada estrada pelo menos uma vez, mas deve evitar passar por muitas estradas mais de uma vez.
Adolfo Duran - 2005 Teoria dos Grafos 133
O problema do carteiro chinês
O problema pode ser reformulado em termos de um grafo valorado onde o grafo corresponde à rede de estradas e o valor de cada aresta corresponde ao comprimento da estrada.
Assim, devemos buscar uma cadeia fechada de tamanho mínimo que inclua cada aresta do grafo pelo menos uma vez.
Se o grafo for euleriano??
Adolfo Duran - 2005 Teoria dos Grafos 134
O problema do carteiro chinês
Se o grafo for euleriano, basta buscar um ciclo euleriano (algoritmo de Fleury)
Se o grafo não é euleriano?
Para ilustrar a solução, vamos considerar um grupo especial de grafos, onde exatamente 2 arestas têm grau ímpar
A
F
B C
D
E
8 14 10
53
6
4
5
9
Adolfo Duran - 2005 Teoria dos Grafos 135
O problema do carteiro chinês
Já que os vértices B e E são os únicos que têm grau ímpar, podemos encontrar uma cadeia semi-euleriana de B até E passando por cada aresta exatamente uma vez
A fim de retornar ao ponto de partida, cobrindo a menor distância possível, é só encontrar o menor caminho de E até B (EF A B)
A
F
B C
D
E
8 14 10
53
6
4
5
9
Adolfo Duran - 2005 Teoria dos Grafos 136
O problema do carteiro chinês
A solução do problema é dada combinando o menor caminho com a cadeia semi-euleriana
Note que, fazendo essa combinação, obtemos um grafo euleriano
A
F
B C
D
E
8 14 10
53
6
4
5
9
Adolfo Duran - 2005 Teoria dos Grafos 137
O problema do caxeiro viajante
Um caxeiro viajante deseja visitar um dado grupo de cidades e retornar ao ponto de partida, percorrendo a menor distância possível
Esse problema pode ser formulado em termos de grafos valorados
O objetivo é encontrar um ciclo hamiltoniano com o menor peso possível em um grafo valorado completo
Adolfo Duran - 2005 Teoria dos Grafos 138
O problema do caxeiro viajante
Um algoritmo possível é calcular a distância de todos os possíveis ciclos hamiltonianos e escolher o menor
C
B E
D
7 3 5
6
9
8
A
62
48
No grafo ao lado, a menor rota seria
AB D E C Atotalizando uma distância de 26
Adolfo Duran - 2005 Teoria dos Grafos 139
O problema do caxeiro viajante
Com mais de 5 cidades, a solução anterior passa a ficar muito complicada...
Por exemplo, com 20 cidades a quantidade de possíveis ciclos hamiltonianos é (19!)/2, o que dá aproximadamente 6 x 1016
Não se conhecem algoritmos eficientes para resolver esse problema
Existem algoritmos eurísticos que dão soluções aproximadas