Você está na página 1de 7

Teoria dos Grafos

Busca em Grafos
Objetivo: sistematicamente explorar todos os vrtices Objetivo: sistematicamente explorar todos os vrtices e arestas de um grafo. e arestas de um grafo. Dois tipos de busca: Dois tipos de busca: Busca em amplitude (Breadth First Search BFS). Busca em amplitude (Breadth First Search BFS). Busca em profundidade (Depth First Search Busca em profundidade (Depth First Search DFS). DFS).

Busca em Grafos

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Busca em Amplitude (BFS)


Representa um dos mais simples algoritmos de busca em Representa um dos mais simples algoritmos de busca em grafos. grafos. usado como modelo para alguns algoritmos importantes: usado como modelo para alguns algoritmos importantes: Menor caminho. Menor caminho. rvore de cobertura mnima. rvore de cobertura mnima. Similar ao caminhamento por nveis em rvores. Similar ao caminhamento por nveis em rvores. Idia: processa os vrtices por nveis, comeando por aqueles Idia: processa os vrtices por nveis, comeando por aqueles vrtices mais prximos do vrtice inicial s e deixando os vrtices mais prximos do vrtice inicial s e deixando os vrtices mais distantes para depois. vrtices mais distantes para depois.

Busca em Amplitude (BFS)


O algoritmo BFS pode ser resumido nos seguintes passos: O algoritmo BFS pode ser resumido nos seguintes passos: 1. Distinguir o vrtice inicial s. 1. Distinguir o vrtice inicial s. 2. Sistematicamente explorar as arestas do grafo para 2. Sistematicamente explorar as arestas do grafo para descobrir todos os vrtices alcanveis a partir de s. descobrir todos os vrtices alcanveis a partir de s. 3. Computar a distncia (menor nmero de arestas) de s 3. Computar a distncia (menor nmero de arestas) de s para todos os vrtices alcanveis. para todos os vrtices alcanveis. 4. Produzir uma rvore de amplitude cuja raiz s e contm 4. Produzir uma rvore de amplitude cuja raiz s e contm todos os vrtices alcanveis. todos os vrtices alcanveis. 5. Para todo vrtice v alcanvel a partir de s, o caminho na 5. Para todo vrtice v alcanvel a partir de s, o caminho na rvore de amplitude corresponde ao menor caminho de s rvore de amplitude corresponde ao menor caminho de s para v no grafo. para v no grafo.

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Busca em Amplitude (BFS)


O algoritmo descobre todos os vrtices com distncia k a O algoritmo descobre todos os vrtices com distncia k a partir de s, antes de descobrir os vrtices com distncia k+1. partir de s, antes de descobrir os vrtices com distncia k+1. Para manter controle do processamento dos vrtices, o Para manter controle do processamento dos vrtices, o algoritmo utiliza um esquema de 3 cores: branco, cinza e algoritmo utiliza um esquema de 3 cores: branco, cinza e preto: preto: Todos os vrtices comeam com cor branca e depois Todos os vrtices comeam com cor branca e depois podem mudar para cinza e, posteriormente, para preto. podem mudar para cinza e, posteriormente, para preto. Quando um vrtice visitado a primeira vez ele deixa de Quando um vrtice visitado a primeira vez ele deixa de ser branco. ser branco. necessrio usar duas cores diferente do branco para necessrio usar duas cores diferente do branco para garantir a sistemtica da amplitude. garantir a sistemtica da amplitude.

Algoritmo BFS
Assumir que o grafo G = (V, E) representado com lista de Assumir que o grafo G = (V, E) representado com lista de adjacncias. adjacncias. Para cada vrtice no grafo, o algoritmo mantm estruturas Para cada vrtice no grafo, o algoritmo mantm estruturas auxiliares: auxiliares: A varivel cor[u] mantm a informao sobre a cor de A varivel cor[u] mantm a informao sobre a cor de cada vrtice. cada vrtice. A varivel [u] mantm a informao do predecessor de A varivel [u] mantm a informao do predecessor de cada vrtice. Quando no existe predecessor [u] = NIL. cada vrtice. Quando no existe predecessor [u] = NIL. d[u] mantm o valor da distncia entre o vrtice inicial e u. d[u] mantm o valor da distncia entre o vrtice inicial e u. Uma fila Q com poltica FIFO para gerenciar a lista de Uma fila Q com poltica FIFO para gerenciar a lista de vrtices de cor cinza. vrtices de cor cinza.

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Algoritmo BFS
BFS(G, s) for u V[G] {s} do cor[u] BRANCO d[u] [u] NIL cor[s] CINZA d[s] 0 [s] NIL Q {s} while Q do u Desenfileira[Q] for v Adj[u] do if cor[v] = BRANCO then cor[v] CINZA d[v] d[u] + 1 [v] u Enfileira(Q, v) cor[u] PRETO
Teoria dos Grafos Jorge Figueiredo, DSC/UFCG Teoria dos Grafos

Algoritmo BFS
BFS(G, s) for u V[G] {s} do cor[u] BRANCO d[u] [u] NIL cor[s] CINZA d[s] 0 [s] NIL Q {s} while Q do u Enfileira[Q] for v Adj[u] do if cor[v] = BRANCO then cor[v] CINZA d[v] d[u] + 1 [v] u Enfileira(Q, v) cor[u] PRETO

Inicia variveis auxiliares Para cada um dos vrtices, Com exceo da origem

Jorge Figueiredo, DSC/UFCG

Algoritmo BFS
BFS(G, s) for u V[G] {s} do cor[u] BRANCO d[u] [u] NIL cor[s] CINZA d[s] 0 [s] NIL Q {s} while Q do u Desenfileira[Q] for v Adj[u] do if cor[v] = BRANCO then cor[v] CINZA d[v] d[u] + 1 [v] u Enfileira(Q, v) cor[u] PRETO
Teoria dos Grafos

