Você está na página 1de 41

Inteligncia Artificial

Resoluo de problemas por


meio de busca
Captulo 3 Russell & Norvig
Sees 3.4 e 3.5
Formulao de problemas
Um problema definido por quatro itens:

1. Estado inicial ex., em Arad"
2. Aes ou funo sucessor S(x) = conjunto de pares ao-estado
ex., S(Arad) = {<Arad Zerind, Zerind>, }
3. Teste de objetivo, pode ser
explcito, ex., x = em Bucareste"
implcito, ex., Cheque-mate(x)

4. Custo de caminho (aditivo)
ex., soma das distncias, nmero de aes executadas, etc.
c(x,a,y) o custo do passo, que deve ser sempre 0

Uma soluo uma seqncia de aes que levam do estado inicial para
o estado objetivo.
Uma soluo tima uma soluo com o menor custo de caminho.
Algoritmo geral de busca em rvore
Estratgias de Busca
Sem Informao (ou Busca Cega)
Estratgias de busca sem informao usam apenas a
informao disponvel na definio do problema.
Apenas geram sucessores e verificam se o estado objetivo foi atingido.

As estratgias de busca sem informao se distinguem pela
ordem em que os ns so expandidos.
Busca em extenso (Breadth-first)
Busca de custo uniforme
Busca em profundidade (Depth-first)
Busca em profundidade limitada
Busca de aprofundamento iterativo
Estratgias de busca
Estratgias so avaliadas de acordo com os seguintes critrios:
completeza: o algoritmo sempre encontra a soluo se ela existe?
complexidade de tempo: nmero de ns gerados
complexidade de espao: nmero mximo de ns na memria
otimizao: a estratgia encontra a soluo tima?
Complexidade de tempo e espao so medidas em termos de:
b: mximo fator de ramificao da rvore (nmero mximo de
sucessores de qualquer n)
d: profundidade do n objetivo menos profundo
m: o comprimento mximo de qualquer caminho no espao de
estados (pode ser )
Busca em extenso
Expandir o n no-expandido mais perto da raiz.
Implementao:
a borda uma fila FIFO (first-in, first-out), isto , novos
itens entram no final.
Busca em extenso
Expandir o n no-expandido mais perto da raiz.
Implementao:
a borda uma fila FIFO (first-in, first-out), isto , novos
itens entram no final.
Busca em extenso
Expandir o n no-expandido mais perto da raiz.
Implementao:
a borda uma fila FIFO (first-in, first-out), isto , novos
itens entram no final.
Busca em extenso
Expandir o n no-expandido mais perto da raiz.
Implementao:
a borda uma fila FIFO (first-in, first-out), isto , novos
itens entram no final.
Propriedades da
busca em extenso
Completa? Sim (se b finito)
Tempo? 1+b+b
2
+b
3
+ +b
d
+ b(b
d
-1) = O(b
d+1
)
Espao? O(b
d+1
) (mantm todos os ns na memria)
tima? Sim (se todas as aes tiverem o mesmo
custo)
Requisitos de Tempo e Memria para a
Busca em Extenso
Busca com fator de ramificao b=10.
Supondo que 10.000 ns possam ser gerados por segundo e
que um n exige 1KB de espao.
Profundidade Ns Tempo Memria
2 1100 0.11 segundo 1 megabyte
4 111.100 11 segundos 106 megabytes
6 10
7
19 minutos 10 gigabytes
8 10
9
31 horas 1 terabyte
10 10
11
129 dias 101 terabytes
12 10
13
35 anos 10 petabytes
14 10
15
3.523 anos 1 exabyte
Busca de custo uniforme
Expande o n no-expandido que tenha o caminho de custo mais
baixo.
Implementao:
borda = fila ordenada pelo custo do caminho
Equivalente a busca em extenso se os custos so todos iguais
Completa? Sim, se o custo de cada passo
Tempo? # de ns com g custo da soluo tima, O(b
C*/
) onde
C
*
o custo da soluo tima
Espao? de ns com g custo da soluo tima, O(b
C*/
)
tima? Sim pois os ns so expandidos em ordem crescente de
custo total.
Exerccio
Aplicar busca de custo uniforme para achar o
caminho mais curto entre Arad e Bucareste.
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade
Expande o n no-expandido mais profundo.
Implementao:
borda = fila LIFO (last-in, first-out) = pilha
Propriedades da
Busca em Profundidade
Completa? No: falha em espaos com profundidade
infinita, espaos com loops
Se modificada para evitar estados repetidos completa
para espaos finitos
Tempo? O(b
m
): pssimo quando m muito maior
que d.
mas se h muitas solues pode ser mais eficiente que a
busca em extenso
Espao? O(bm), i.e., espao linear!
118 kilobytes ao invs de 10 petabytes para busca com
b=10, d=m=12
tima? No
Busca em Profundidade Limitada
= busca em profundidade com limite de profundidade l,
isto , ns com profundidade l no tem sucessores

Implementao Recursiva:
Propriedades da
Busca em Profundidade Limitada
Completa? No; a soluo pode estar alm do
limite.
Tempo? O(b
l
)
Espao? O(bl)
tima? No
Busca de Aprofundamento Iterativo
em Profundidade
Busca de Aprofundamento Iterativo
em Profundidade l =0
Busca de Aprofundamento Iterativo
em Profundidade l =1
Busca de Aprofundamento Iterativo
em Profundidade l =2
Busca de Aprofundamento Iterativo
em Profundidade l =3
Busca de Aprofundamento Iterativo
Nmero de ns gerados em uma busca de extenso com fator de
ramificao b:
N
BE
= b
1
+ b
2
+ + b
d-2
+ b
d-1
+ b
d
+ (b
d+1
b)

Nmero de ns gerados em uma busca de aprofundamento iterativo at a
profundidade d com fator de ramificao b:
N
BAI
= (d+1)b
0
+ d b
1
+ (d-1)b
2
+ + 3b
d-2
+2b
d-1
+ 1b
d


Para b = 10, d = 5,
N
BE
= 10 + 100 + 1.000 + 10.000 + 100.000 + 999.990= 1.111.100

N
BAI
= 6 + 50 + 400 + 3.000 + 20.000 + 100.000 = 123.456


Overhead = (123.456 111.111)/111.111 = 11%
Propriedades da busca de
aprofundamento iterativo
Completa? Sim
Tempo? (d+1)b
0
+ d b
1
+ (d-1)b
2
+ + b
d
=
O(b
d
)
Espao? O(bd)
tima? Sim, se custo de passo = 1
Resumo dos algoritmos
Estados repetidos
O processo de busca pode perder tempo
expandindo ns j explorados antes
Estados repetidos podem levar a loops infinitos
Estados repetidos podem transformar um
problema linear em um problema exponencial
Estados Repetidos
No detectar estados repetidos pode
transformar um problema linear em um
problema exponencial.
Deteco de estados repetidos
Comparar os ns prestes a serem expandidos com ns j
visitados.
Se o n j tiver sido visitado, ser descartado.
Lista closed (fechado) armazena ns j visitados.
Busca em profundidade e busca de aprofundamento iterativo no tem
mais espao linear.
A busca percorre um grafo e no uma rvore.
Resumo
A formulao de problemas usualmente requer a abstrao
de detalhes do mundo real para que seja definido um espao
de estados que possa ser explorado atravs de algoritmos de
busca.

H uma variedade de estratgias de busca sem informao
(ou busca cega).

A busca de aprofundamento iterativo usa somente espao
linear e no muito mais tempo que outros algoritmos sem
informao.

Você também pode gostar