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

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

Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005.

Apresentações semelhantes


Apresentação em tema: "Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005."— Transcrição da apresentação:

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

2 Matemática Discreta/Grafos CIn-UFPE2 Determine se os seguintes grafos são bipartidos

3 Matemática Discreta/Grafos CIn-UFPE3 Grafo bipartido? v1 v2 v4 v3

4 Matemática Discreta/Grafos CIn-UFPE4 Determine se os seguintes grafos são bipartidos

5 Matemática Discreta/Grafos CIn-UFPE5 Grafo cíclico (ou simplesmente Ciclo) 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

6 Matemática Discreta/Grafos CIn-UFPE6 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 C5C5 W6W6

7 Matemática Discreta/Grafos CIn-UFPE7 Grafos n-cúbicos Os grafos n-cúbicos, denotados por Q n, são grafos cujos vértices representam as 2 n cadeias de bits de tamanho n. Dois vértices são adjacentes se e somente se as cadeias de bits que eles representam diferem em exatamente uma posição de bit.

8 Matemática Discreta/Grafos CIn-UFPE8 Grafos Orientados ou Dígrafos Um dígrafo G(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 (também podemos chamar de arestas). Multigrafo Orientado G(V,A) Consiste de um conjunto V não vazio de vértices, um conj. A de arestas e uma função f de A em {(u,v) | u,v  V}. As arestas e1 e e2 são múltiplas se f(e1) = f(e2).

9 Matemática Discreta/Grafos CIn-UFPE9 Revisando TipoArestasMúltiplas?Laços? Simplesnão dir.NãoNão Multigrafonão dir.SimNão Pseudografonão dir, SimSim Direcionadodir.NãoSim Multigrafo dir.dir.SimSim

10 Matemática Discreta/Grafos CIn-UFPE10 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)) Proposição  grauent(v i ) =  grausai(v i ) = | A |

11 Matemática Discreta/Grafos CIn-UFPE11 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

12 Matemática Discreta/Grafos CIn-UFPE12 Lista de adjacência 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

13 Matemática Discreta/Grafos CIn-UFPE13 Lista de adjacência em grafos direcionados Tabela com vértices iniciais e finais (terminais) Inic. Terminais u: u,v v: w: v x: y,w y: y x w v u

14 Matemática Discreta/Grafos CIn-UFPE14 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

15 Matemática Discreta/Grafos CIn-UFPE15 Matriz de adjacência Se G é um grafo direcionado com vértices {1,2,3,...,n}, sua matriz de adjacência é a matriz n X n cujo elemento ij é o 1 se existe uma arestas onde vi é o vértice inicial e vj é o vértice final. Já estudamos esse tipo de matriz na representação de relações. Se G é um multigrafo direcionado 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 onde vi é o vértice inicial e vj é o vértice final. A matriz de adjacência para grafos com direção não é necessariamente simétrica.

16 Matemática Discreta/Grafos CIn-UFPE16 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 é igual a – 1 se a aresta ej é incidente ao vértice vi, ou – 0, caso contrário Arestas múltiplas são representadas usando colunas com entradas idênticas. Laços são representados usando colunas com extamente uma entrada igual a 1.

17 Matemática Discreta/Grafos CIn-UFPE17 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) = {x 0,x 1 }, f(e2) = {x 1,x 2 }...f(en)={x n-1,x n }, onde x 0 =u e x n =v. G1 Conectividade Se o grafo é simples, denotamos o caminho por sua seqüência de vértices: x 0, x 1,...x n

18 Matemática Discreta/Grafos CIn-UFPE18 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) =(x 0,x 1 ), f(e2) = (x 1,x 2 )...f(en)=(x n-1,x n ), onde x 0 =u e x n =v. Quando não existem arestas múltiplas, o caminho pode se denotado por um seqüência de vértices: (x 2, x 5, x 4, x 1 ) Conectividade

19 Matemática Discreta/Grafos CIn-UFPE19 Circuito ou ciclo –Um caminho é um circuito se ele começa e termina no mesmo vértice. G1 Conectividade Circuito: x 1,x 2,x 5,x 4,x 1

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

