Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca...

183
Algoritmos e Estruturas de Dados II Busca em Grafos Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info

Transcript of Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca...

Page 1: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

Algoritmos e Estruturas de Dados II

Busca em GrafosProf. Tiago Eugenio de Melo

[email protected]

www.tiagodemelo.info

Page 2: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

2/183

Observações

● As palavras com a fonte Courier indicam as palavras-reservadas da linguagem de programação.

Page 3: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

3/183

Referências

● Projetos de Algoritmos – com implementações em Pascal e C. Nivio Ziviani. 2a edição. Thomson, 2005.

● Material baseado nas notas de aula do professor Marco Antônio Moreira de Carvalho. Acessado em 14/10/2019: http://www.decom.ufop.br/marco/ensino/bcc204/material-das-aulas

Page 4: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

4/183

IntroduçãoBusca em Grafos

Page 5: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

5/183

Busca em Grafos

Page 6: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

6/183

Busca em Grafos

● Definição

Page 7: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

7/183

Busca em Grafos

● Definição– A busca em grafos (ou percurso em grafos) é a

examinação de vértices e arestas de um grafo.

Page 8: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

8/183

Busca em Grafos

● Definição– A busca em grafos (ou percurso em grafos) é a

examinação de vértices e arestas de um grafo.– O projeto de bons algoritmos para determinação de

estruturas ou propriedades de grafos depende fortemente do domínio dessas técnicas.

Page 9: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

9/183

Busca em Grafos

Page 10: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

10/183

Busca em Grafos

● Terminologia

Page 11: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

11/183

Busca em Grafos

● Terminologia– Uma aresta ou um vértice ainda não examinados

são marcados como não explorados ou não visitados.

Page 12: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

12/183

Busca em Grafos

● Terminologia– Uma aresta ou um vértice ainda não examinados

são marcados como não explorados ou não visitados.

– Inicialmente, todos os vértices e arestas são marcados como não explorados.

Page 13: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

13/183

Busca em Grafos

● Terminologia– Uma aresta ou um vértice ainda não examinados

são marcados como não explorados ou não visitados.

– Inicialmente, todos os vértices e arestas são marcados como não explorados.

– Após terem sido examinados, os mesmos são marcados como explorados ou visitados.

Page 14: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

14/183

Busca em Grafos

● Terminologia– Uma aresta ou um vértice ainda não examinados

são marcados como não explorados ou não visitados.

– Inicialmente, todos os vértices e arestas são marcados como não explorados.

– Após terem sido examinados, os mesmos são marcados como explorados ou visitados.

– Ao final, todos os vértices e arestas são marcados como explorados (no caso de uma busca completa).

Page 15: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

15/183

Busca Genérica

Page 16: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

16/183

Atravessando Labirintos

Page 17: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

17/183

Como escapar?

Page 18: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

18/183

Como escapar?

● Algoritmo de Trémaux (Século XIX)

Page 19: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

19/183

Como escapar?

● Algoritmo de Trémaux (Século XIX)– Pierre Trémaux

Page 20: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

20/183

Como escapar?

● Algoritmo de Trémaux (Século XIX)– Pierre Trémaux– Arquiteto francês, fotógrafo e orientalista.

Page 21: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

21/183

Como escapar?

● Algoritmo de Trémaux (Século XIX)– Pierre Trémaux– Arquiteto francês, fotógrafo e orientalista.– Autor de várias publicações científicas e

etnografias.

Page 22: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

22/183

Como escapar?

Page 23: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

23/183

Como escapar?

● Algoritmo

Page 24: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

24/183

Como escapar?

● Algoritmo– Inicialmente, uma direção aleatória é escolhida.

Page 25: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

25/183

Como escapar?

● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja,

nenhuma linha), escolha a direção aleatória e risque o caminho.

Page 26: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

26/183

Como escapar?

● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja,

nenhuma linha), escolha a direção aleatória e risque o caminho.

– Ao chegar em uma junção já marcada, vire-se e caminhe de volta, marcando o caminho pela segunda vez.

Page 27: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

27/183

Como escapar?

● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja,

nenhuma linha), escolha a direção aleatória e risque o caminho.

– Ao chegar em uma junção já marcada, vire-se e caminhe de volta, marcando o caminho pela segunda vez.

– Se este não for o caso, escolha o caminho com menos linhas e marque-o novamente.

Page 28: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

28/183

Como escapar?

● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja, nenhuma

linha), escolha a direção aleatória e risque o caminho.– Ao chegar em uma junção já marcada, vire-se e caminhe

de volta, marcando o caminho pela segunda vez.– Se este não for o caso, escolha o caminho com menos

