A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Grafos Anjolina Grisi de Oliveira 2007

Apresentações semelhantes


Apresentação em tema: "Grafos Anjolina Grisi de Oliveira 2007"— Transcrição da apresentação:

1 Grafos Anjolina Grisi de Oliveira 2007
obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2007

2 Matemática Discreta/Grafos CIn-UFPE
Conectividade Caminho em um grafo não orientado Um caminho de tamanho n de u para v, onde n é um inteiro positivo, em um grafo não orientado é uma seqüência de arestas e1,...,en do grafo de forma que f(e1) = {x0,x1}, f(e2) = {x1,x2}...f(en)={xn-1,xn}, onde x0=u e xn=v. G1 Se o grafo é simples, denotamos o caminho por sua seqüência de vértices: x0, x1 ,...xn Matemática Discreta/Grafos CIn-UFPE

3 Matemática Discreta/Grafos CIn-UFPE
Conectividade Caminho em um multigrafo direcionado Um caminho de tamanho n de u para v, onde n é um inteiro positivo, em um multigrafo direcionado é uma seqüência de arestas e1,...,en do grafo de forma que f(e1) =(x0,x1), f(e2) = (x1,x2)...f(en)=(xn-1,xn), onde x0=u e xn=v. Quando não existem arestas múltiplas, o caminho pode ser denotado por uma seqüência de vértices: (x2, x5, x4, x1) Matemática Discreta/Grafos CIn-UFPE

4 Matemática Discreta/Grafos CIn-UFPE
Conectividade Circuito ou ciclo Um caminho é um circuito se ele começa e termina no mesmo vértice. G1 Circuito: x1,x2,x5,x4,x1 Matemática Discreta/Grafos CIn-UFPE

5 Matemática Discreta/Grafos CIn-UFPE
Exemplos de ciclos 1 2 1 2 3 4 3 4 Ciclo de tamanho 3 1  2  4  1 Ciclo de tamanho 3 1  2  3  1 Matemática Discreta/Grafos CIn-UFPE

6 Matemática Discreta/Grafos CIn-UFPE
Ciclo (ou circuito) A seqüência de vértices (x1, x2, x5, x4, x1) é um exemplo de ciclo Matemática Discreta/Grafos CIn-UFPE

7 Matemática Discreta/Grafos CIn-UFPE
Caminho (ou circuito) simples Um caminho ou circuito é chamado de simples se ele não contem a mesma aresta mais de uma vez. Matemática Discreta/Grafos CIn-UFPE

8 Matemática Discreta/Grafos CIn-UFPE
Conectividade Definição para grafos não orientados Um grafo não orientado é chamado de conexo (ou conectado) se existe um caminho entre cada par de vértices distintos do grafo. G1 Em uma rede de computadores, quaisquer dois computadores podem se comunicar se e somente se o grafo da rede é conexo. Matemática Discreta/Grafos CIn-UFPE

9 Matemática Discreta/Grafos CIn-UFPE
Grafo desconexo O grafo mostrado a seguir não é conexo pois, por exemplo, não existe um caminho entre x3 e x5. Matemática Discreta/Grafos CIn-UFPE

10 Matemática Discreta/Grafos CIn-UFPE
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. Matemática Discreta/Grafos CIn-UFPE

11 Matemática Discreta/Grafos CIn-UFPE
Vértice de corte (ou pontos de articulação) Um vértice é dito ser um vértice de corte se sua remoção (juntamente com as arestas a ele conectadas) produz um grafo com mais componentes conexos. (se o grafo original é conexo, ele se torna desconexo). X2 é um vértice de corte Matemática Discreta/Grafos CIn-UFPE

12 Matemática Discreta/Grafos CIn-UFPE
Ponte Uma aresta é dita ser uma ponte se sua remoção produz um grafo com mais componentes conexos. (X1,X4) é uma ponte Matemática Discreta/Grafos CIn-UFPE

13 Matemática Discreta/Grafos CIn-UFPE
Grafo fortemente conexo No caso de grafos orientados (digrafos), um grafo é dito ser fortemente conexo se existe um caminho de a para b e de b para a, para cada par a,b de vértices do grafo. 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. Matemática Discreta/Grafos CIn-UFPE

14 Matemática Discreta/Grafos CIn-UFPE
Grafo fracamente conexo Um grafo direcionado G(V,A) é chamado de fracamente conexo se existe um caminho entre cada par de vértices no grafo não orientado subjacente. Cada um destes subgrafos é fortemente conexo. No entanto, o grafo todo é apenas fracamente conexo. Matemática Discreta/Grafos CIn-UFPE

15 Matemática Discreta/Grafos CIn-UFPE
Caminhos e Isomorfismo A existência de circuitos simples com um tamanho n é uma invariante Matemática Discreta/Grafos CIn-UFPE

