Caminhamento em Grafos Autoria Celso C Ribeiro e
Caminhamento em Grafos Autoria: Celso C. Ribeiro e Caroline T. Rocha Adaptação: Maria Claudia Silva Boeres
Caminhamento em Grafos Caminhar/percorrer um grafo: visitar todos os nós e arestas BUSCA EM PROFUNDIDADE Enquanto for possível, aprofundar-se no grafo. Quando não for mais possível, recuar. 6º 3 7º 2 1º 1 3º 6 4 10º 9 2º 9º 5 8º 10 7 4º 8 5º 2
Caminhamento em Grafos 1 10º 9 6º 3 7º 2 1º 1 3º 6 4 2º 9º 5 4 8º 10 6 5 7 9 7 4º 8 5º 8 3 2 10 3
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 4
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 5
Caminhamento em Grafos Exemplo: 1 2 3 D A B C E 5 F G 6 4 H 7 8 A X B X C X D X E X F X G X H X B C A D E A F G B H C H D E F G não visitado 6
Caminhamento em Grafos Exemplo: A 1 2 3 D B A B C E 5 F 7 D G 6 H 8 E 4 F H C Árvore de busca em profundidade (pilha) G 7
Caminhamento em Grafos Algoritmo de busca em profundidade 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 8
Caminhamento em Grafos Exemplo: 7 1 1 2 11 6 8 7 8 2 3 10 14 9 4 3 5 4 6 5 11 10 12 9 13 13 14 12 9
Caminhamento em Grafos Aplicações de busca em profundidade, grafo G=(V, E) 10
Caminhamento em Grafos Algoritmo para encontrar as componentes conexas 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 + 1 PROF(i, componente) fim-se fim-para Fim 11
Caminhamento em Grafos Algoritmo para encontrar as componentes conexas 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 12
Caminhamento em Grafos BUSCA EM AMPLITUDE Enquanto for possível, examinar todos os nós à mesma distância do nó inicial. Quando não for mais possível, aprofundar. 6 3 5 2 1 1 7 6 4 2 9 4 3 5 8 9 10 7 10 8 13
Caminhamento em Grafos A Exemplo: B D Árvore de busca em profundidade (pilha) C E F G Árvore de busca em amplitude (fila) A A B C D F E G B D E C F G 14
Caminhamento em Grafos Algoritmo de busca em amplitude 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 15
Caminhamento em Grafos Exemplo: 1 2 4 D A B C E 5 F G 6 8 3 7 H não visitado A B C B A D E C A F G D B H E B H F C H G C H H D E G G w=H F C B E D A Fila D H G C A B E F F D G C B E F D C E F D E 16
Caminhamento em Grafos Exemplo: A 1 A B 2 B C 3 D 4 D E 5 F G 6 8 C 7 E F G H H Árvore de busca em amplitude (fila) 17
Caminhamento em Grafos Exemplo: 1 5 RCM 1 7 1 6 8 2 1 7 3 5 4 4 3 7 5 4 2 2 3 8 3 2 6 4 6 2 5 8 3 6 4 5 7 7 1 8 6 8 Árvore de busca em amplitude (fila) 18
- Slides: 18