Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Busca em grafos
Problemas de busca so Ni
frequentemente descritos
utilizando diagramas de rvores
N inicial = onde a busca comea
N objetivo = onde ela termina (Fig 1)
Objetivo: Encontrar um caminho
que ligue o n inicial a um n
objetivo No
Fig 1
Busca em uma rvore
Entrada:
Descrio dos ns inicial e objetivo
Procedimento que produz os sucessores de um n
arbitrrio
Sada:
Sequncia legal de ns iniciando com o n inicial e
terminando com o n objetivo
Exemplos: encontrar o menor caminho entre S e G
no mapa a seguir.
Exemplo
A D
B D A E
C E E B B F
D F B F C E A C G
G C G F
Denota o caminho S-D-A-B-E-
F G
O problema TSP
D
8hrs
A
9hrs
C
5hrs 6hrs
O problema TSP
O problema do TSP
representado como
A
rvore de busca
C D
B
C D D C
B B
D C D
B C B
Exemplo: palavras cruzadas
Fig 2
Uma rvore de busca
Estado
inicial
Estado
objetivo
Estado
inicial
Estado
final
Tipos de busca (cont)
Busca em largura envolve escolher um
caminho e segui-lo at o prximo ponto de
deciso ou at o objetivo ser atingido:
Estado
Inicial
Estado
Final
Problemas da busca
Com o aumento da rvore de deciso e do
nmero de possveis caminhos, o tempo de
busca aumenta
Existem vrias formas de reduzir o tempo de
busca (busca heurstica ou informada)
Possveis situaes
Mais de um n objetivo
Mais de um n inicial
Nestas situaes
Encontrar qualquer caminho de um n inicial para
um n objetivo
Encontrar melhor caminho
Definies importantes
Profundidade: nmero de ligaes entre um
dado n e o n inicial
Largura: nmero de sucessores (filhos) de um
n
Algoritmo bsico de busca (rvore)
1 Definir um conjunto L de ns iniciais;
2 Se L vazio
Ento Busca no foi bem sucedida
Seno Escolher um n n de L;
3 Se n um n objetivo
Ento Retornar caminho do n inicial at n;
Parar
Seno Remover n de L;
Adicionar a L todos os filhos de n, rotulando
cada um com o seu caminho at o n inicial;
Voltar ao passo 2
Algoritmos de Busca
Existem vrios algoritmos de busca
diferentes, o que os distingue a maneira
como o n n escolhido no passo 2
Mtodos de busca
Busca cega: a escolha depende da posio do n
na rvore de busca
Busca heurstica: A escolha utiliza informaes
especficas do domnio para ajudar na deciso
Busca cega
2 9 15 d=1
3 8 10 13 16 17 d=2
4 11 12 14 18 d=3
5 6 7 d=4
Algoritmo BL
1 Definir um conjunto L de ns iniciais
2 Seja n o primeiro n de L;
Se L vazio
Ento Busca no foi bem sucedida
3 Se n um n objetivo
Ento Retornar caminho do n inicial at n;
Parar
Seno Remover n de L;
Adicionar ao final de L todos os filhos de n,
rotulando
cada um com o seu caminho at o n inicial;
Voltar ao passo 2;
Busca em largura
d=0
1
2 3 4 d=1
5 6 7 8 9 10 d=2
d=3
11 12 13 14 15
d=4
Exemplo 1: Dada a rvore abaixo, utilizando BP,
indique: a) Memria mxima e b) Nmero mnimo
de passos necessrios para atingir um dos ns
objetivos
d=0
1
2 3 4 d=1
5 6 7 8 9 10 d=2
d=3
11 12 13 14 15 16 17
d=4
18 19 20 20 21
Resposta ao exemplo 1
a) 1 L = {1}
2 L = {21, 31,41}
3 L = {521,621,31,41}
4 L = {11521, 621,31,41}
5 L = {1811521, 1911521, 2011521 621,31,41}
6 L = {1911521, 2011521 621,31,41}
7 L = {2011521, 621,31,41}
8 L = {621,31,41}
9 L = {31,41}
....
18 L = {151041,161041,171041}
Observaes
Quanto ao tempo
BP geralmente mais rpida
Mtodos de busca cega no examinam a rvore de
forma tima, o que poderia minimizar o tempo
gasto para resolver o problema
Tcnicas exaustivas de busca
Percorrendo um Grafo
31
Eficincia
Percorrendo um Grafo
Eficincia
32
Correo
Percorrendo um Grafo
Correo
33
Soluo
Percorrendo um Grafo
Soluo
no visitados
visitados
processados
34
Soluo
Percorrendo um Grafo
Soluo
35
Busca em Largura BFS
Percorrendo um Grafo
36
BFS
37
BFS (G,s)
for each vertex u V[G] {s} do
color[u] = WHITE
d[u] = INF
p[u] = NIL
end-for
color[s]= GRAY, d[s] = 0, p[s] = NIL
initialize(Q)
enqueue(Q,s)
while (not empty(Q)) do
u = dequeue[Q]
processe o vrtice u conforme desejado
for each v Adj[u] do
processe a aresta (u,v) conforme desejado
if color[v] = WHITE then
color[v] = GRAY
d[v] = d[u] + 1
p[v] = u
enqueue(Q,v)
end-if
end-for
color[u] = BLACK
end-while 38
BFS exemplo
2
3
6 5
39
BFS Tree
2 6
5
3 4
40
Complexidade do BFS
O(|V | + |E|), ou seja, linear em relao ao tamanho da
representao de G por lista de adjacncias:
Inicializao O(|V|)
41
Busca em Profundidade DFS
Percorrendo um Grafo
42
DFS
{ Percorre um grafo G. Pode realizar processa-
mento medida que visita vrtices e arestas }
DFS-graph (G)
for each vertex u V[G] do
color[u] = WHITE
p[u] = NIL
end-for
time = 0
for each vertex u V[G] do
if color[u] = WHITE then
inicialize um novo componente
DFS-visit(u)
end-if
end-for
43
DFS
DFS-visit(u)
color[u] = GRAY
time = time + 1
d[u] = time
processe o vrtice u conforme desejado
for each v Adj[u] do
processe a aresta (u,v) conforme desejado
if color[v] = WHITE then
p[v] = u
DFS-visit(v)
end-if
end-for
color[u] = BLACK
f[u] = time = time + 1
44
DFS
2
3
6 5
45
DFS Tree
Percorrendo um Grafo: DFS Tree
1
2 6
46
Complexidade do DFS
O(|V| + |E|)
47
DFS
49
Caminhos mais curtos
Em grafos no-orientados e no-valorados o
algoritmo BFS(u) produz uma rvore de
caminhos mais curtos entre u (origem) e
todos os demais vrtices do grafo
alcanveis a partir dele.
Imprimir_caminho_mais_curto(origem, v:tipoVrtice)
Se origem = v escreve (origem)
seno
Imprimir_caminho_mais_curto(origem, antecessor(v))
escreve(v)
fim se
Fim Imprimir_caminho_mais_curto
51