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

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

Seminário sobre Busca em Grafos.................................................... Antonio Dirceu Rabelo de Vasconcelos Filho Roberta Beltrão Correia.

Apresentações semelhantes


Apresentação em tema: "Seminário sobre Busca em Grafos.................................................... Antonio Dirceu Rabelo de Vasconcelos Filho Roberta Beltrão Correia."— Transcrição da apresentação:

1

2 Seminário sobre Busca em Grafos Antonio Dirceu Rabelo de Vasconcelos Filho Roberta Beltrão Correia Lima

3 Busca em Grafos - Tópicos Introdução Introdução Grafos x Árvores Grafos x Árvores Processo Geral Processo Geral Busca em Profundidade Busca em Profundidade Busca em Largura Busca em Largura Grafos Não-Conexos Grafos Não-Conexos Complexidade Complexidade

4 Introdução O que é um grafo? O que é um grafo? Qual o objetivo da busca em grafos? Qual o objetivo da busca em grafos?

5 Grafos x Árvores Quando o grafo é uma árvore o problema da busca se torna simples, pois existe uma ordem natural para percorrê-lo, uma vez que eles são claramente divididos em raiz, sub-árvore da esquerda e sub-árvore da direita. Quando o grafo é uma árvore o problema da busca se torna simples, pois existe uma ordem natural para percorrê-lo, uma vez que eles são claramente divididos em raiz, sub-árvore da esquerda e sub-árvore da direita. A BC DE F

6 Grafos x Árvores Para caminhar em uma árvore temos quatro tipos de busca: Para caminhar em uma árvore temos quatro tipos de busca: Pre-Order (Pre-Ordem); Pre-Order (Pre-Ordem); In-Order (Central); In-Order (Central); Pos-Order (Pós-Ordem); Pos-Order (Pós-Ordem); Por Nível. Por Nível. A BC DE F

7 Grafos x Árvores Pre-Order (Pre-Ordem): Pre-Order (Pre-Ordem): 1º. Visita a raiz; 1º. Visita a raiz; 2º. Percorre a sub-árvore da esquerda; 2º. Percorre a sub-árvore da esquerda; 3º. Percorre a sub-árvore da direita. 3º. Percorre a sub-árvore da direita. A BC DE F

8 Grafos x Árvores In-Order (Central): In-Order (Central): 1º. Percorre a sub-árvore da esquerda; 1º. Percorre a sub-árvore da esquerda; 2º. Visita a raiz; 2º. Visita a raiz; 3º. Percorre a sub-árvore da direita. 3º. Percorre a sub-árvore da direita. A BC DE F

9 Grafos x Árvores Pos-Order (Pós-Ordem): Pos-Order (Pós-Ordem): 1º. Percorre a sub-árvore da esquerda; 1º. Percorre a sub-árvore da esquerda; 2º. Percorre a sub-árvore da direita. 2º. Percorre a sub-árvore da direita. 3º. Visita a raiz; 3º. Visita a raiz; A BC DE F

10 Grafos x Árvores Por Nível: Por Nível: Percorre-se um nível de cada vez, sendo cada nível percorrido da esquerda para a direita. Percorre-se um nível de cada vez, sendo cada nível percorrido da esquerda para a direita. A BC DE F

11 Grafos x Árvores Pre-Order: A B D F E G H I K J C Pre-Order: A B D F E G H I K J C In-Order: F D B G E I K H J A C In-Order: F D B G E I K H J A C Pos-Order: F D G K I J H E B C A Pos-Order: F D G K I J H E B C A Por Nível: A B C D E F G H I J K Por Nível: A B C D E F G H I J K Ex.:

12 Grafos x Árvores Quando o grafo não tiver a propriedade de árvore não há um referencial geral a ser considerado, ou seja, não são definidos conceitos de esquerda, direita e nível. Assim o processo de busca se torna mais difícil. Quando o grafo não tiver a propriedade de árvore não há um referencial geral a ser considerado, ou seja, não são definidos conceitos de esquerda, direita e nível. Assim o processo de busca se torna mais difícil.

13 Grafos x Árvores Desse modo surgem as perguntas: Como caminhar no grafo de modo a visitar todos os vértices e arestas, evitando, contudo, repetições desnecessárias? Como caminhar no grafo de modo a visitar todos os vértices e arestas, evitando, contudo, repetições desnecessárias? Como definir um caminhamento sistemático no grafo, de modo que fique determinado qual o vértice a ser visitado na seqüência de visitas? Como definir um caminhamento sistemático no grafo, de modo que fique determinado qual o vértice a ser visitado na seqüência de visitas?

14 Processo Geral Seja G um grafo no qual todos os vértices estão inicialmente desmarcados. Seja G um grafo no qual todos os vértices estão inicialmente desmarcados. Inicialmente, marca-se como visitado um vértice v escolhido arbitrariamente. Esse vértice inicial é chamado de raiz de busca. Inicialmente, marca-se como visitado um vértice v escolhido arbitrariamente. Esse vértice inicial é chamado de raiz de busca. Seleciona-se uma aresta que parte de algum vértice já marcado v. Marca-se então a aresta (v,w) como explorada e o vértice w como visitado (caso ainda não o seja). Seleciona-se uma aresta que parte de algum vértice já marcado v. Marca-se então a aresta (v,w) como explorada e o vértice w como visitado (caso ainda não o seja). O processo termina quando todas as arestas de G tiverem sido selecionadas. O processo termina quando todas as arestas de G tiverem sido selecionadas.

