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

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

DCC/UFBA – MAT156 Adolfo Almeida Duran 2005. Adolfo Duran - 2005Teoria dos Grafos2 Apresentação O curso / motivação Horário /sala Programa do curso Referências.

Apresentações semelhantes


Apresentação em tema: "DCC/UFBA – MAT156 Adolfo Almeida Duran 2005. Adolfo Duran - 2005Teoria dos Grafos2 Apresentação O curso / motivação Horário /sala Programa do curso Referências."— Transcrição da apresentação:

1 DCC/UFBA – MAT156 Adolfo Almeida Duran 2005

2 Adolfo Duran Teoria dos Grafos2 Apresentação O curso / motivação Horário /sala Programa do curso Referências Avaliação Adolfo Duran - Duran -

3 Adolfo Duran Teoria dos Grafos3 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

4 Adolfo Duran Teoria dos Grafos4 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.

5 Adolfo Duran Teoria dos Grafos5 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.

6 Adolfo Duran Teoria dos Grafos6 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 ?

7 Adolfo Duran Teoria dos Grafos7 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.

8 Adolfo Duran Teoria dos Grafos8 As pontes de Königsberg –Euler generalizou o problema através de um modelo de grafos

9 Adolfo Duran Teoria dos Grafos9 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

10 Adolfo Duran Teoria dos Grafos10 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

11 Adolfo Duran Teoria dos Grafos11 Quantas cores são necessárias para colorir o mapa do Brasil, sendo que estados adjacentes não podem ter a mesma cor?

12 Adolfo Duran Teoria dos Grafos12 Questões sobre o caminho mínimo De 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.

13 Adolfo Duran Teoria dos Grafos13

14 Adolfo Duran Teoria dos Grafos14 Modelagem com grafos –Estamos interessados em objetos e nas relações entre eles –Quem são eles nos problemas apresentados? –Como representar graficamente?

15 Adolfo Duran Teoria dos Grafos15 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

16 Adolfo Duran Teoria dos Grafos16 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? A presenta-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

17 Adolfo Duran Teoria dos Grafos17 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.

18 Adolfo Duran Teoria dos Grafos18 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

19 Adolfo Duran Teoria dos Grafos19 Dois tipos de elementos –Vértices ou nós –Arestas Definições v1 v2v3 v4 v5 v6

20 Adolfo Duran Teoria dos Grafos20 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

21 Adolfo Duran Teoria dos Grafos21 G = (V,E)

22 Adolfo Duran Teoria dos Grafos22 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.

23 Adolfo Duran Teoria dos Grafos23 v1 v2v3 v4 v5 v6 e1 V = {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

24 Adolfo Duran Teoria dos Grafos24 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)}

25 Adolfo Duran Teoria dos Grafos25 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

26 Adolfo Duran Teoria dos Grafos26 Exercício Defina formalmente o grafo abaixo e identifique os conceitos de laço, aresta múltipla e multigrafo no mesmo:

27 Adolfo Duran Teoria dos Grafos27 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) = 3 Grau(d) = 2 Grau(a) = 2

28 Adolfo Duran Teoria dos Grafos28 –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

29 Adolfo Duran Teoria dos Grafos29 Grafo Regular (k-regular) – todos os vértices têm o mesmo grau (k) v1 v2 v4 v3 Seqüência de graus de um grafo consiste em escrever em ordem crescente o grau de todos os seus vértices

30 Adolfo Duran Teoria dos Grafos30 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

31 Adolfo Duran Teoria dos Grafos31 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?

32 Adolfo Duran Teoria dos Grafos32 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.

33 Adolfo Duran Teoria dos Grafos33 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.

34 Adolfo Duran Teoria dos Grafos34 A soma dos graus de um grafo é sempre par: Quando o grafo é regular de grau r, temos:

35 Adolfo Duran Teoria dos Grafos35 Corolário Em qualquer grafo, o n o 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.

36 Adolfo Duran Teoria dos Grafos36 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.

37 Adolfo Duran Teoria dos Grafos37 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).

38 Adolfo Duran Teoria dos Grafos38 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}.

39 Adolfo Duran Teoria dos Grafos39 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).

40 Adolfo Duran Teoria dos Grafos40 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(v 1 ) = 0, grau(v 2 ) = 1, grau(v 3 ) = 2,...., grau(v n ) = n - 1 O que representa uma contradição.

41 Adolfo Duran Teoria dos Grafos41 Grafo Nulo (vazio) Grafo cujo número de arestas é zero. Ou, grafo regular de grau zero. Outros tipos de grafos N n é um grafo nulo com n vértices Exemplo: N 4 V={1,2,3,4}; E={ }.

