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

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

Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.

Apresentações semelhantes


Apresentação em tema: "Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha."— Transcrição da apresentação:

1 Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha

2 2Algoritmos em Grafos PARTE 6: Caminhamento em Grafos

3 3Algoritmos em Grafos Caminhamento em Grafos Dados: G = (V,E) V = {1, 2,..., n} conjunto de nós E = { (u 1,v 1 ),..., (u m,v m )} conjunto de arestas Representação por listas de adjacências

4 4Algoritmos em Grafos Caminhamento em Grafos Caminhar/percorrer um grafo: visitar todos os nós e arestas Enquanto for possível, aprofundar-se no grafo. Quando não for mais possível, recuar. BUSCA EM PROFUNDIDADE º 2º 3º 4º 5º 6º 7º 8º 9º 10º

5 5Algoritmos em Grafos Caminhamento em Grafos º 2º 3º 4º 5º 6º 7º 8º 9º 10º

6 6Algoritmos em Grafos Caminhamento em Grafos A ordem em que os nós e arestas são visitados depende: do nó inicial da ordem em que os nós e as arestas aparecem na estrutura de dados

7 7Algoritmos em Grafos Caminhamento em Grafos Algoritmo recursivo para busca a partir de um nó Procedimento PROF(nó v) visitado(v) sim Para cada nó w adjacente a v faça Se visitado(w) = não então PROF(w) fim-para Fim

8 8Algoritmos em Grafos Caminhamento em Grafos Exemplo: D A E BC FG H ABCDEFGHABCDEFGH B C A BH FG A DE BH CH CH DE FG 1 A D E BC FG H X X X X X X X X não visitado visitado

9 9Algoritmos em Grafos Caminhamento em Grafos Exemplo: D A E BC FG H 1 A D E BC FG H A B EF D H C G Árvore de busca em profundidade (pilha) (pilha)

10 10Algoritmos em Grafos Caminhamento em Grafos Procedimento BUSCA-PROF Para i = 1,...,n faça visitado(i) não fim-para Para i = 1,...,n faça Se visitado(i) = não então PROF(i) fim-para Fim Algoritmo de busca em profundidade

11 11Algoritmos em Grafos Caminhamento em Grafos Exemplo:

12 Algoritmos em Grafos Caminhamento em Grafos Aplicações de busca em profundidade, grafo G=(V,E): G é acíclico? G é conexo? G é bipartido? G é planar? Quais são as componentes conexas de G? Quais são as componentes biconexas de G? Quais são os pontos de articulação de G?

13 13Algoritmos em Grafos Caminhamento em Grafos Procedimento COMPONENTES-CONEXAS Para i = 1,...,n faça visitado(i) 0 fim-para componente 0 Para i = 1,...,n faça Se visitado(i) = 0 então componente componente + 1 PROF(i, componente) fim-se fim-para Fim Algoritmo para encontrar as componentes conexas

14 14Algoritmos em Grafos Caminhamento em Grafos Procedimento PROF(v, marca) visitado(v) marca Para cada nó w adjacente a v faça Se visitado(w) = 0 então PROF(w, marca) fim-se fim-para Fim Algoritmo para encontrar as componentes conexas

15 15Algoritmos em Grafos Caminhamento em Grafos Problema do mosaico Exemplo: Problema do mosaico Quantos e quais mosaicos intermediários existem entre dois mosaicos específicos? Novas configurações (mosaicos) são obtidas através do movimento de um elemento para a posição vazia

16 16Algoritmos em Grafos Caminhamento em Grafos ?

17 17Algoritmos em Grafos Caminhamento em Grafos NÓ INICIAL NÓ ALVO Busca em profundidade

18 18Algoritmos em Grafos Caminhamento em Grafos Enquanto for possível, examinar todos os nós à mesma distância do nó inicial. Quando não for mais possível, aprofundar. BUSCA EM AMPLITUDE

19 19Algoritmos em Grafos Caminhamento em Grafos Exemplo: D A E B C FG BC A F G D E Árvore de busca em profundidade (pilha) (pilha) DE A FG C B Árvore de busca em amplitude (fila) (fila)

20 20Algoritmos em Grafos Caminhamento em Grafos Procedimento BUSCA-AMPL(v) visitado(v) sim Colocar v em uma fila Enquanto fila não vazia faça w retirar o elemento da frente da fila Para cada vértice i adjacente a w faça Se visitado(i) = não então visitado(i) sim Colocar i no final da fila fim-se fim-para fim-enquanto Fim Algoritmo de busca em amplitude

