Agentes Resolvedores de problemas II. SI 20052 Tipos de Busca Desinformada Busca em Largura (ou...
Transcript of Agentes Resolvedores de problemas II. SI 20052 Tipos de Busca Desinformada Busca em Largura (ou...
Agentes Resolvedores de problemas II
SI 2005 2
Tipos de Busca Desinformada Busca em Largura (ou extensão)
Busca por Custo Uniforme
Busca em Profundidade
Busca em Profundidade Limitada
Busca em Profundidade Interativa
Busca Bidirecional
SI 2005 3
Busca em Largura Expande os nós mais rasos ainda não expandidos Todos os nós de profundidade d são expandidos antes dos
nós de profundidade d+1 Fila: coloca os nós gerados no fim da fila (FIFO)
SI 2005 4
Busca em Largura Completude: Sim encontra o mais raso, se o fator de
ramificação b é finito
Otimalidade: Sim, se o custo do caminho for uma função não decrescente da profundidade do nó. Caso contrário não é ótima.
Custo de Tempo: 1 + b + b2 + b3 + ... + bd = exponencial em d
Custo de Memória: O(bd) – guarda todos os nós na memória
Grande quantidade de espaço e tempo exigida. Pode facilmente gerar 1MB de nós que devem ser guardados.
SI 2005 5
Analisando a busca em largura Para um fator de ramificação b=10, e supondo que 1000 nós
podem ser gerados por segundo, temos:
profundidade nós tempo memória2 1100 0,11 seg 1 MB4 111.100 11 seg 106 MB6 107 19 min 10 GB8 109 31 horas 1 TeraB10 101 129 dias 101 TeraB12 1013 35 anos 10 PentaB14 1015 3.523 anos 1 exaB
Requisitos de memória são problemas maiores do que o tempo de execução
Problemas de busca de complexidade exponencial não podem ser resolvidos por métodos sem informação (exceto os menores)
SI 2005 6
Exercício Resolva o problema do mapa por busca em largura. Defina estados, a função sucessor, o teste de objetivo e o
custo do caminho.
SI 2005 7
Busca por Custo Uniforme Expande o nó de menor custo ainda não expandidos (pelo
custo do caminho – g(n)) Se comporta como a busca em largura com g(n)=constante Encontra a solução mais barata porque os nós mais baratos
são expandidos primeiro Fila: insere os nós gerados em ordem crescente pelo custo do
caminho
S
A
C
B G
1 10
15 5
5 5
S
G11
G10
A C1 5 15
B
Fila/custo/fechado
A(1)
B(5)
C(15)
A(1) x
B(5)
G(11)
C(15)
A(1) x
B(5) x
G(10)
G(11)
C(15)
A(1) x
B(5) x
G(10) x
G(11)
C(15)
SI 2005 8
Busca por Custo Uniforme Completude: Sim, se nenhum operador tiver custo negativo
Custo Tempo: quantidade de nós com g <= custo da solução ótima
Custo Memória: quantidade de nós com g <= custo da solução ótima
Otimalidade: Sim.
Espaço e tempo continuam sendo um problema pode se muito maior que bd.
SI 2005 9
Exercícios Resolva o problema do mapa através de busca por custo
uniforme. Defina estados, a função sucessor, o teste de objetivo e o
custo do caminho.
SI 2005 10
Busca em profundidade Expande o nó mais profundo ainda não expandido Quando encontra um nó que não pode ser expandido, volta
para expandir os outros dos níveis mais rasos Os nós que foram expandidos e não tem descendentes na
borda podem ser tirados da memória Fila: insere o nó gerado no inicio da fila (LIFO - pilha)
SI 2005 11
Busca em profundidade
SI 2005 12
Busca em profundidade
SI 2005 13
Busca em profundidade
SI 2005 14
Busca em profundidade
SI 2005 15
Busca em profundidade
SI 2005 16
Busca em profundidade
SI 2005 17
Busca em profundidade
SI 2005 18
Busca em profundidade
SI 2005 19
Busca em profundidade
SI 2005 20
Busca em profundidade
SI 2005 21
Busca em profundidade
SI 2005 22
Busca em profundidade
SI 2005 23
Busca em profundidade Completude: Não. Falha se o espaço de estados for infinito ou
com loops
Custo Memória: Armazena somente um caminho simples da raiz até a folha. Para um fator de ramificação b e uma profundidade máxima de m
armazena bm nós (busca em largura = bd)
Para um nó objetivo com profundidade d=12 e supondo que os nós na mesma profundidade não tenham sucessores exige 118kb ao invés dos 10Pb da busca em largura
Custo Tempo: O(bm) no pior caso -> examinar todos os ramos Terrível se m é muito maior que d (m - profundidade máxima de qq
nó)
Otimalidade: Não
Necessita de um espaço de busca finito e não cíclico
SI 2005 24
Exercícios Resolva o problema do mapa por busca em profundidade Defina estados, a função sucessor, o teste de objetivo e o
custo do caminho.
SI 2005 25
Busca com Profundidade Limitada Evita os problemas da busca em profundidade impondo um
corte na profundidade de caminho
Problema => escolher a profundidade correta
Completude: Sim. Se a solução existente estiver em uma
profundidade d<l, ela é encontrada
Otimalidade: Não. A solução ótima pode estar em outra subárvore
Tempo: O(bl), onde l é o limite de profundidade
Memória: O(bl) Alguns problemas sugerem um valor de l. (20 cidades => l
=19)
SI 2005 26
Busca com Profundidade Interativa Tenta todos os possíveis limites de profundidade, começando
pelo 0.
Combina os benefícios da busca em largura e em profundidade
Ordem de expansão parecida com a busca em largura
Alguns nós podem ser expandidos múltiplas vezes
SI 2005 27
Busca com Profundidade Interativa
SI 2005 28
Busca com Profundidade Interativa
SI 2005 29
Busca com Profundidade Interativa
SI 2005 30
Busca com Profundidade Interativa
SI 2005 31
Busca com Profundidade Interativa Completude: Sim
Otimalidade: Sim
Tempo: O(bd) – alguns nós podem ser gerados várias vezes. Mas isso acontecerá nos níveis superirores que normalmente têm poucos nós
Memória: O(bd)
Preferida quando o espaço de busca é muito grande e a profundidade da solução não é conhecida
Tempo comparação com a busca em largura com b=10 e d=5
Prof. Interativa = 123.450 nós gerados Largura = 1.111.100 nós gerados
É o método de busca sem informação preferido quando existe um espaço de busca grande e a profundidade da solução não é conhecida
SI 2005 32
Busca Bidirecional
Busca em duas direções:
Para frente, a partir do nó inicial, e
Para trás, a partir do nó final (objetivo)
A busca pára quando os dois processos geram o mesmo nó
Problema: verificar antes de cada expansão se o nó não pertence à borda da outra busca
É possível utilizar estratégias diferentes em cada direção da busca
Os operadores devem ser reversíveis
SI 2005 33
Busca Bidirecional
A comparação de cada nó antes da expansão pode ser feita em tempo constante utilizando uma tabela hash
Completude: Sim
Otimalidade: Sim
Tempo: O(bd/2)
Memória: O(bd/2)
Para b=10 e d=6 temos 22.200 nós gerados, contra os 11.111.100
SI 2005 34
Comparação das Estratégias de Busca
Sim1,2Sim1SimNãosim1,2sim1Completa?
Sim3,4sim3NãoNãoSimSim3Otima?
O(bd/2)O(bd)O(bl)O(bm)>>bd>>bd Espaço
O(bd/2)O(bd)O(bl)
O(bm)O(bd + 1)O(bd +
1)Tempo
Bidirecional (se aplicável)
Profundidade Interativa
Profundidade limitada
Profundidade
Custo Uniforme
Largura
1 – completa se b é finito2 – completa se o custo do passo é >= c, para c positivo3 – ótima se o custo dos passos são todos idênticos4 – se ambos os sentidos utilizam busca em largura
SI 2005 35
Estados Repetidos Como evitar desperdiçar tempo expandindo estados que já
foram expandidos antes? Para alguns problemas os estados repetidos são inevitáveis:
problemas em que os operadores são reversíveis A árvore de busca para estes problemas é infinita, mas
evitando os estados repetidos, ela se torna finita
SI 2005 36
Estados Repetidos Se o espaço de estados for uma malha retangular, cada estado tem 4
sucessores A árvore de busca que inclui os estado repetidos tem 4d folhas porém 2d2
estados distintos
Para d=20, isso seria 1 trilhão de nós, mas cerca e 800 estados distintos
Estados repetidos podem fazer o problema solúvel se tornar insolúvel, se o algoritmo de busca não os detectar
Para isso o algoritmo de busca em árvore pode ser modificado para incluir:
Uma estrutura de dados = lista fechada – que contém os nós expandidos
Os nós ainda não expandidos às vezes são chamados de lista aberta
Se o nó atual corresponder a um nó da lista fechada, ele não será expandido Este algoritmo de BUSCA-EM-GRAFO ém muito mais eficiente do que BUSCA-
EM-ARVORE
SI 2005 37
Busca em grafoFunção BUSCA-EM-GRAFO (problema, borda) retorna uma
solução ou falhafechado <- um conjunto vazioborda <- INSERIR(CRIAR-NÓ(ESTADO-INICIAL[problema]),borda)
repitase VAZIA?(borda) então retornar falhanó <- REMOVER-PRIMEIRO(borda)se TESTAR-OBJETIVO[problema](ESTADO[nó]) então retornar SOLUÇÃO(nó)
se ESTADO[nó] não está em fechado entãoadicionar ESTADO[nó] a fechadoborda<-INSERIR-TODOS(EXPANDIR(nó, problema),borda)
SI 2005 38
Busca em grafo Pode não ser ótimo porque descarta um caminho recém-
descoberto
Se esse caminho for melhor do que o anterior então a busca pode perder uma solução ótima
Se utilizarmos busca em largura e busca por custo uniforme com passos de custo constante, a busca em grafo continua sendo ótima
A busca em grafo por aprofundamento iterativo precisa de outras verificações para garantir a otimalidade
A busca em profundidade e a busca por aprofundamento iterativo não tem mais o requisito de tempo linear, pois todos os nós fechados são guardados