16 Matemática Discreta/Grafos CIn-UFPE
Caminhos e Isomorfismo - Além disso, caminhos podem ser usados para construir mapeamentos, que podem ser isomorfismos. u2 u5 u4 u1 u3 v2 v3 v4 v5 v1 Caminho1: u1, u4, u3,u2, u5 Caminho2: v3, v2, v1,v5, v4 Matemática Discreta/Grafos CIn-UFPE

17 Matemática Discreta/Grafos CIn-UFPE
Contando caminhos entre vértices Teorema: Seja G um grafo cuja matriz de adjacência A usa a seguinte ordem nos vértices: v1,v2,...,vn. A quantidade de caminhos diferentes de tamanho r de vi para vj, onde r é um inteiro positivo é igual a ai,j entrada da matriz Ar a,b,a,b,d a,b,a,c,d a,b,d,b,d a,b,d,c,d a,c,a,b,d a,c,a,c,d a,c,d,b,d a,c,d,c,d a b d c Matemática Discreta/Grafos CIn-UFPE

18 Matemática Discreta/Grafos CIn-UFPE
Circuito Euleriano Um circuito euleriano em um grafo G é um circuito simples que contem cada aresta de G. Matemática Discreta/Grafos CIn-UFPE

19 Matemática Discreta/Grafos CIn-UFPE
Teorema (Euler 1736) Um multigrafo conectado G possui um circuito euleriano se e somente se o grau de cada vértice de G é par. Prova: Ida: Seja G um grafo euleriano. Por cada ocorrência de vértice do circuito euleriano, existe uma aresta que chega nesse vértice e outra que sai desse vértice. Como toda aresta faz parte do circuito, isto é, nenhuma aresta fica fora do ciclo, necessariamente o número de arestas por cada vértice é par. Matemática Discreta/Grafos CIn-UFPE

20 Matemática Discreta/Grafos CIn-UFPE
Volta: Suponhamos que todos os vértices possuem grau par. Seja vi um vértice do grafo. Tentemos, a partir de vi, construir um caminho 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 o caminho vai terminar. Se esse caminho, 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. Matemática Discreta/Grafos CIn-UFPE

21 Matemática Discreta/Grafos CIn-UFPE
Volta (cont.): Recomeçamos o mesmo processo com o grafo G', partindo de um vértice comum com C1, obtendo assim um novo circuito C2. A figura abaixo mostra que dois circuitos que têm um vértice em comum podem formar um circuito único: chegando no vértice comum em um dos dois circuitos, continuamos o percurso no outro circuito. Continuando esse processo, necessariamente obteremos um circuito único que contém todas as arestas de G. Matemática Discreta/Grafos CIn-UFPE

22 Matemática Discreta/Grafos CIn-UFPE
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 ? Matemática Discreta/Grafos CIn-UFPE

23 Matemática Discreta/Grafos CIn-UFPE
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 Matemática Discreta/Grafos CIn-UFPE

24 Matemática Discreta/Grafos CIn-UFPE
Aplicação em jogos Como fazer um desenho que comece a partir de um ponto, retorne a esse ponto e o lápis não seja levantado do papel? Podemos construir um circuito Euleriano Existem vários algoritmos para construir um circuito Euleriano Vamos estudar um baseado na prova do teorema de Euler Matemática Discreta/Grafos CIn-UFPE

25 Algoritmo de Hierholzer
Algoritmo 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 Matemática Discreta/Grafos CIn-UFPE

26 Algoritmo de Hierholzer
Algoritmo para a construção de um ciclo euleriano sugerido a partir da prova do teorema de Euler Ciclo 1: 1,2,5,9,10,11,6,3,1 Ciclo 2: 2,6,5,10,6,7,12,8,7,4,3,2 Ciclo Euleriano: 1,2,6,5,10,6,7,12,8,7,4,3,2,5,9,10,11,6,3,1 Matemática Discreta/Grafos CIn-UFPE

27 Algoritmo de Hierholzer
1 3 4 2 6 7 8 5 9 11 10 12 Ciclo 1: 1,2,5,9,10,11,6,3,1 Ciclo 2: 2,6,5,10,6,7,12,8,7,4,3,2 Ciclo Euleriano: 1,2,6,5,10,6,7,12,8,7,4,3,2,5,9,10,11,6,3,1 Matemática Discreta/Grafos CIn-UFPE

28 Matemática Discreta/Grafos CIn-UFPE
Teorema Um multigrafo conectado G possui um caminho euleriano, mas que não é circuito, se e somente se possui exatamente dois vértices com grau ímpar i i f f Matemática Discreta/Grafos CIn-UFPE