linhas e marque-o novamente.– Quando finalmente chegar à saída do labirinto, os

caminhos marcados com apenas uma linha indicarão o caminho direto até o ponto inicial.

Page 29: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

29/183

Como escapar?

● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja, nenhuma

linha), escolha a direção aleatória e risque o caminho.– Ao chegar em uma junção já marcada, vire-se e caminhe de

volta, marcando o caminho pela segunda vez.– Se este não for o caso, escolha o caminho com menos linhas

e marque-o novamente.– Quando finalmente chegar à saída do labirinto, os caminhos

marcados com apenas uma linha indicarão o caminho direto até o ponto inicial.

– Se não houver saída, você voltará ao ponto inicial, no qual todos os caminhos possuem duas linhas.

Page 30: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

30/183

Atravessando Labirintos

Page 31: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

31/183

Atravessando Labirintos

Page 32: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

32/183

Atravessando Labirintos

Page 33: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

33/183

Atravessando Labirintos

Page 34: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

34/183

Atravessando Labirintos

Page 35: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

35/183

Atravessando Labirintos

Page 36: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

36/183

Atravessando Labirintos

● Ideia

Page 37: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

37/183

Atravessando Labirintos

● Ideia– Uma forma de encontrar a saída do labirinto sem

nunca percorrer mais de uma vez o mesmo caminho consiste em realizar uma busca no grafo de modo a nunca repetir arestas, marcando-as.

Page 38: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

38/183

Atravessando Labirintos

● Ideia– Uma forma de encontrar a saída do labirinto sem

nunca percorrer mais de uma vez o mesmo caminho consiste em realizar uma busca no grafo de modo a nunca repetir arestas, marcando-as.

– A busca se inicia no vértice que representa a entrada e termina no vértice que representa a saída.

Page 39: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

39/183

Atravessando Labirintos

Page 40: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

40/183

Atravessando Labirintos

Page 41: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

41/183

Atravessando Labirintos

Page 42: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

42/183

Busca em Grafos

Page 43: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

43/183

Busca em Grafos

Page 44: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

44/183

Busca em Grafos

● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.

Page 45: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

45/183

Busca em Grafos

● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.

● Basicamente, duas buscas completas em grafos são essenciais:

Page 46: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

46/183

Busca em Grafos

● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.

● Basicamente, duas buscas completas em grafos são essenciais:– Busca em profundidade (ou DFS – Depth-First

Search);

Page 47: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

47/183

Busca em Grafos

● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.

● Basicamente, duas buscas completas em grafos são essenciais:– Busca em profundidade (ou DFS – Depth-First

Search);– Busca em largura (ou BFS – Breadth-First Search).

Page 48: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

48/183

DFS versus BFS

Page 49: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

49/183

DFS versus BFS

Page 50: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

50/183

DFS versus BFS

Page 51: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

51/183

Busca em Profundidade (DFS)

Page 52: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

52/183

Busca em Profundidade (DFS)

● Características

Page 53: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

53/183

Busca em Profundidade (DFS)

● Características– A busca em profundidade visita todos os vértices

de um grafo, usando como critério os vizinhos do vértice visitado mais recentemente.

Page 54: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

54/183

Busca em Profundidade (DFS)

● Características– A busca em profundidade visita todos os vértices

de um grafo, usando como critério os vizinhos do vértice visitado mais recentemente.

– Principal característica:

Page 55: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

55/183

Busca em Profundidade (DFS)

● Características– A busca em profundidade visita todos os vértices

de um grafo, usando como critério os vizinhos do vértice visitado mais recentemente.

– Principal característica:● Utiliza uma pilha explícita ou recursividade para guiar

a busca.

Page 56: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

56/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 57: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

57/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 58: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

58/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 59: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

59/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 60: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

60/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 61: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

61/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 62: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

62/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 63: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

63/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 64: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

64/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 65: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

65/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 66: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

66/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 67: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

67/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 68: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

68/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 69: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

69/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 70: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

70/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 71: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

71/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 72: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

72/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 73: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

73/183

Busca em Profundidade (DFS)

● Exemplo de uso de pilha:

Page 74: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

74/183

Busca em Profundidade (DFS)

Page 75: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

75/183

Busca em Profundidade (DFS)

Page 76: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

76/183

Busca em Profundidade (DFS)

● Classificação de arestas

Page 77: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

77/183

Busca em Profundidade (DFS)

● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,

podemos categorizar as arestas:

Page 78: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

78/183

Busca em Profundidade (DFS)

● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,

podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do

algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.

Page 79: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

79/183