Algoritmo BFS
BFS(G, s) for u V[G] {s} do cor[u] BRANCO d[u] [u] NIL cor[s] CINZA d[s] 0 [s] NIL Q {s} while Q do u Desenfileira[Q] for v Adj[u] do if cor[v] = BRANCO then cor[v] CINZA d[v] d[u] + 1 [v] u Enfileira(Q, v) cor[u] PRETO
Teoria dos Grafos

Inicia variveis auxiliares da origem s e a fila Q

Se o vrtice adjacente branco, significa que ele nunca foi visitado. Deve ser pintado de CINZA e enfileirado para posterior processamento.

Jorge Figueiredo, DSC/UFCG

Jorge Figueiredo, DSC/UFCG

Algoritmo BFS
BFS(G, s) for u V[G] {s} do cor[u] BRANCO d[u] [u] NIL cor[s] CINZA d[s] 0 [s] NIL Q {s} while Q do u Desenfileira[Q] for v Adj[u] do if cor[v] = BRANCO then cor[v] CINZA d[v] d[u] + 1 [v] u Enfileira(Q, v) cor[u] PRETO
Teoria dos Grafos

Exemplo BFS
r s t u

Quando todos os adjacentes de u forem processados, ele passa a ser PRETO


Jorge Figueiredo, DSC/UFCG Teoria dos Grafos Jorge Figueiredo, DSC/UFCG

Exemplo BFS
r s t u r s

Exemplo BFS
t u

0
w

1
v

0 1
w

Q: s

Q: w

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo BFS
r s t u r s

Exemplo BFS
t u

1
v

0 1
w

2 2
x

1 2
v

0 1
w

2 2
x

Q: r

Q:

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo BFS
r s t u r s

Exemplo BFS
t u

1 2
v

0 1
w

2 2
x

3
y

1 2
v

0 1
w

2 2
x

3 3
y

Q: x

Q: v

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo BFS
r s t u r s

Exemplo BFS
t u

1 2
v

0 1
w

2 2
x

3 3
y

1 2
v

0 1
w

2 2
x

3 3
y

Q: u

Q: y

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo BFS
r s t u

Busca em Profundidade (DFS)


DFS uma generalizao do caminhamento em prDFS uma generalizao do caminhamento em prordem em rvores. ordem em rvores. A idia principal buscar verticalmente, sempre que A idia principal buscar verticalmente, sempre que possvel. possvel. Sempre que um novo vrtice v descoberto, ele deve Sempre que um novo vrtice v descoberto, ele deve ser explorado por completo. ser explorado por completo. Quando v totalmente explorado, fazer backtracking Quando v totalmente explorado, fazer backtracking para o seu predecessor. para o seu predecessor.

1 2
v

0 1
w

2 2
x

3 3
y

Q:

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Busca em Profundidade (DFS)


Alguns detalhes sobre o algoritmo de DFS: Alguns detalhes sobre o algoritmo de DFS: Sempre que um vrtice v descoberto, o valo de Sempre que um vrtice v descoberto, o valo de (predecessor) atualizado. (predecessor) atualizado. Pode ser formada uma floresta de rvores. Pode ser formada uma floresta de rvores. Cada vrtice v tem duas marcas de tempo d[v] e Cada vrtice v tem duas marcas de tempo d[v] e f[v] que indicam, respectivamente, quando v foi f[v] que indicam, respectivamente, quando v foi primeiramente visitado (cor CINZA) e quando v foi primeiramente visitado (cor CINZA) e quando v foi totalmente explorado (cor PRETO). totalmente explorado (cor PRETO).

Algoritmo DFS
DFS(G) for u V[G] do cor[u] BRANCO [u] NIL tempo 0 for u V[G] do if cor[u] = BRANCO then VisitaDFS(u) VisitaDFS(u) cor[u] CINZA d[u] tempo tempo + 1 for v Adj[u] do if cor[v] = BRANCO then [v] u VisitaDFS(v) cor[u] PRETO F[u] tempo tempo + 1
Teoria dos Grafos Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS
origem

Exemplo DFS

d 1 |

f | |

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS

Exemplo DFS

d 1 |

f | |

d 1 |

f | |

2 |

2 |

3 |

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS

Exemplo DFS

d 1 |

f | |

d 1 |

f | |

2 |

2 |

3 | 4

3 | 4

5 |

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS

Exemplo DFS

d 1 |

f | |

d 1 |

f 8 | |

2 |

2 | 7

3 | 4

5 | 6

3 | 4

5 | 6

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS

Exemplo DFS

d 1 |

f 8 | |

d 1 |

f 8 | |

2 | 7

9 |

2 | 7

9 |10

3 | 4

5 | 6

3 | 4

5 | 6

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS

Exemplo DFS

d 1 |

f 8 |11 |

f 8 |11 |

1 |12

2 | 7

9 |10

2 | 7

9 |10

3 | 4

5 | 6

3 | 4

5 | 6

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS

Exemplo DFS

f 8 |11 13|

f 8 |11 13|

1 |12

1 |12

2 | 7

9 |10

2 | 7

9 |10

3 | 4

5 | 6

3 | 4

5 | 6

14|

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Exemplo DFS

Exemplo DFS

f 8 |11 13|

f 8 |11 13|16

1 |12

1 |12

2 | 7

9 |10

2 | 7

9 |10

3 | 4

5 | 6

14|15

3 | 4

5 | 6

14|15

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Teoria dos Grafos

Jorge Figueiredo, DSC/UFCG

Você também pode gostar