Вы находитесь на странице: 1из 0

1

Inteligncia Artificial
Prof. Rafael Stubs Parpinelli
DCC / UDESC-J oinville
parpinelli@joinville.udesc.br
www.joinville.udesc.br/portal/professores/parpinelli
www2.joinville.udesc.br/~coca/
Busca Exaustiva ou
Busca Cega
Estratgias
1. Busca em largura/amplitude
2. Busca de custo uniforme
3. Busca em profundidade
4. Busca em profundidade limitada
5. Busca com aprofundamento iterativo
Busca bidirecional
Busca para satisfao de restries
Busca em Largura
(breadth-first search)
Constre uma rvore de estados a partir do
estado inicial, aplicando, a cada momento,
todas as regras possveis aos estados do
nvel mais baixo, gerando todos os estados
sucessores de cada um destes estados.
Assim, cada nvel da rvore
completamente construdo antes de que
qualquer nodo do prximo nvel seja
adicionado rvore.
Busca em Largura
Ordem de expanso dos ns:
1. N raiz
2. Todos os ns de profundidade 1
3. Todos os ns de profundidade 2, etc
Algoritmo:
algoritmo buscaEmLargura (R,E,e
0
,F)
1. open := [e
0
]; {open contm a lista de ns a serem visitados}
2. enquanto no Vazia(open) faa
2.1 e:=obtemPrimiroElemento(open);
2.2 open:=RetiraPrimeiroElemento(open);
2.3 Para toda r
i
R tal que r
i
(e)E faa {Determina todos os sucessores de e}
2.3.1 e:=r
i
(e); {e os coloca em open }
2.3.2 Se eF
ento retorne e; {e um n final}
2.3.3 open:=append(open,e); {insere e no final de open}
fim_para;
fim_enquanto;
se Vazio(open) ento
imprima( No h soluo );
fim {busca em largura}
Busca em Largura
Algoritmo:
Busca em Largura (ou Amplitude)
Caractersticas: Completa e tima
! Se existe soluo, esta ser
encontrada;
! A soluo encontrada primeiro ser a
de menor profundidade.
Busca em Largura
2
Open (0,0)
(0,3) (4,0)
r2 r1
Open
(3,0) (0,0) (4,3)
r6 r4 r1
(4,3) (0,0) (1,3)
r2 r3 r5
Open
r2 r2 r1
r1
r3
(4,0) (0,3) (4,0) (4,3) (0,3) (4,0) (1,0) (0,3) (4,0) (0,3) (4,0) (4,0) (3,3) (0,3) (0,0)
r3
r3 r3 r1 r2 r4
r4
r4 r6
r1 r5
Open (0,3)
Faa a rvore de busca em largura para
o problema das jarras at o terceiro
nvel.
Problema: Repetio de Estados!
Busca em Largura sem
Repetio de Estados
Algoritmo:
algoritmo buscaEmAmplitudeSemRepetioDeEstados (R,E,e
0
,F)
1. open := [e
0
];
2. closed :=; {lista de ns visitados}
3. enquanto no Vazia(open) faa
3.1 e:=ObtemPrimeiroElemento(open);
3.2 open:=RetiraPrimeiroElemento(open);
3.3 closed := append(closed,e);
3.4 Para toda r
i
R tal que r
i
(e)E faa
3.4.1 e:=r
i
(e);
3.4.2 Se eF ento retorne e;
3.4.3 Se (e closed) (e open) ento open:=append(open,e);
fim_para;
fim_enquanto;
se Vazio(open) ento
imprima( No h soluo );
fim {busca em aplitude sem repetio de ns}
Busca em Largura sem
Repetio de Estados
A ltima rvore do exemplo anterior ficaria
assim:
Continue a construo a rvore de busca
em extenso para este problema at
encontrar um estado final.
(0,0)
(0,3) (4,0)
r2 r1
r2 r5
(4,3) (1,3) (3,0)
r6
r2
(1,0) (3,3)
r4
Open
Evitar Gerao de Estados Repetidos
Problema geral em busca
expandir estados presentes em caminhos j explorados
inevitvel quando existe operadores
reversveis
Ex: encontrar rotas; a rvore de busca potencialmente
infinita
Idia
podar (prune) estados repetidos, para gerar apenas a
parte da rvore que corresponde ao grafo do espao de
estados (que finito!)
mesmo quando esta rvore finita...evitar estados
repetidos pode reduzir exponencialmente o custo da
busca
Evitar Gerao de Estados Repetidos
1. No retornar ao estado pai
funo que rejeita gerao de sucessor igual ao pai
2. No criar caminhos com ciclos
no gerar sucessores para qualquer estado que j
apareceu no caminho sendo expandido
3. No gerar qualquer estado que j tenha
sido criado antes (em qualquer ramo)
requer que todos os estados gerados permaneam na
memria
custo de memria
Busca de Custo Uniforme
Modifica a busca em largura:
expande o n da fronteira com menor custo de caminho
cada operador pode ter um custo associado diferente,
medido pela funo g(n), para o n n.
Na busca em largura: g(n) = profundidade (n)
Busca de custo uniforme:
ordem de expanso dos ns:
1. n raiz
2. n de profundidade 1 com menor custo
3. segundo n de profundidade 1 com menor custo, etc.
3
Busca de Custo Uniforme
Busca em Profundidade
(deapth-first search)
Procurar explorar completamente cada ramo
da rvore antes de tentar o ramo vizinho.
Ordem de expanso dos ns: Sempre
expande o n no nvel mais profundo da rvore
1. N raiz
2. Primeiro n de profundidade 1
3. Primeiro n de profundidade 2, etc
Quando um n final no soluo, o algoritmo
volta para expandir ns mais superficiais.
Busca em Profundidade
Busca em Profundidade
Algoritmo:
algoritmo buscaEmProfundidadeDeEstados (R,E,e
0
,F) {Sem repetio de ns}
1. open := [e
0
];
2. closed :=; {lista de ns visitados}
3. enquanto no Vazia(open) faa
3.1 e:=ObtemPrimeiroElemento(open);
3.2 open:=RetiraPrimeiroElemento(open);
3.3 closed := append(closed,e);
3.4 Para toda r
i
R tal que r
i
(e)E faa:
3.4.1 e:=r
i
(e);
3.4.2 Se eF ento retorne e;
3.4.3 Se (e closed) (e open) ento open:=append(e, open);
fim_para;
fim_enquanto;
se Vazio(open) ento
imprima( No h soluo );
fim {busca em profundidade}
Faa a rvore de busca em
profundidade para o problema das
jarras at encontrar uma soluo.
(0,0)
(0,3) (4,0)
r2 r1
r2 r5
(4,3) (1,3)
r4
(1,0)
(0,1)
r5
Busca em Profundidade
Caractersticas: No Completa e No tima.
Se admitir estados repetidos ou um nvel mximo de
profundidade, pode nunca encontrar a soluo.
A soluo encontrada primeiro poder no ser a de menor
profundidade.
Esta estratgia deve ser evitada quando as rvores
geradas so muito profundas ou geram caminhos infinitos.
Para problemas com vrias solues, esta estratgia
pode ser bem mais rpida do que busca em largura.
4
Busca com Profundidade
Limitada
Busca em profundidade modificada
evita o problema de caminhos muito longos ou
infinitos impondo um limite mximo de
profundidade para os caminhos gerados
No tima (=busca em profundidade)
Problema
difcil de prever um bom limite de
profundidade antes de resolver o problema,
antes de buscar
Busca com Aprofundamento
Iterativo
Busca com profundidade limitada modificada.
Esta estratgia tenta limites com valores
crescentes, partindo de zero, at encontrar a
primeira soluo
fixa profundidade =i, executa busca
se no chegou a um objetivo, recomea busca com
profundidade =i + n (n qualquer)
Igual Busca em Largura para i=1 e n=1
Combina as vantagens de busca em largura com
busca em profundidade.
Busca com Aprofundamento
Iterativo
tima e completa.
Bons resultados quando o espao de estados grande e de
profundidade desconhecida.
Busca Bidirecional
Busca em duas direes:
para frente, a partir do n inicial, e
para trs, a partir do n final (objetivo)
A busca pra quando os dois processos geram um
mesmo estado intermedirio.
possvel utilizar estratgias diferentes (largura,
profundidade, etc.) em cada direo da busca.
Busca Bidirecional
Existem muitos estados finais (objeti vos) no problema
conjunto especfico de estados finais
aplica-se a funo predecessor ao conjunto de
estados
descrio desse conjunto (propriedade abstrata)
e.g., como determinar exatamente todos os estados
que precedem um estado de xeque-mate?
Necessita-se de operadores reversiveis
Pode ser caro verificar se cada novo estado gerado
aparece na outra metade do espao de estados
necessrio evitar a gerao de estados repetidos

Вам также может понравиться