29 Caminhos, circuitos Hamiltonianos
Um caminho (ou circuito) em um grafo G(V,E) é dito ser hamiltoniano se ele passa exatamente uma vez em cada um dos vértices de G Caminho e circuito hamiltoniano Apenas caminho hamiltoniano Matemática Discreta/Grafos CIn-UFPE

30 Matemática Discreta/Grafos CIn-UFPE
Mais exemplos Circuito e caminho caminho não hamiltoniano Matemática Discreta/Grafos CIn-UFPE

31 Matemática Discreta/Grafos CIn-UFPE
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 Matemática Discreta/Grafos CIn-UFPE

32 Matemática Discreta/Grafos CIn-UFPE
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” Eles dão condições suficientes apenas Se P então Q: P → Q P é condição suficiente para Q (basta que P ocorra para Q ocorrer) Q é condição necessária para P (se Q não ocorrer então P também não ocorrerá) Matemática Discreta/Grafos CIn-UFPE

33 Matemática Discreta/Grafos CIn-UFPE
Circuito hamiltoniano em grafos completos Todo grafo completo, que contém mais de 2 vértices contem um circuito 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 Matemática Discreta/Grafos CIn-UFPE

34 Matemática Discreta/Grafos CIn-UFPE
Teorema (Dirac 1952) Uma condição suficiente, mas não necessária, para que um grafo conexo simples G com n (>2) vértices tenha um circuito hamiltoniano é que o grau de todo vértice de G seja  n/2 O grafo abaixo, possui um circuito hamiltoniano mas não respeita a condição do teorema de Dirac Matemática Discreta/Grafos CIn-UFPE

35 Matemática Discreta/Grafos CIn-UFPE
Teorema (Ore 1960) Uma condição suficiente, mas não necessária, para que um grafo simples G com n (>2) vértices tenha um circuito hamiltoniano é que a soma dos graus de cada par de vértices não adjacentes seja no mínimo n. Permite identificar mais grafos com circuitos 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 Matemática Discreta/Grafos CIn-UFPE

36 Matemática Discreta/Grafos CIn-UFPE
O adjetivo "hamiltoniano" deve-se ao matemático irlandês Sir William Rowan Hamilton ( ). 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. Matemática Discreta/Grafos CIn-UFPE

37 Matemática Discreta/Grafos CIn-UFPE
A figura abaixo mostra um grafo que representa este problema, ou seja os vértices e arestas de um dodecaedro. Matemática Discreta/Grafos CIn-UFPE

38 Matemática Discreta/Grafos CIn-UFPE
Ciclo Hamiltoniano origem Matemática Discreta/Grafos CIn-UFPE

39 Matemática Discreta/Grafos CIn-UFPE
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. Matemática Discreta/Grafos CIn-UFPE

40 Matemática Discreta/Grafos CIn-UFPE
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. ¨      Matemática Discreta/Grafos CIn-UFPE

41 Matemática Discreta/Grafos CIn-UFPE
Grafos com pesos: - Cada aresta possui um número associado (peso) - O tamanho do caminho é a soma dos pesos das arestas do caminho 6 5 u 3 s 2 7 v x y 4 1 11 9 Matemática Discreta/Grafos CIn-UFPE

42 Matemática Discreta/Grafos CIn-UFPE
O algoritmo de Dijkstra O algoritmo de Dijkstra aqui descrito identifica o menor caminho entre dois vértices de um grafo não orientado. Se desejamos calcular o menor caminho de a para z em um grafo conexo simples com pesos, primeiro encontramos um menor caminho entre a e um primeiro vértice, depois entre a e um segundo vértice, esse procedimento é repetido até que seja encontrado um menor caminho entre a e z. Matemática Discreta/Grafos CIn-UFPE

43 Matemática Discreta/Grafos CIn-UFPE
O algoritmo de Dijkstra Um conjunto S de vértices é construído inserindo-se um vértice a cada iteração. A cada iteração também é adotado um procedimento para rotular vértices: um vértice w é rotulado com o tamanho do menor caminho de a até ele, e que contem somente vértices do conjunto S. O vértice a ser inserido em S é aquele com o menor rótulo. Matemática Discreta/Grafos CIn-UFPE

44 Matemática Discreta/Grafos CIn-UFPE
O algoritmo de Dijkstra O algoritmo começa rotulando a com 0 e os demais vértices com . Usamos a notação L0(a)=0 e L0(v)= . (na iteração 0). A notação Sk é usada para denotar o conjunto S após a iteração k. Começamos com S0=. O conjunto Sk é formado a partir de Sk-1 adicionado-se um vértice u que não está em Sk-1 e possui o menor rótulo. Após a inclusão de u em Sk, atualizamos os rótulos de todos os vértices que não estão nesse conjunto da seguinte maneira: Lk(v) é o tamanho do menor caminho de a até v que contem apenas os vértices de Sk. Matemática Discreta/Grafos CIn-UFPE