Busca em Profundidade (DFS)

● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,

podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do

algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.

● Arestas de retorno: demais arestas. Formam ciclos, pois levam a vértices já visitados.

Page 80: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

80/183

Busca em Profundidade (DFS)

● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,

podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do

algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.

● Arestas de retorno: demais arestas. Formam ciclos, pois levam a vértices já visitados.

– Árvore de profundidade

Page 81: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

81/183

Busca em Profundidade (DFS)

● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,

podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do

algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.

● Arestas de retorno: demais arestas. Formam ciclos, pois levam a vértices já visitados.

– Árvore de profundidade● A subárvore G formada pelas arestas de árvore é

chamada de Árvore de Profundidade G.

Page 82: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

82/183

DFS - Exemplo

Page 83: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

83/183

DFS - Exemplo

Page 84: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

84/183

DFS - Exemplo

Page 85: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

85/183

DFS - Exemplo

Page 86: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

86/183

DFS - Exemplo

Page 87: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

87/183

DFS - Exemplo

Page 88: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

88/183

DFS - Exemplo

Page 89: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

89/183

DFS - Exemplo

Page 90: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

90/183

DFS - Exemplo

Page 91: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

91/183

DFS - Exemplo

Page 92: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

92/183

DFS

Page 93: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

93/183

DFS

● Complexidade

Page 94: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

94/183

DFS

● Complexidade– Para cada vértice do grafo, a DFS percorre todos

os seus vizinhos.

Page 95: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

95/183

DFS

● Complexidade– Para cada vértice do grafo, a DFS percorre todos

os seus vizinhos.– Cada aresta é visitada duas vezes.

Page 96: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

96/183

DFS

● Complexidade– Para cada vértice do grafo, a DFS percorre todos

os seus vizinhos.– Cada aresta é visitada duas vezes.– Se apresentarmos o grafo por uma lista de

adjacências, a DFS tem complexidade O(|V| + |E|).

Page 97: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

97/183

DFS – Grafos Direcionados

Page 98: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

98/183

DFS – Grafos Direcionados

● A aplicação da DFS em grafos direcionados é essencialmente igual à aplicação em grafos não direcionados.

Page 99: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

99/183

DFS – Grafos Direcionados

● A aplicação da DFS em grafos direcionados é essencialmente igual à aplicação em grafos não direcionados.

● No entanto, mesmo o grafo direcionado sendo conexo, a DFS pode precisar ser chamada repetidas vezes enquanto houver vértices não visitados, retornando uma floresta.

Page 100: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

100/183

DFS – Grafos Direcionados

● A aplicação da DFS em grafos direcionados é essencialmente igual à aplicação em grafos não direcionados.

● No entanto, mesmo o grafo direcionado sendo conexo, a DFS pode precisar ser chamada repetidas vezes enquanto houver vértices não visitados, retornando uma floresta.

● Este é o mesmo caso quando a DFS é aplicada a um GND desconexo.

Page 101: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

101/183

Busca em Profundidade - Reinício

Page 102: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

102/183

Busca em Profundidade

Page 103: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

103/183

Busca em Profundidade

● Classificação de arestas

Page 104: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

104/183

Busca em Profundidade

● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,

podemos categorizar as arestas.

Page 105: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

105/183

Busca em Profundidade

● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,

podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o

destino da mesma:

Page 106: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

106/183

Busca em Profundidade

● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,

podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o

destino da mesma:● Arcos de avanço

Page 107: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

107/183

Busca em Profundidade

● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,

podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o

destino da mesma:● Arcos de avanço● Arcos de retorno

Page 108: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

108/183

Busca em Profundidade

● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,

podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o

destino da mesma:● Arcos de avanço● Arcos de retorno● Arcos de cruzamento

Page 109: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

109/183

Busca em Profundidade

Page 110: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

110/183

Busca em Profundidade

● Classificação de arestas

Page 111: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

111/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

Page 112: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

112/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

● Caso w seja descendente de v na floresta.

Page 113: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

113/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

● Caso w seja descendente de v na floresta.

– Arcos de retorno

Page 114: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

114/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

● Caso w seja descendente de v na floresta.

– Arcos de retorno● Caso v seja descendente de w na floresta.

Page 115: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

115/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

● Caso w seja descendente de v na floresta.

– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.

Page 116: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

116/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

● Caso w seja descendente de v na floresta.

– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.

– Arcos de cruzamento (cruzado)

Page 117: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

117/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

● Caso w seja descendente de v na floresta.

– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.

– Arcos de cruzamento (cruzado)● Caso w não seja descendente de v e v não seja

