Circuitos Hamiltorianos Vimos que o teorema de euler resolve o problema de caracterizar grafos que tenham um circuito em que cada aresta apareça exatamente uma vez. Vamos estudar aqui uma questão relacionada. Dado um grafo G, é possível achar um circuito de G em que cada vértice de G apareça uma única vez? Em 1859, o matemático irlandês Sir Willian Hamilton introduziu um quebra-cabeça com formato de dodecaedro que é um figura sólida de 12 faces pentagonais idênticas.
Cada vértice foi rotulado com o nome de uma cidade. A questão proposta por Hamilton foi começar em uma cidade e fazer um tour pelo mundo visitando cada cidade uma única vez, voltando à cidade original. O quebra-cabeça é fácil de resolver se espicharmos as faces do dodecaedro planificando-o
Definição: dado um grafo G, um circuito Hamiltoniano para G é circuito simples que inclui todos os vértices de G. Ou seja, é uma seqüência de vértices adjacentes e arestas distintas em que cada vértice aparece exatamente uma vez O problema de Hamilton é, portanto, achar um caminho Hamiltoniano no grafo abaixo.
Note que um circuito Euleriano inclui todos os vértices, mas pode visitar um vértice mais de uma vez. No caso de caminhos Eulerianos, resolvemos com elegância o problema, caracterizando que são Eulerianos. Matemática não é tão eficiente aqui. Vamos supor que G tenha um circuito Hamiltoriano C: v0 e1 v1 e2 v2... vn-1 en vn e considere o subgrafo H formado por C. Note que o número de vértices é igual ao número de arestas, pois v0=vn e ei ej Note ainda que H tem os mesmos vértices de G e que cada vértice de H tem grau 2.
Proposição1: Se um grafo G tem um circuito Hamiltoriano então G tem um subgrafo H tal que. 1. H contem todos os vértices de G 2. H é conexo 3. H tem tantos vértices quanto arestas 4. Todo vértice de H tem grau 2 Essa preposição serve para mostrar que determinado grafo não tem circuito Hamiltoriano.
Ex: Mostre que o grafo G abaixo não tem circuito Hamiltoriano a c b e d Se G tivesse um circuito Hamiltoriano teria um subgrafo em que todos os vértices a,b,c,d,e tem grau 2. Como b tem grau 4, duas arestas tem de ser removidas. Quais? {a,b} não pode, pois a teria grau 1. Similarmente {e,b}, {b,c} e {b,d} Então não dá!
O problema do caixeiro viajante Considere o mapa da figura mostrando 4 cidades e a distância (em Km) entre elas. b 30 c Qual a rota passando por 30 todas as cidades que minimiza a 50 35 25 distância a ser percorrida. a d 40 Solução: o problema pode ser resolvido escrevendo todos os circuitos Hamiltorianos começando e terminando em a e calculando a distancia total.
a 30 b 30 50 35 40 d 25 c Rota ABCDA ABDCA ACBDA ACDBA ADBCA ADCBA Distancia total 30 + 30 + 25 + 40 = 125 30 + 35 + 25 + 50 = 140 50 + 30 + 35 + 30 = 155 50 + 25 + 35 + 30 = 140 35 + 50 + 25 + 30 =155 40 + 25 + 30 + 30 = 25
O problema do caixeiro viajante geral envolve encontrar um circuito Hamiltoriano que minimize a distância total percorrida. Aplicações * empresas de transportes * coletores de lixo * carteiro Como resolver este problema? Uma maneira é escrever todos os circuitos Hamiltorianos e começando e terminando em um aresta e escolher um que tenha distância mínima. Esse método não é pratico, pois não há métodos eficientes para determinar e em geral, há muitos circuitos Hamiltorianos. Quantos caminhos Hamiltorianos tem um grafo completo com n vértices? (n-1)!
Representação Matricial de Grafos Como representar um grafo em um computador? Considere o dígrafo abaixo. v1 e1 v2 v3 A matriz v1 v2 v3 1 0 0 1 1 2 1 0 0 Representa o dígrafo no sentido seguinte
Definição: Seja G um (dí)grafo com vértices ordenados v1,v2,v3,... A matriz de adjacência de G A = (a ij ) onde a ij = o número de arestas de v i, a v j Ex v 1 v 4 v 3 v 2 Tem matriz de adjacência v 1 [0 1 0 1 1] v 2 1 1 2 1 v 3 0 2 0 0 v 4 1 1 0 Note que a matriz de adjacência de um grafo é simétrica
Ex: qual o dígrafo representado pela matriz de adjacências A = V 1 [0 1 1 0 ] V 2 1 1 0 2 V 3 0 0 1 1 2 1 0 0 V 4 Solução : como a matriz não é simétrica, a matriz representa um dígrafo. v1 v2 v4 v3
Qual a relação entre matrizes de adjacências e componentes conexas? Por exemplo v1 v3 v4 v6 A= v2 v5 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 v7
Observe os zeros. A matriz fica uma matriz de blocos na diagonal e zeros fora da diagonal. É fácil mostrar o seguinte Teorema: Seja G um grafo com componentes G1,..., Gk, cada um com ni vértices. Se os vértices estão numerados consecutivamente, então a matriz de adjacências de G tem a forma A1 0 A2... 0 Ak Onde cada Ai é a matriz de adjacências dos grafo Gi, i=1...k
Vamos agora fazer uma importante interpretação de operações com matrizes de adjacências em relação a grafos. Considere o exemplo v2 e2 e1 v1 v3 e3 e4 Cuja Matriz de Adjacências é A= 0 1 0 1 1 2 0 2 0 Quantos passeios de comprimento 2 existem ligando v2 a v2? Passando por v1: Passando por v2: Passando por v3: e1e1 e2e2 e3e3, e3e4, e4e4, e4e3 Portanto há 6 caminhos de comprimento 2 de v2 a v2
e1 v2 e2 E quantos passeios de comprimento 2 ligando v1 a v3? v1 e3 v3 e4 Passando por v1: Passando por v2: Passando por v3: Não tem e1e3, e1e4 Não tem Portanto há um total de dois passeios de comprimento 2 de v1 a v3. A questão geral é como determinar o número de passeios de vi a vj com um determinado comprimento. Podemos usar a multiplicação matrizes para responder essa questão: Vamos calcular A 2 = A A = 0 1 0 1 1 2 0 2 0 0 1 0 1 1 2 0 2 0 Em particular o elemento 2,2 coincide. Porque? = 1 1 2 1 6 2 2 2 4
Examinemos o elemento 2 da matriz produto. 0 1 0 1 1 2 0 2 0 0 1 0 1 1 2 0 2 0 = 1 1 2 1 6 2 2 2 4 Note que 6=1 * 1 + 1 * 1 + 2 * 2 No. de arestas de v2 a v1. No. de arestas de v1 a v2. No. de pares de arestas de v2 a v1 e de v1 a v2. = = No. de passeios de v2 a v2 de comprimento 2 passando por v1. Similarmente, temos No. de passeios de v2 a v2 passando por v2 (de comp. 2). No. de passeios de v2 a v2 passando por v3 (de comp. 2). Em geral, temos o seguinte
Teorema 6: Se G é um grafo com vértices v 1, v 2,..., v m e A é a matriz de adjacências de G, então para cada inteiro positivo n, o elemento i,j da matriz A n é o número de passeios de comprimento n de v i a v j. Prova: Por indução em n, o número de vértices Para n=1: A matriz A n = A, a matriz de adjacências e o elemento i,j da matriz é o número de passeios de comprimento 1. Por indução, supõe que o elemento i,j da matriz A k é o número de passeios de comprimento k de v i a v j. Temos de mostrar que o número de passeios de comprimento k+1 de v i a v j é o elemento i,j da matriz A k+1 Seja A=(a i,j ) e A k = (b i,j ) O elemento i,j de A k+1 = a i,1 b 1,j + a i,2 b 2,j +...+a i,m b m,j No de arestas de v i a v 1 * No de passeios de v 1 a v j de comprimento k Que é o número de passeios de comprimento k+1 de v i a v j passando por v 1
Isomorfismos de Grafos Lembremos que as figuras abaixo v 1 v 4 v 5 v 2 v 1 v 2 v 4 v 3 Representam o mesmo grafo. De fato cada vértice tem exatamente os mesmos vizinhos. E os diagramas abaixo representam o mesmo grafo? v1 v2 v3 v1 v3 v2 v 3 v 5 Não, pois os vizinhos de v2 no primeiro grafo são v1 e v3, ao passo que no da direita, é só v3. Entretanto, se renomearmos os vértices teremos o mesmo grafo. O que nos inspira a seguinte
Definição: Sejam G=(V,A) e G =(V,A ) dois grafos simples. G é dito isomorfo a G se existe função bijetora f : G ------> G que preserva adjacências: {u,v} é uma aresta de G se e somente se {f(u),f(v)} é uma aresta de G Exemplo: Considere os grafos w1 w3 v1 v2 v5 v3 v4 w4 w2 w5 São isomorfos. Um isomorfismo pode ser dado pela função: v1 v2 v3 v4 v5 w2 w3 w1 w4 w5
Como determinar se dois grafos são ou não isomorfos? Esse é problema muito difícil. Não, há, infelizmente, um método eficiente para resolver este problema. Se por inspeção, como fizemos, temos a sorte de verificar um isomorfismo, muito bem. Se não for possível, tenta-se mostrar que existe alguma diferença estrutural entre os dois grafos que evidencie o fato de eles não serem isomorfos. Definição: Uma propriedade P é dita invariante isomorfa se dados dois grafos isomorfos G e G, G tem a propriedade P, então G tem a propriedade P.
Teorema: São invariantes isomorfas as seguintes propriedades: 1. O no. de vértices 5. Ser conexo 2. O no. de arestas 6. Ter circuito Euleriano 3. O conjunto de vértices de grau k 7. Ter circuito Hamiltoniano 4. Circuito de comprimento k 8. No. de circuitos de comp k Exemplo: Verificar se são isomorfos os pares de grafos: Solução: Não são isomorfos pois o número de arestas não é o mesmo.
E para esse par de grafos, verifique se são isomorfos Note que eles têm o mesmo número de vértices e de arestas Têm o mesmo conjunto de graus: {2,2,2,3,3,4}
Vamos remover os vértices de grau 3. O grafo resultante é Note que eles não são isomorfos (e deveriam ser). Portanto, os grafos originais não são isomorfos Outra propriedade invariante importante é a planaridade, que vermos a seguir.