15 Processo Geral Algoritmo de busca geral: Dados: grafo G (V,E) Escolher e marcar um vértice inicial Enquanto existir algum vértice v marcado e incidente a uma aresta (v,w) não explorada, faça explorar a aresta (v,w) se w é não marcado se w é não marcado então marcar w então marcar w A B E EE E D DD D C

16 Processo Geral Note que durante o processo de exploração de um vértice é possível que ele seja alcançado diversas vezes (tantas quantas forem o número de arestas incidentes). Nos critérios de busca em profundidade e busca em largura, que veremos a seguir, a escolha do próximo vértice torna-se única, mas para os casos do vértice inicial e aresta incidente a escolha permanece arbitrária.

17 Busca em Profundidade (Depth-First Search) Dentre todos os vértices marcados e incidentes a alguma aresta ainda não explorada, escolher aquele mais recentemente alcançado na busca. Dentre todos os vértices marcados e incidentes a alguma aresta ainda não explorada, escolher aquele mais recentemente alcançado na busca. Um detalhe importante é que usamos o auxílio de uma pilha para guardar os vértices já marcados. Um detalhe importante é que usamos o auxílio de uma pilha para guardar os vértices já marcados.

18 Busca em Profundidade (Depth-First Search) Procedimento P (v,pai) marcar v; colocar v na pilha Q; para toda aresta (v,w) faça se w é não marcado se w é não marcado entãovisitar (v,w); entãovisitar (v,w); marcar (v,w) como aresta de árvore; P(w,v); senãose w pai senãose w pai então visitar (v,w); então visitar (v,w); marcar (v,w) como aresta de retorno; marcar (v,w) como aresta de retorno; senão visitar (v,w); senão visitar (v,w); marcar (v,w) como aresta de árvore; marcar (v,w) como aresta de árvore; retirar v da pilha retirar v da pilhafim_do_procedimento Ex.

19 Busca em Profundidade (Depth-First Search) O algoritmo particiona as arestas em: u Arestas de Árvore; u Arestas de Retorno. As arestas de árvore constituem uma árvore geradora de G. As arestas de árvore constituem uma árvore geradora de G. As arestas de retorno, cada uma por sua vez, liga um vértice v a um ancestral seu. As arestas de retorno, cada uma por sua vez, liga um vértice v a um ancestral seu.

20 Busca em Profundidade (Depth-First Search) v1 v1 v1 v1 Ex.: Criar duas diferentes árvores geradoras para o grafo abaixo: v 3 v 3 v 2 v 2 v5 v5 v5 v5 v 4 v 4 v 6 v 6

21 Busca em Largura (Breadth-First Search) Dentre todos os vértices marcados e incidentes a alguma aresta ainda não explorada, escolher aquele menos recentemente alcançado na busca. Dentre todos os vértices marcados e incidentes a alguma aresta ainda não explorada, escolher aquele menos recentemente alcançado na busca. Um detalhe importante é que usamos o auxílio de uma fila para guardar os vértices já marcados. Um detalhe importante é que usamos o auxílio de uma fila para guardar os vértices já marcados.

22 Busca em Largura (Breadth-First Search) Procedimento L (v,pai) Procedimento L (v,pai) marcar v; marcar v; colocar v na fila Q; colocar v na fila Q; enquanto a fila Q não for vazia faça enquanto a fila Q não for vazia faça remover o 1º vértice w da fila; remover o 1º vértice w da fila; para todo (w,x) faça para todo (w,x) faça se x é não marcado se x é não marcado então marque x; então marque x; adicione (w,x) à árvore T; adicione (w,x) à árvore T; coloque x na fila Q; coloque x na fila Q; fim_do_procedimento fim_do_procedimento Ex.

23 Grafos não-conexos No caso do grafo não ser conexo o algoritmo de busca (profundidade ou largura) terá apenas uma modificação e seguirá o seguinte critério: No caso do grafo não ser conexo o algoritmo de busca (profundidade ou largura) terá apenas uma modificação e seguirá o seguinte critério: Executa-se o algoritmo a partir de um vértice v qualquer. Se ao término do procedimento restar algum vértice do grafo G não marcado repete-se o procedimento para este vértice. Executa-se o algoritmo a partir de um vértice v qualquer. Se ao término do procedimento restar algum vértice do grafo G não marcado repete-se o procedimento para este vértice. c f d a b e h i g Ex.:

24 Complexidade Nos dois algoritmos de busca (largura e profundidade) observamos que cada aresta é visitada exatamente duas vezes (uma para cada vértice). Portanto o tempo de execução depende do número de arestas. Nos dois algoritmos de busca (largura e profundidade) observamos que cada aresta é visitada exatamente duas vezes (uma para cada vértice). Portanto o tempo de execução depende do número de arestas. Quando o grafo é não-conexo, temos que analisar os vértices que não estão conectados a ninguém. Assim, o tempo de execução também depende do nº de vértices. Quando o grafo é não-conexo, temos que analisar os vértices que não estão conectados a ninguém. Assim, o tempo de execução também depende do nº de vértices. Conclusão: Para um grafo G (V,E) os algoritmos de busca em largura e em profundidade tem complexidade Conclusão: Para um grafo G (V,E) os algoritmos de busca em largura e em profundidade tem complexidade O ( |V| + |E|)

25 Conclusão


Carregar ppt "Seminário sobre Busca em Grafos.................................................... Antonio Dirceu Rabelo de Vasconcelos Filho Roberta Beltrão Correia."

Apresentações semelhantes


Anúncios Google