21 21Algoritmos em Grafos Caminhamento em Grafos Exemplo: D A E BC FG H ABCDEFGHABCDEFGH B C A BH FG A DE BH CH CH DE FG 1 A D E BC FG H não visitado visitado Fila A w =w =w =w = B A BC B CDCDE C DEFDEFG D EFGH EF GH

22 22Algoritmos em Grafos Caminhamento em Grafos Exemplo: D A E BC FG H 1 A D E BC FG H Árvore de busca em amplitude (fila) (fila) D A E BC FG H

23 23Algoritmos em Grafos Caminhamento em Grafos Busca em amplitude NÓ INICIAL NÓ ALVO Exemplo do mosaico:

24 24Algoritmos em Grafos Caminhamento em Grafos Algoritmo de Dijkstra: Caminho mais curto do nó 1 (inicial) ao nó n (final) Grafo G = (V,E) distâncias c ij 0 Passo 0: (1) 0, (i) +, i = 2,...,n Passo 1: Obter i V tal que (i) = min j V (j) Passo 2: Se i = n, então terminar Passo 3: V V – {i} Passo 4: Atualizações: (j) min{ (j), (i)+c ij }, j + (i) Passo 5: Voltar ao passo 1

25 25Algoritmos em Grafos Caminhamento em Grafos Suponha-se que exista um oráculo que, para cada nó, estima o comprimento h* do caminho mais curto deste nó até o nó final. *(i) Valor do caminho mais curto de 1 a i n i h*(i) Valor do caminho mais curto de i a n 1 i Caminho mais curto de 1 a n passando pelo nó i Qual é a interpretação de *(i) + h*(i) ?

26 26Algoritmos em Grafos Caminhamento em Grafos Caminho mais curto de 1 a 8: 5 aplicando Dijkstra 5 ( ) O que acontece se no passo 1 escolhermos (i) = min j N { (j) + h*(j) } ? = 0 = 2 = 3 = 1 = 3 = 5 = 4 = 5 = = = = = = = h*(j)

27 27Algoritmos em Grafos = = = = = = = Caminhamento em Grafos = 0 = 2 = 3 = 1 = 3 = 5 = 4 = h*(1) = 5 h*(2) = 5 h*(3) = 4 h*(4) = 2 h*(5) = 5 h*(6) = 3 h*(7) = 3 h*(8) = 0 Oráculo: 1 (j) + h*(j) Se a soma (j) + h*(j) é utilizada, apenas os nós do caminho mais curto são examinados.

28 28Algoritmos em Grafos = = = = = = = Caminhamento em Grafos = 0 = 2 = 3 = 1 = 3 = 5 = 4 = h(1) = 4 h(2) = 1 h(3) = 3 h(4) = 1 h(5) = 4 h(6) = 3 h(7) = 2 h(8) = 0 1 O que acontecerá se usarmos h(j) h*(j) ? Em especial, a que corresponde o caso h(j) = 0 j ? (j) + h(j) Se a soma (j) + h(j) é utilizada, o número de nós aumenta à medida que h(j) decresce de h*(j) até 0.

29 29Algoritmos em Grafos = = = = = = = Caminhamento em Grafos = 0 = 2 = 3 = 1 = 3 = 5 = 4 = h(1) = 0 h(2) = 1 h(3) = 4 h(4) = 5 h(5) = 4 h(6) = 3 h(7) = 3 h(8) = 0 1 Finalmente, o que poderá acontecer se usarmos h(j) > h*(j) ? A utilização de h(j) > h*(j) pode levar à perda do caminho mais curto.

30 30Algoritmos em Grafos Caminhamento em Grafos Algoritmo A* A cada etapa, selecionar o nó com menor valor de *(j) + h*(j) Na prática, usar h(j) (estimativa) e não h*(j). h(i) h*(i) h(n) = 0 (alvo) solução ótima, caminho mais curto c ij = 1 h(i) 0 busca em amplitude h h* menor número de nós

31 31Algoritmos em Grafos Caminhamento em Grafos Problema do mosaico Exemplo: Problema do mosaico h 1 número de peças fora de posição h 2 distância da peça mais afastada h 3 soma das distâncias de todas as peças Que heurísticas podem ser usadas para estimar a distância (número de movimentos) para chegar no alvo?

32 32Algoritmos em Grafos Caminhamento em Grafos NÓ INICIAL NÓ ALVO h 1 = número de peças fora de posição

33 33Algoritmos em Grafos Caminhamento em Grafos NÓ INICIAL NÓ ALVO h 3 = soma das distâncias


Carregar ppt "Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha."

Apresentações semelhantes


Anúncios Google