descendente de w.

Page 118: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

118/183

Busca em Profundidade

● Classificação de arestas– Arcos de avanço

● Caso w seja descendente de v na floresta.

– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.

– Arcos de cruzamento (cruzado)● Caso w não seja descendente de v e v não seja

descendente de w.● Ou, w é primo de v.

Page 119: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

119/183

Busca em Profundidade

Page 120: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

120/183

Busca em Profundidade

● Exemplo

Page 121: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

121/183

Busca em Profundidade

● Exemplo

Page 122: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

122/183

Busca em Profundidade

● ExemploArcos da floresta são vermelhos.

Page 123: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

123/183

Busca em Profundidade

● ExemploArcos da floresta são vermelhos.

Arcos de retorno são verdes.

Page 124: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

124/183

Busca em Profundidade

● ExemploArcos da floresta são vermelhos.

Arcos de retorno são verdes.

Arcos de avanço são roxos.

Page 125: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

125/183

Busca em Profundidade

● ExemploArcos da floresta são vermelhos.

Arcos de retorno são verdes.

Arcos de avanço são roxos.

Arcos cruzados são azuis.

Page 126: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

126/183

DFS - Exemplo

Page 127: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

127/183

DFS - Exemplo

Page 128: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

128/183

DFS - Exemplo

Page 129: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

129/183

DFS - Exemplo

Page 130: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

130/183

DFS - Exemplo

Page 131: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

131/183

DFS - Exemplo

Page 132: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

132/183

DFS - Exemplo

Page 133: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

133/183

DFS - Exemplo

Page 134: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

134/183

DFS - Exemplo

Page 135: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

135/183

DFS - Exemplo

Page 136: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

136/183

Exemplo

● https://www.cs.usfca.edu/~galles/visualization/DFS.html

Page 137: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

137/183

Busca em Largura

Page 138: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

138/183

Busca em Largura

Page 139: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

139/183

Busca em Largura

● Características

Page 140: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

140/183

Busca em Largura

● Características– A busca em largura visita todos os vértices de um

grafo, usando como critério o vértice visitado menos recentemente e cuja vizinhança ainda não foi explorada.

Page 141: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

141/183

Busca em Largura

● Características– A busca em largura visita todos os vértices de um

grafo, usando como critério o vértice visitado menos recentemente e cuja vizinhança ainda não foi explorada.

– Característica principal: utiliza uma fila para guiar a busca.

Page 142: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

142/183

Busca em Largura

Page 143: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

143/183

Busca em Largura

● Atuação em camadas

Page 144: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

144/183

Busca em Largura

● Atuação em camadas– Inicialmente são considerados os vértices com

distância 0 (zero) do vértice inicial.

Page 145: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

145/183

Busca em Largura

● Atuação em camadas– Inicialmente são considerados os vértices com

distância 0 (zero) do vértice inicial.– Na iteração 1 são visitados os vértices com

distância 1; prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.

Page 146: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

146/183

Busca em Largura

● Atuação em camadas– Inicialmente são considerados os vértices com

distância 0 (zero) do vértice inicial.– Na iteração 1 são visitados os vértices com

distância 1; prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.

– Cada novo vértice visitado é adicionado no final de uma fila Q.

Page 147: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

147/183

Busca em Largura

● Atuação em camadas– Inicialmente são considerados os vértices com

distância 0 (zero) do vértice inicial.– Na iteração 1 são visitados os vértices com

distância 1; prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.

– Cada novo vértice visitado é adicionado no final de uma fila Q.

– Cada vértice da fila é removido depois que toda a vizinhança for visitada.

Page 148: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

148/183

Busca em Largura

● Atuação em camadas– Inicialmente são considerados os vértices com distância 0

(zero) do vértice inicial.– Na iteração 1 são visitados os vértices com distância 1;

prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.

– Cada novo vértice visitado é adicionado no final de uma fila Q.

– Cada vértice da fila é removido depois que toda a vizinhança for visitada.

– Cada vértice da fila é removido depois que toda a vizinhança for visitada.

Page 149: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

149/183

Busca em Largura

● Atuação em camadas– Inicialmente são considerados os vértices com distância 0

(zero) do vértice inicial.– Na iteração 1 são visitados os vértices com distância 1;

prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.

– Cada novo vértice visitado é adicionado no final de uma fila Q.– Cada vértice da fila é removido depois que toda a vizinhança

for visitada.– Cada vértice da fila é removido depois que toda a vizinhança

for visitada.– A busca termina quando a fila se torna vazia.

Page 150: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

150/183

Busca em Largura - BFS

Page 151: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