42 Adolfo Duran Teoria dos Grafos42 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|. K n é um grafo completo com n vértices. Exemplo: K 4

43 Adolfo Duran Teoria dos Grafos43 Quantas arestas tem o K n ? 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. C n,m = n! / ( m! (n – m)! )

44 Adolfo Duran Teoria dos Grafos44 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

45 Adolfo Duran Teoria dos Grafos45 Complemento de um grafo

46 Adolfo Duran Teoria dos Grafos46 Complemento de um grafo Exercício: Dê exemplos que confirmem as propriedades acima Propriedade 1 Um grafo regular tem complemento regular Propriedade 2 O complemento de K n é N n

47 Adolfo Duran Teoria dos Grafos47 Grafo Bipartido Um grafo é dito ser bipartido quando seu conjunto de vértices V puder ser particionado em dois subconjuntos V 1 e V 2, tais que toda aresta de G une um vértice de V 1 a outro de V V1V1 V2V2

48 Adolfo Duran Teoria dos Grafos48 Grafo Bipartido Sejam 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 }

49 Adolfo Duran Teoria dos Grafos49 Grafo Bipartido Completo É um grafo bipartido em V1 e V2, sendo que cada elemento de V1 é adjacente a cada elemento de V2. K 3,3 V1 V2

50 Adolfo Duran Teoria dos Grafos50 Subgrafo Um grafo G s (V s, A s ) é dito ser subgrafo de um grafo G(V,A) quando V s V e A s A. O grafo G 2, por exemplo, é subgrafo de G 1 G1G1 G2G2

51 Adolfo Duran Teoria dos Grafos51 Subgrafo Próprio Um subgrafo G 2 é dito próprio, quando G 2 é subgrafo distinto de G 1 Subgrafos podem ser obtidos através da remoção de arestas e vértices.

52 Adolfo Duran Teoria dos Grafos52 Subgrafo Induzido Se G 2 é um subgrafo de G 1 e possui toda a aresta (v, w) de G 1 tal que ambos, v e w, estejam em V 2, então G 2 é o subgrafo induzido pelo subconjunto de vértices V V1= {1,2,3,4,5} G V2= {1,2,3,4} G2 V2 induz G2

53 Adolfo Duran Teoria dos Grafos53 Clique Denomina-se clique de um grafo G a um subgrafo (induzido) de G que seja completo

54 Adolfo Duran Teoria dos Grafos54 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.

55 Adolfo Duran Teoria dos Grafos55 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

56 Adolfo Duran Teoria dos Grafos56 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) | }

57 Adolfo Duran Teoria dos Grafos57 Isomorfismo de Grafos Dois grafos G 1 e G 2 são isomorfos se existe uma correspondência um a um entre os vértices de G 1 e G 2, com a propriedade de que o número de arestas unindo os vértices em G 1 é igual ao número de arestas unindo os vértices correspondentes em G 2.

58 Adolfo Duran Teoria dos Grafos58 Isomorfismo de Grafos (em outras palavras) Sejam dois grafos G 1 (V 1,A 1 ) e G 2 (V 2,A 2 ). Um isomorfismo de G 1 sobre G 2 é um mapeamento bijetivo f: V 1 V 2 tal que {x,y} A 1 se e somente se {f(x),f(y)} A 2, para todo x,y V 1. Função: { (a 2), (b 1), (c 3), (d 4), (e 6), (f 5) }

59 Adolfo Duran Teoria dos Grafos59 Isomorfismo de Grafos (exemplo) f(u) = azul, f(v) = lilás, f(w) = vermelho, f(x) = verde, f(y) = amarelo, f(z) = rosa uvw xyz

60 Adolfo Duran Teoria dos Grafos60 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

61 Adolfo Duran Teoria dos Grafos61 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

62 Adolfo Duran Teoria dos Grafos62 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) ad bc

63 Adolfo Duran Teoria dos Grafos63 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

64 Adolfo Duran Teoria dos Grafos64 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(v i ) = grausai(v i ) = | A |

65 Adolfo Duran Teoria dos Grafos65 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 ad bc ad bc Os grafos abaixo não são isomorfos

66 Adolfo Duran Teoria dos Grafos66 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)}

67 Adolfo Duran Teoria dos Grafos67 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)}

68 Adolfo Duran Teoria dos Grafos G H 34 G H G + H Exemplo

69 Adolfo Duran Teoria dos Grafos69 União e Soma –Podem ser aplicadas a qualquer número finito de grafos –São operações associativas –São operações comutativas