45 Matemática Discreta/Grafos CIn-UFPE
O algoritmo de Dijkstra Seja v um vértice que não está em Sk. Para atualizar o rótulo de v, observe que Lk(v) é o tamanho do menor caminho de a para v e que contém apenas os vértices que estão em Sk.. Esse caminho ou é o menor caminho que contem apenas os elementos de Sk-1 (sem a inclusão de u) ou é o menor caminho de a até u no passo k-1 com adição da aresta (u,v). Lk(v) =   min(Lk-1(v),Lk-1(u)+ peso(u,v)) Matemática Discreta/Grafos CIn-UFPE

46 Matemática Discreta/Grafos CIn-UFPE
O algoritmo de Dijkstra procedimento Dijkstra Para i := 1 até n: L(v)= . L(a) = 0 S= Enquanto z S u :=   Elemento que S e L(u) é mínimo S :=   S  {u} Para cada vértice v  S : Se L(u) + peso(u,v) < L(v) então L(v) = L(u) + peso(u,v) (observe que L(v) =   min(L(v),L(u)+ peso[u,v]) Retornar L(z) Matemática Discreta/Grafos CIn-UFPE

47 Matemática Discreta/Grafos CIn-UFPE
Exemplo: Qual o tamanho do menor caminho de A até D? 0: L(A)=0 e todos os outro é ; S=; Seja u o nó de menor rótulo. 1: S= S  {u}. Logo, S={A} B C 5 4 6 A 1 8 2 D 2 3 10 F E Matemática Discreta/Grafos CIn-UFPE

48 Matemática Discreta/Grafos CIn-UFPE
2: Para cada vértice v  S : (S aqui apenas possui A) Se L(u) + peso(u,v) < L(v) então L(v) = L(u) + peso(u,v) (lembrando que u acabou de ser incluído em S) Logo: L(B)=4; L(F)=2; B (A) C 4 5 4 6 A 1 8 2 D 2 3 2 10 F E (A) Matemática Discreta/Grafos CIn-UFPE

49 Matemática Discreta/Grafos CIn-UFPE
Próximo passo: colocar em S o nó de menor rótulo S={A}{F} Em seguida, atualizar os rótulos a partir de F L(B)=3; L(C)=10; L(E)=12; (A,F) B (A,F) C 10 3 4 5 4 6 A 1 8 2 D 2 3 12 2 10 (A,F) F E (A) Matemática Discreta/Grafos CIn-UFPE

50 Matemática Discreta/Grafos CIn-UFPE
Próximo passo: colocar em S o nó de menor rótulo S={A,F}{B} Em seguida, atualizar os rótulos a partir de B: L(C)=8; (A,F,B) (A,F) B C 10 8 3 5 4 6 A 1 8 2 D 2 3 2 10 12 F E (A) (A,F) Matemática Discreta/Grafos CIn-UFPE

51 Matemática Discreta/Grafos CIn-UFPE
Próximo passo: colocar em S o nó de menor rótulo S={A,F,B}{C} Em seguida, atualizar os rótulos a partir de C: L(D)=14; L(E)=10; (A,F,B) (A,F) B C 8 3 5 4 6 A 1 8 2 D (A,F,B,C) 14 2 3 2 10 (A,F,B,C) 10 12 F E (A,F) Matemática Discreta/Grafos CIn-UFPE

52 Matemática Discreta/Grafos CIn-UFPE
Próximo passo: colocar em S o nó de menor rótulo S={A,F,B,C}{E} Em seguida, atualizar os rótulos a partir de E: L(D)=13; (A,F) (A,F,B) B C 8 3 5 4 6 A 1 8 2 D (A,F,B,C) 13 14 2 3 2 10 F E 10 (A,F,B,C) (A) Matemática Discreta/Grafos CIn-UFPE

53 Matemática Discreta/Grafos CIn-UFPE
Exemplo: Menor caminho de A até D 0: L(A)=0 e todos os outro é ; S=; 1: S={A}; L(B)=4; L(F)=2; 2: S={A,F}; L(B)=3; L(C)=10; L(E)=12; 3: S={A,F,B}; L(C)=8; 4: S={A,F,B,C}; L(D)=14; L(E)=10; 5: S={A,F,B,C,E}; L(D)=13; 6: S={A,F,B,C,E,D} B C 5 4 6 (A,F,B,C.E) A 1 8 2 D 13 2 3 10 F E Matemática Discreta/Grafos CIn-UFPE


Carregar ppt "Grafos Anjolina Grisi de Oliveira 2007"

Apresentações semelhantes


Anúncios Google