151/183

Busca em Largura - BFS

Page 152: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

152/183

Busca em Largura - BFS

Page 153: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

153/183

Busca em Largura - BFS

Page 154: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

154/183

Busca em Largura - BFS

Page 155: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

155/183

Busca em Largura - BFS

Page 156: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

156/183

Busca em Largura - BFS

Page 157: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

157/183

Busca em Largura - BFS

Page 158: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

158/183

Busca em Largura - BFS

Page 159: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

159/183

Busca em Largura - BFS

Page 160: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

160/183

Busca em Largura - BFS

Page 161: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

161/183

Busca em Largura - BFS

Page 162: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

162/183

Busca em Largura - BFS

● Complexidade

Page 163: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

163/183

Busca em Largura - BFS

● Complexidade– Cada vértice só entra na fila uma vez.

Page 164: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

164/183

Busca em Largura - BFS

● Complexidade– Cada vértice só entra na fila uma vez.– Inserir e remover na fila possuem complexidade

constante, realizadas |V| vezes cada.

Page 165: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

165/183

Busca em Largura - BFS

● Complexidade– Cada vértice só entra na fila uma vez.– Inserir e remover na fila possuem complexidade

constante, realizadas |V| vezes cada.– A lista de adjacências de cada vértice é examinada

apenas uma vez, e a soma dos comprimentos de todas as listas é Ө(m).

Page 166: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

166/183

Busca em Largura - BFS

● Complexidade– Cada vértice só entra na fila uma vez.– Inserir e remover na fila possuem complexidade

constante, realizadas |V| vezes cada.– A lista de adjacências de cada vértice é examinada

apenas uma vez, e a soma dos comprimentos de todas as listas é Ө(m).

– Logo, se representarmos o grafo por uma lista de adjacências, a busca em largura (BFS) tem complexidade O(n+m).

Page 167: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

167/183

Exemplo

https://www.cs.usfca.edu/~galles/visualization/BFS.html

Page 168: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

168/183

DFS x BFS

Page 169: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

169/183

DFS x BFS

● DFS – Busca em Profundidade

Page 170: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

170/183

DFS x BFS

● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente

quando não existem mais vértices desconhecidos pela frente.

Page 171: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

171/183

DFS x BFS

● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente

quando não existem mais vértices desconhecidos pela frente.

– Marca o vértice antes de visitar toda sua vizinhança.

Page 172: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

172/183

DFS x BFS

● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente

quando não existem mais vértices desconhecidos pela frente.

– Marca o vértice antes de visitar toda sua vizinhança.

– Uso de pilha.

Page 173: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

173/183

DFS x BFS

● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente

quando não existem mais vértices desconhecidos pela frente.

– Marca o vértice antes de visitar toda sua vizinhança.

– Uso de pilha.● BFS – Busca em Largura

Page 174: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

174/183

DFS x BFS

● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente quando

não existem mais vértices desconhecidos pela frente.– Marca o vértice antes de visitar toda sua vizinhança.– Uso de pilha.

● BFS – Busca em Largura– Busca progride em largura: certifica-se de que vizinhos

próximos sejam visitados primeiramente.

Page 175: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

175/183

DFS x BFS

● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente quando

não existem mais vértices desconhecidos pela frente.– Marca o vértice antes de visitar toda sua vizinhança.– Uso de pilha.

● BFS – Busca em Largura– Busca progride em largura: certifica-se de que vizinhos

próximos sejam visitados primeiramente.– Marca o vértice depois de visitar toda a sua vizinhança.

Page 176: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

176/183

DFS x BFS

● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente quando não

existem mais vértices desconhecidos pela frente.– Marca o vértice antes de visitar toda sua vizinhança.– Uso de pilha.

● BFS – Busca em Largura– Busca progride em largura: certifica-se de que vizinhos

próximos sejam visitados primeiramente.– Marca o vértice depois de visitar toda a sua vizinhança.– Uso de fila.

Page 177: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

177/183

Aplicações

Page 178: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

178/183

Aplicações

● Detectar grafos desconectados.

Page 179: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

179/183

Aplicações

● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.

Page 180: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

180/183

Aplicações

● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.

Page 181: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

181/183

Aplicações

● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.● Classificar arestas.

Page 182: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

182/183

Aplicações

● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.● Classificar arestas.● Encontrar componentes fortemente conexas.

Page 183: Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca em Grafos Terminologia – Uma aresta ou um vértice ainda não examinados são

183/183

Aplicações

● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.● Classificar arestas.● Encontrar componentes fortemente conexas.● Determinar o menor caminho em grafos não

ponderados.