70 Adolfo Duran Teoria dos Grafos70 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.

71 Adolfo Duran Teoria dos Grafos71 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.

72 Adolfo Duran Teoria dos Grafos72 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.

73 Adolfo Duran Teoria dos Grafos73 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

74 Adolfo Duran Teoria dos Grafos74 Uma maneira simples de armazenar grafos, é listando os vértices adjacentes a cada vértice do grafo u: v,y v: u,y,w w: v,x,y x: w,y y: u,v,w,x u y v xw

75 Adolfo Duran Teoria dos Grafos75 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

76 Adolfo Duran Teoria dos Grafos76 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.

77 Adolfo Duran Teoria dos Grafos77 Grafo Conexo –Um grafo G(V,A) é dito ser conexo se ele não pode ser expresso como a união de dois grafos. G1G2 Conectividade

78 Adolfo Duran Teoria dos Grafos78 Grafo desconexo –Um grafo G(V,A) é dito ser desconexo se ele pode ser expresso pela união de dois outros grafos.

79 Adolfo Duran Teoria dos Grafos79 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.

80 Adolfo Duran Teoria dos Grafos80 Vértice de corte Um 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. X 2 é um vértice de corte

81 Adolfo Duran Teoria dos Grafos81 Ponte Uma aresta é dita ser uma ponte se sua remoção provoca uma redução na conectividade do grafo. (X 1,X 4 ) é uma ponte

82 Adolfo Duran Teoria dos Grafos82 Grafo cíclico (ou grafo circuito) Um grafo conectado que é regular de grau 2 é um grafo cíclico (= ciclo) C n é um grafo cíclico com n vértices Outros tipos de grafos C6C6

83 Adolfo Duran Teoria dos Grafos83 Grafo caminho O grafo obtido a partir de C n através da remoção de um aresta é o grafo caminho em n vértices, P n C5C5 P5P5

84 Adolfo Duran Teoria dos Grafos84 Grafo roda O grafo obtido a partir de C n-1 através da ligação de cada vértice a um novo vértice v é um grafo roda em n vértices, W n Corresponde à soma de N 1 com C n-1 C5C5 W6W6

85 Adolfo Duran Teoria dos Grafos85 Grafos cúbicos São grafos regulares de grau 3 O primeiro deles é conhecido como Grafo de Petersen

86 Adolfo Duran Teoria dos Grafos86 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 (x 6, x 5, x 4, x 1 ) é um exemplo de cadeia Cadeias, caminhos, ciclos...

87 Adolfo Duran Teoria dos Grafos87 Cadeia elementar (= caminho = path) Uma cadeia é dita ser elementar se não passa duas vezes pelo mesmo vértice Cadeia de tamanho Cadeia de tamanho

88 Adolfo Duran Teoria dos Grafos88 Cadeia simples (= trilha = trail) Uma cadeia é dita ser simples se não passa duas vezes pela mesma aresta (arco) Cadeia de tamanho Cadeia de tamanho

89 Adolfo Duran Teoria dos Grafos89 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 (x 1, x 2, x 5, x 6, x 3 ) é um exemplo de caminho

90 Adolfo Duran Teoria dos Grafos90 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 (x 1, x 2, x 3, x 6, x 5, x 4, x 1 ) é um exemplo de ciclo

91 Adolfo Duran Teoria dos Grafos91 Exemplos de ciclos Ciclo de tamanho Ciclo de tamanho

92 Adolfo Duran Teoria dos Grafos92 Circuito –Um circuito é um caminho simples e fechado. Aplica- se, portanto, somente a grafos orientados A seqüência de vértices (x 1, x 2, x 5, x 4, x 1 ) é um exemplo de circuito

93 Adolfo Duran Teoria dos Grafos93 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.

94 Adolfo Duran Teoria dos Grafos94 Componente fortemente conexa Um 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

95 Adolfo Duran Teoria dos Grafos95 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

96 Adolfo Duran Teoria dos Grafos96 Grafo semi-euleriano Um grafo conectado, não-euleriano G é semi- euleriano se existe uma cadeia simples contento todas as arestas de G

97 Adolfo Duran Teoria dos Grafos97 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.

98 Adolfo Duran Teoria dos Grafos98 Volta: Suponhamos que todos os vértices possuem grau par. Seja v i um vértice do grafo. Tentemos, a partir de v i, 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 v i onde a cadeia vai terminar. Se essa cadeia, que chamaremos C 1, contém todas as arestas de G, temos um ciclo euleriano. Senão, retiramos de G todas as arestas que fazem parte de C 1. No grafo resultante G', todos os vértices também possuem grau par e necessariamente um deles faz parte de C 1, senão o grafo não seria conexo.