21 Matemática Discreta/Grafos CIn-UFPE21 Ciclo (ou circuito) A seqüência de vértices (x 1, x 2, x 5, x 4, x 1 ) é um exemplo de ciclo

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

23 Matemática Discreta/Grafos CIn-UFPE23 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 Conectividade Em uma rede de computadores, quaisquer dois computadores podem se comunicar se e somente se o grafo da rede é conexo.

24 Matemática Discreta/Grafos CIn-UFPE24 Grafo desconexo –O grafo mostrado a seguir não é conexo pois, por exemplo, não existe um caminho entre x 3 e x 5.

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

26 Matemática Discreta/Grafos CIn-UFPE26 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). X 2 é um vértice de corte

27 Matemática Discreta/Grafos CIn-UFPE27 Ponte Uma aresta é dita ser uma ponte se sua remoção produz um grafo com mais componentes conexos. (X 1,X 4 ) é uma ponte

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

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

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

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

32 Matemática Discreta/Grafos CIn-UFPE32 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 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 v i onde o caminho vai terminar. Se esse caminho, 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.

33 Matemática Discreta/Grafos CIn-UFPE33 Volta (cont.): Recomeçamos o mesmo processo com o grafo G', partindo de um vértice comum com C 1, obtendo assim um novo circuito C 2. 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.

34 Matemática Discreta/Grafos CIn-UFPE34 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

35 Matemática Discreta/Grafos CIn-UFPE35 Algoritmo de Hierholzer Algoritmo para a construção de um ciclo euleriano sugerido a partir da prova do teorema de Euler

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

37 Matemática Discreta/Grafos CIn-UFPE37 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

38 Matemática Discreta/Grafos CIn-UFPE38 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

39 Matemática Discreta/Grafos CIn-UFPE39 Algoritmo de Fleury Algoritmo para a construção de um ciclo euleriano em um grafo euleriano

40 Matemática Discreta/Grafos CIn-UFPE40 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 Caminhos, circuitos Hamiltonianos Apenas caminho hamiltoniano Caminho e circuito hamiltoniano

41 Matemática Discreta/Grafos CIn-UFPE41 Mais exemplos Circuito e caminho caminhonão hamiltoniano

42 Matemática Discreta/Grafos CIn-UFPE42 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

43 Matemática Discreta/Grafos CIn-UFPE43 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”

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

45 Matemática Discreta/Grafos CIn-UFPE45 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

46 Matemática Discreta/Grafos CIn-UFPE46 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

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

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

49 Matemática Discreta/Grafos CIn-UFPE49 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

50 Matemática Discreta/Grafos CIn-UFPE50 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

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

52 Matemática Discreta/Grafos CIn-UFPE52 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. 

53 Matemática Discreta/Grafos CIn-UFPE53 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

54 Matemática Discreta/Grafos CIn-UFPE u 3 s v xy Grafos com pesos: - Cada aresta possui um número associado (peso) - O tamanho do caminho é a soma dos pesos das arestas do caminho

55 Matemática Discreta/Grafos CIn-UFPE55 Como obter um caminho mínimo partindo de s para y? 6 5 u 3 s v xy

56 Matemática Discreta/Grafos CIn-UFPE56 Outra possibilidade: 6 5 u 3 s v xy

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

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

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

60 Matemática Discreta/Grafos CIn-UFPE60 O algoritmo de Dijkstra Seja v um vértice que não está em S k. Para atualizar o rótulo de v, observe que L k (v) é o tamanho do menor caminho de a para v e que contém apenas os vértices que estão em S k.. Esse caminho ou é o menor caminho que contem apenas os elementos de S k-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). L k (v) = min(L k-1 (v),L k-1 (u)+ peso(u,v))

61 Matemática Discreta/Grafos CIn-UFPE61 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)

62 Matemática Discreta/Grafos CIn-UFPE62 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} A F BC D E


Carregar ppt "Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005."

Apresentações semelhantes


Anúncios Google