Você está na página 1de 7

Resoluo de problemas por

Inteligncia Artificial
meio de busca
Aula 4 Captulo 3 Russell & Norvig
Prof Bianca Zadrozny Sees 3.4 e 3.5
http://www.ic.uff.br/~bianca/ia

Formulao de problemas Algoritmo geral de busca em rvore


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.

Estratgias de Busca
Estratgias de busca
Sem Informao (ou Busca Cega)
Estratgias so avaliadas de acordo com os seguintes
Estratgias de busca sem informao usam apenas a critrios:
informao disponvel na definio do problema. completeza: o algoritmo sempre encontra a soluo se ela
Apenas geram sucessores e verificam se o estado objetivo foi existe?
atingido. complexidade de tempo: nmero de ns gerados
complexidade de espao: nmero mximo de ns na memria
As estratgias de busca sem informao se distinguem otimizao: a estratgia encontra a soluo tima?
pela ordem em que os ns so expandidos. Complexidade de tempo e espao so medidas em
Busca em extenso (Breadth-first) termos de:
Busca de custo uniforme b: mximo fator de ramificao da rvore (nmero mximo de
Busca em profundidade (Depth-first) sucessores de qualquer n)
Busca em profundidade limitada d: profundidade do n objetivo menos profundo
Busca de aprofundamento iterativo m: o comprimento mximo de qualquer caminho no espao de
estados (pode ser )
Busca em extenso Busca em extenso
Expandir o n no-expandido mais perto da raiz. Expandir o n no-expandido mais perto da raiz.
Implementao: Implementao:
a borda uma fila FIFO (first-in, first-out), isto , a borda uma fila FIFO (first-in, first-out), isto ,
novos itens entram no final. novos itens entram no final.

Busca em extenso Busca em extenso


Expandir o n no-expandido mais perto da raiz. Expandir o n no-expandido mais perto da raiz.
Implementao: Implementao:
a borda uma fila FIFO (first-in, first-out), isto , a borda uma fila FIFO (first-in, first-out), isto ,
novos itens entram no final. novos itens entram no final.

Propriedades da Requisitos de Tempo e Memria


busca em extenso para a Busca em Extenso
Completa? Sim (se b finito) Busca com fator de ramificao b=10.
Tempo? 1+b+b2+b3+ +bd + b(bd-1) = O(bd+1) Supondo que 10.000 ns possam ser gerados por
segundo e que um n exige 1KB de espao.
Espao? O(bd+1) (mantm todos os ns na
memria) Profundidade Ns Tempo Memria
tima? Sim (se todas as aes tiverem o 2 1100 0.11 segundo 1 megabyte
mesmo custo) 4 111.100 11 segundos 106 megabytes
6 107 19 minutos 10 gigabytes
8 109 31 horas 1 terabyte
10 1011 129 dias 101 terabytes
12 1013 35 anos 10 petabytes
14 1015 3.523 anos 1 exabyte
Busca de custo uniforme Exerccio
Aplicar busca de custo uniforme para achar o
Expande o n no-expandido que tenha o caminho de
custo mais baixo. caminho mais curto entre Arad e Bucareste.
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(bC*/ )
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.

Busca em Profundidade Busca em Profundidade


Expande o n no-expandido mais profundo. Expande o n no-expandido mais profundo.
Implementao: Implementao:
borda = fila LIFO (last-in, first-out) = pilha borda = fila LIFO (last-in, first-out) = pilha

Busca em Profundidade Busca em Profundidade


Expande o n no-expandido mais profundo. Expande o n no-expandido mais profundo.
Implementao: Implementao:
borda = fila LIFO (last-in, first-out) = pilha borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade Busca em Profundidade
Expande o n no-expandido mais profundo. Expande o n no-expandido mais profundo.
Implementao: Implementao:
borda = fila LIFO (last-in, first-out) = pilha borda = fila LIFO (last-in, first-out) = pilha

Busca em Profundidade Busca em Profundidade


Expande o n no-expandido mais profundo. Expande o n no-expandido mais profundo.
Implementao: Implementao:
borda = fila LIFO (last-in, first-out) = pilha borda = fila LIFO (last-in, first-out) = pilha

Busca em Profundidade Busca em Profundidade


Expande o n no-expandido mais profundo. Expande o n no-expandido mais profundo.
Implementao: Implementao:
borda = fila LIFO (last-in, first-out) = pilha borda = fila LIFO (last-in, first-out) = pilha
Busca em Profundidade Busca em Profundidade
Expande o n no-expandido mais profundo. Expande o n no-expandido mais profundo.
Implementao: Implementao:
borda = fila LIFO (last-in, first-out) = pilha borda = fila LIFO (last-in, first-out) = pilha

Propriedades da
Busca em Profundidade Limitada
Busca em Profundidade
Completa? No: falha em espaos com = busca em profundidade com limite de profundidade l,
profundidade infinita, espaos com loops isto , ns com profundidade l no tem sucessores
Se modificada para evitar estados repetidos
completa para espaos finitos
Implementao Recursiva:
Tempo? O(bm): 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

Propriedades da Busca de Aprofundamento Iterativo


Busca em Profundidade Limitada em Profundidade
Completa? No; a soluo pode estar
alm do limite.
Tempo? O(bl)
Espao? O(bl)
tima? No
Busca de Aprofundamento Iterativo Busca de Aprofundamento Iterativo
em Profundidade l =0 em Profundidade l =1

Busca de Aprofundamento Iterativo Busca de Aprofundamento Iterativo


em Profundidade l =2 em Profundidade l =3

Propriedades da busca de
Busca de Aprofundamento Iterativo
aprofundamento iterativo
Nmero de ns gerados em uma busca de extenso com fator de
ramificao b: Completa? Sim
NBE = b1 + b2 + + bd-2 + bd-1 + bd + (bd+1 b)
Tempo? (d+1)b0 + d b1 + (d-1)b2 + + bd
Nmero de ns gerados em uma busca de aprofundamento iterativo = O(bd)
at a profundidade d com fator de ramificao b:
NBAI = (d+1)b0 + d b1 + (d-1)b2 + + 3bd-2 +2bd-1 + 1bd
Espao? O(bd)
Para b = 10, d = 5,
NBE = 10 + 100 + 1.000 + 10.000 + 100.000 + 999.990= 1.111.100
tima? Sim, se custo de passo = 1
NBAI = 6 + 50 + 400 + 3.000 + 20.000 + 100.000 = 123.456

Overhead = (123.456 111.111)/111.111 = 11%


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 Deteco de estados repetidos


Comparar os ns prestes a serem expandidos com ns
No detectar estados repetidos pode j visitados.
Se o n j tiver sido visitado, ser descartado.
transformar um problema linear em um Lista closed (fechado) armazena ns j visitados.
problema exponencial. 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.