99 Adolfo Duran Teoria dos Grafos99 Volta (cont.): Recomeçamos o mesmo processo com o grafo G', partindo de um vértice comum com C 1, obtendo assim um novo ciclo C 2. 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.

100 Adolfo Duran Teoria dos Grafos100 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

101 Adolfo Duran Teoria dos Grafos101 Algoritmo de Hierholzer Algoritmo para a construção de um ciclo euleriano sugerido a partir da prova do teorema de Euler

102 Adolfo Duran Teoria dos Grafos102 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 ?

103 Adolfo Duran Teoria dos Grafos103 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

104 Adolfo Duran Teoria dos Grafos104 Corolário I Um grafo conectado G é euleriano se e somente se ele pode ser decomposto em ciclos Corolário II Um grafo conectado G é semi-euleriano se e somente se ele possui exatamente 2 vértices de grau ímpar

105 Adolfo Duran Teoria dos Grafos105 Algoritmo de Fleury Algoritmo 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 elas II – se aparecer algum vértice isolado, apague-o também III – passe por uma ponte somente se não houver outra alternativa

106 Adolfo Duran Teoria dos Grafos106 Algoritmo de Fleury Algoritmo para a construção de um ciclo euleriano em um grafo euleriano

107 Adolfo Duran Teoria dos Grafos107 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

108 Adolfo Duran Teoria dos Grafos108 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

109 Adolfo Duran Teoria dos Grafos109 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

110 Adolfo Duran Teoria dos Grafos110 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

111 Adolfo Duran Teoria dos Grafos111 Ciclo hamiltoniano em grafos completos Todo grafo completo, que contém mais de 2 vértices é hamiltoniano Seja v 1,v 2,...,v n os vértices de G. Como existe uma aresta entre qualquer par de vértices, é possivel, a partir de v 1 percorrer essa sequência até v n e voltar para v 1

112 Adolfo Duran Teoria dos Grafos112 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

113 Adolfo Duran Teoria dos Grafos113 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

114 Adolfo Duran Teoria dos Grafos114 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.

115 Adolfo Duran Teoria dos Grafos115 A figura abaixo mostra um grafo que representa este problema, ou seja os vértices e arestas de um dodecaedro.

116 Adolfo Duran Teoria dos Grafos116 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

117 Adolfo Duran Teoria dos Grafos117 Como explorar um grafo Necessidade 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

118 Adolfo Duran Teoria dos Grafos118 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.

119 Adolfo Duran Teoria dos Grafos119 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

120 Adolfo Duran Teoria dos Grafos120 O problema do Caminho mais curto Uma 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 3 s v xy

121 Adolfo Duran Teoria dos Grafos u 3 s v xy Calculando os pesos:

122 Adolfo Duran Teoria dos Grafos122 Como obter um caminho mínimo partindo de s para y? 6 5 u 3 s v xy

123 Adolfo Duran Teoria dos Grafos123 Outra possibilidade: 6 5 u 3 s v xy

124 Adolfo Duran Teoria dos Grafos124 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

125 Adolfo Duran Teoria dos Grafos125 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).

126 Adolfo Duran Teoria dos Grafos126 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

127 Adolfo Duran Teoria dos Grafos127 Passo vCD 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

128 Adolfo Duran Teoria dos Grafos128 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.

129 Adolfo Duran Teoria dos Grafos129 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

130 Adolfo Duran Teoria dos Grafos130 Passo vCD P Iní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

131 Adolfo Duran Teoria dos Grafos131 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.

132 Adolfo Duran Teoria dos Grafos132 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.

133 Adolfo Duran Teoria dos Grafos133 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??

134 Adolfo Duran Teoria dos Grafos134 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 BC D E

135 Adolfo Duran Teoria dos Grafos135 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 (E F A B) A F BC D E

136 Adolfo Duran Teoria dos Grafos136 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 BC D E

137 Adolfo Duran Teoria dos Grafos137 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

138 Adolfo Duran Teoria dos Grafos138 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 A No grafo ao lado, a menor rota seria A B D E C A totalizando uma distância de 26

139 Adolfo Duran Teoria dos Grafos139 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 Não se conhecem algoritmos eficientes para resolver esse problema Existem algoritmos eurísticos que dão soluções aproximadas


Carregar ppt "DCC/UFBA – MAT156 Adolfo Almeida Duran 2005. Adolfo Duran - 2005Teoria dos Grafos2 Apresentação O curso / motivação Horário /sala Programa do curso Referências."

Apresentações semelhantes


Anúncios Google