ea 072 inteligência artificial em aplicações...
TRANSCRIPT
![Page 1: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/1.jpg)
4 – Estruturas e Estratégiasde
Busca
EA 072 Inteligência Artificialem Aplicações Industriais
DCA-FEEC-UnicampProfFernandoGomide
![Page 2: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/2.jpg)
4.1 Introdução
� Algoritmos de busca:
– não informados (depth-first, breadth-first)
• usam somente definição do problema (problem)
– informados (best-first)
• usam conhecimento sobre o domínio além de problem
• conhecimento na forma de heurísticas
DCA-FEEC-UnicampProfFernandoGomide
![Page 3: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/3.jpg)
� Aplicações
– sistemas baseados em conhecimento
– sequenciamento de produção
– busca internet
� Questões
– busca é a melhor maneira de resolver o problema?
– quais algoritmos de busca resolvem o problema?
– qual algoritmo é o mais eficiente para um dado problema?
DCA-FEEC-UnicampProfFernandoGomide
![Page 4: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/4.jpg)
� Critérios de desempenho de algoritmos de busca
– completeza: garantia de encontrar uma solução, se existir
– otimalidade: estratégia busca encontra solução ótima
– complexidade temporal: tempo para achar uma solução
– complexidade espacial: quantidade de memória para a busca
� Quantidades que definem a complexidade
– fator de ramificação (b): número máximo de sucessores de um nó
– profundidade (d): profundidade do nó meta mais raso
– comprimento trajetória (m): maior comprimento de todas trajetórias
DCA-FEEC-UnicampProfFernandoGomide
![Page 5: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/5.jpg)
4.2 Algoritmos de busca não Informados
� Características
– busca cega
– não usa informação específica sobre domínio
– utiliza somente informação contida em problem
� Esforço computacional para encontrar uma solução– necessário eliminar ciclos (organizar as soluções em uma árvore)
– detectar estados redundantes
– complexidade
DCA-FEEC-UnicampProfFernandoGomide
![Page 6: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/6.jpg)
Árvores de busca
raiz
folha
meta
caminho completo = solução
caminho parcial
folha
pai
filho filhoancestral
descendente
nó
arco
fator de ramificação: bprofundidade: dtotal caminhos: bd
DCA-FEEC-UnicampProfFernandoGomide
![Page 7: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/7.jpg)
Nó em algoritmos de busca
DCA-FEEC-UnicampProfFernandoGomide
� Estrutura de dados com os seguintes componentes
Estado (STATE): estado, elemento de um espaço de estado
Nó pai (PARENT): pai de um nó filho
Ação (ACTION): ação que, aplicada a um nó pai, gera seus filhos
Custo (PATH-COST): g(n) valor do caminho da raiz até o nó n
Profundidade (DEPTH): número de arcos no caminho da raiz até nó n
![Page 8: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/8.jpg)
5 4
6 1 8
7 3 2
PARENT
NodeACTION=right
PATH_COST=6
DEPTH=6
STATE
Nó em algoritmos de busca
DCA-FEEC-UnicampProfFernandoGomide
![Page 9: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/9.jpg)
Infraestrutura para algoritmos de busca
� Estrutura com componentes
n.STATE: estado correspondente ao nó n
n.PARENT: nó da árvore que gerou nó n
n.ACTION: ação aplicada ao pai que gerou n
n.PATH-COST: g(n) custo do estado inicial até n
p.STEP-COST = c(s, a, n) custo de um passo para problema p
p.RESULT = RESULT(s, a) modelo (de transição) (sucessor) de p
DCA-FEEC-UnicampProfFernandoGomide
![Page 10: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/10.jpg)
function CHILD_NODE (problem, parent, action) returns a node
return a node with
STATE = problem.RESULT(parent.STATE, action)
PARENT = parent
ACTION = action
PATH-COST = parent.PATH-COST
+ problem.STEP-COST(parent.STATE, action)
Geração de filho de um nó
DCA-FEEC-UnicampProfFernandoGomide
![Page 11: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/11.jpg)
Fronteira
� Estrutura dados é uma fila (queue)
FIFO: first-in, first-out (popso elemnto mais antigo)
LIFO: last-in, first-out [stack] (popso elemeno mais novo)
Priority: popso elemento da fila com maior prioridade
nós da fronteira
meta
raiz
DCA-FEEC-UnicampProfFernandoGomide
![Page 12: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/12.jpg)
Operações com filas
EMPTY?(queue): retorna truesomente se fila é vazia
POP(queue): remove e retorna primeiro elemento da fila
INSERT(element, queue): insere elemento e retorna fila resultante
SOLUTION(n): retorna a sequência de ações de n até a raiz
DCA-FEEC-UnicampProfFernandoGomide
![Page 13: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/13.jpg)
Conjunto de nós expandidos (explored set)
nós expandidos
meta
raiz
Conjunto nós expandidos = hash table
Propósito: verificar estados repetidos
Igualdade de conjuntos: {Bucharest, Vaslui} = {Vaslui, Bucharest}
DCA-FEEC-UnicampProfFernandoGomide
![Page 14: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/14.jpg)
function BREADTH_FIRST_SEARCH (problem) returns a solution, or failure
node ← a node with STATE = problem.INITIAL-STATE; PATH-COST = 0if problem.GOAL-TEST (node.STATE) then return SOLUTION(node)frontier ← a FIFO queue with nodeas the only elementexplored ← an empty set
loop do if EMPTY?(frontier) then return failurenode← POP (frontier) /* chooses the shallowest node in frontier */add node.STATE to exploredfor eachaction in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)if child.STATE is not in exploredor frontier then
if problem.GOAL-TEST(child.STATE) then return SOLUTION(child)frontier ← INSERT (child, frontier)
DCA-FEEC-UnicampProfFernandoGomide
Busca em largura (breadth-first search)
![Page 15: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/15.jpg)
FIFO_QUEUE (First In–First Out) = ENQUEUE_AT_END
DCA-FEEC-UnicampProfFernandoGomide
0
1
2
Exemplo:
![Page 16: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/16.jpg)
� Complexidade busca em largura– completo (se b é finito)
– não necessariamente ótimo
• a menos que custo trajetória seja função não decrescente da profundidade
– tempo e memória (profundidade da meta = d)
)(2 dd bObbb =+++ L
b = 10, 1.000.000 nós/s, 1000 bytes/nó
DCA-FEEC-UnicampProfFernandoGomide
10 EB (1018)350 anos101616
1 PB(1015)13 dias101212
103 GB2 m1088
10.6 MB11 ms11.1104
MemóriaTempoNósProfundidade
![Page 17: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/17.jpg)
� Características
– expande nó com menor g(n)
• nó no caminho com menor custo
– teste meta aplicado quando um nó é selecionado para expansão
• ao invés de quando o nó é gerado
• porque ? : nó pode estar em um caminho sub-ótimo
– teste para verificar se existe nó na fronteira com melhor custo
– expande nós desnecessariamente se custo dos passos são iguais
Busca uniforme (uniform search)
DCA-FEEC-UnicampProfFernandoGomide
![Page 18: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/18.jpg)
Algoritmo de busca uniforme
function UNIFORM_COST_SEARCH (problem) returns a solution, or failure
node ← a node with STATE = problem.INITIAL-STATE; PATH-COST = 0frontier ← a priority queue ordered by PATH-COST with nodeas the only elementexplored ← an empty set
loop do if EMPTY?(frontier) then return failurenode← POP (frontier) /* chooses the lowest-cost node in frontier */if problem.GOAL-TEST (node.STATE) then return SOLUTION(node)add node.STATE to exploredfor eachaction in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)if child.STATE is not in exploredor frontier then
frontier ← INSERT (child, frontier) else ifchild.STATE is in frontier with higher PATH-COST then
replace that frontier node withchild
DCA-FEEC-UnicampProfFernandoGomide
![Page 19: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/19.jpg)
ENQUEUE_BEST_AT_FRONT
15 5
10
15 5
A
B
C
GS
S S
S
S
A
A
A
B
B
B
C
C
C
G
G G
1 5 15
11
1011
5 15
15
DCA-FEEC-UnicampProfFernandoGomide
Exemplo
![Page 20: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/20.jpg)
� Complexidade busca uniforme
– completo (se cada passo tem custo ε > 0)
– ótimo em geral
– C* custo da solução ótima
– tempo e memória
)()( /*1 dεC bObO ≥+
se custos passos iguais → 1/*1 ++ = dεC bb
DCA-FEEC-UnicampProfFernandoGomide
![Page 21: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/21.jpg)
function DEPTH_FIRST_SEARCH (problem) returns a solution, or failure
node ← a node with STATE = problem.INITIAL-STATE; PATH-COST = 0if problem.GOAL-TEST (node.STATE) then return SOLUTION(node)frontier ← a LIFO queue with nodeas the only elementexplored ← an empty set
loop do if EMPTY?(frontier) then return failurenode← POP (frontier) /* chooses the deepest node in frontier */add node.STATE to exploredfor eachaction in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)if child.STATE is not in exploredor frontier then
if problem.GOAL-TEST(child.STATE) then return SOLUTION(child)frontier ← INSERT (child, frontier)
DCA-FEEC-UnicampProfFernandoGomide
Busca em profundidade (depth-first search)
![Page 22: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/22.jpg)
LIFO (Last In–First Out) = ENQUEUE_AT_FRONT Exemplo: assume nós com profundidade 3 sem sucessores
DCA-FEEC-UnicampProfFernandoGomide
Exemplo:
0
1
2
3
![Page 23: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/23.jpg)
� Complexidade busca em profundidade
– não é completo (árvore), completo (grafo, espaço estado finito)
– não é ótimo em ambos casos
– complexidade temporal
• grafo: limitada pelo tamanho espaço de estado (que pode ser ∞)
• árvore: O(bm), mprofundidade máxima de um nó
– complexidade espacial
• grafo: limitada pelo tamanho espaço de estado (que pode ser ∞)
• árvore: memória modesta: bm nós
meta sem sucessores, d = 16
b = 10, 1.000.000 nós/s, 1000 bytes/nó
156 KB (10 EB na busca em largura)
fator: 7 trilhões menos memória !
DCA-FEEC-UnicampProfFernandoGomide
![Page 24: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/24.jpg)
� Características
– ideia: usar busca em problemas com caminhos infinitos
– não é completo se l < d (d : profundidade nó meta mais raso)
– não é ótimo se l > d
– complexidade temporal: O(bl)
– complexidade espacial: O(bl)
– busca profundidade = busca profundidade limitada com l = ∞– conhecimento do domínio da aplicação ajuda determinar limite
Busca profundidade limitada (depth-limited search)
DCA-FEEC-UnicampProfFernandoGomide
![Page 25: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/25.jpg)
function DEPTH_LIMITED_SEARCH (problem, limit) returns a solution, or failure/cutoff
node ← a node with STATE = problem.INITIAL-STATE; PATH-COST = 0if problem.GOAL-TEST (node.STATE) then return SOLUTION(node)frontier ← a LIFO queue with nodeas the only elementexplored ← an empty set
loop doif EMPTY?(frontier) then return failurenode← POP (frontier) /* chooses the deepest node in frontier */add node.STATE to exploredfor eachaction in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)if child.STATE is not in exploredor frontier then
if problem.GOAL-TEST(child.STATE) then return SOLUTION(child)else ifDEPTH(node) = limit then return cutofffrontier ← INSERT (child, frontier)
DCA-FEEC-UnicampProfFernandoGomide
Algoritmo de busca em profundidade limitada
![Page 26: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/26.jpg)
Exemplo supõe profundidade máxima = 3 (l = 3)
DCA-FEEC-UnicampProfFernandoGomide
Exemplo:
0
1
2
3
![Page 27: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/27.jpg)
� Características
– ideia: aumentar limite de profundidade gradualmente até encontrar meta
– combina busca profundidade com busca em largura
– completo se b é finito
– ótimo se custo caminho não diminui com a profundidade
– complexidade espacial: O(bd)
Busca profundidade progressiva (iterative-deepening search)
DCA-FEEC-UnicampProfFernandoGomide
![Page 28: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/28.jpg)
function ITERATIVE_DEEPENING_SEARCH (problem) returns a solution, or failure
for depth← 0 to ∞ doresult ← DEPTH_LIMITED_SEARCH (problem, depth)if result≠ cutoff then return result
DCA-FEEC-UnicampProfFernandoGomide
l = 0
l = 1
l = 2
![Page 29: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/29.jpg)
d
d
bbbN
bbdbdN
+++=
++−+=
L
L
2
2
)BFS(
)1()()IDS(
b = 10, d = 5 → N(IDS) = 123.450 N(BFS) = 111.110
� IDS: método de escolha quando espaço busca é grandeprofundidade da solução não é conhecidaa priori
DCA-FEEC-UnicampProfFernandoGomide
![Page 30: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/30.jpg)
b : fator de ramificaçãod : profundidade da soluçãom : profundidade máxima da árvore de busca
Complexidade dos algoritmos de busca (árvore)
DCA-FEEC-UnicampProfFernandoGomide
sim (b finito)sim (custos iguais)O(bd/2)O(bd/2)Bidirecional
sim (b finito)sim (custos iguais)O(bd)O(bd)Profundidade progressiva
nãonãoO(bl)O(bl)Profundidade limitada
nãonãoO(bm)O(bm)Profundidade
sim (b<∝, c ≥ ε>0)simO(b1+ C*/ε )O(b1+ C*/ε )Uniforme
sim (b < ∝)sim (custos iguais)O(bd)O(bd)Largura
Completo? Ótimo ?MemóriaTempoCritério
l : limite da profundidadeC*: custo da solução ótimaε : menor custo de uma ação
![Page 31: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/31.jpg)
Estados repetidos/redundantes
A
BB
C C C C
A
B
C
D
A
d + 1 estados 2d caminhosárvore 4d folhas,~2d2/estadod = 2 → 1 trilhão nós800 estados distintos
DCA-FEEC-UnicampProfFernandoGomide
![Page 32: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/32.jpg)
4.3 Algoritmos de busca informados
� Características– conhecimento domínio + problem
– função avaliação f(n)
– função heurística h(n)
– conhecimento na forma de heurísticas
– algoritmos do tipo best-first
� Algoritmos do tipobest-first– busca uniforme: f(n) = g(n)
– greedy best-first: f(n) = h(n)
– A* : f(n) = g(n) + h(n)
DCA-FEEC-UnicampProfFernandoGomide
![Page 33: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/33.jpg)
n: nó da árvoref(n): valor def emn (estimativa custo mínimo através de n)g(n): custo do caminho da raiz até nh(n): estimativado custo mínimo de n até a meta
DCA-FEEC-UnicampProfFernandoGomide
meta
solução
nó
n
g(n)
h(n)f(n)=g(n) + h(n)
h(t)=0
s
t
raiz
![Page 34: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/34.jpg)
function BEST_FIRST_SEARCH (problem) returns a solution, or failure
node ← a node with STATE = problem.INITIAL-STATE; PATH-COST = 0frontier ← a priority queue ordered by PATH-COST with nodeas the only elementexplored ← an empty set
loop do if EMPTY?(frontier) then return failurenode← POP (frontier) /* chooses the node with lowest evaluation in frontier */if problem.GOAL-TEST (node.STATE) then return SOLUTION(node)add node.STATE to exploredfor eachaction in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)if child.STATE is not in exploredor frontier then
frontier ← INSERT (child, frontier) else ifchild.STATE is in frontier with higher PATH-COST then
replace that frontier node withchild
DCA-FEEC-UnicampProfFernandoGomide
![Page 35: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/35.jpg)
DCA-FEEC-UnicampProfFernandoGomide
Greedy best-first search
function GREEDY_BEST_FIRST_SEARCH (problem) returns a solution, or failure
node ← a node with STATE = problem.INITIAL-STATE; PATH-COST = 0frontier ← a priority queue ordered by PATH-COST with nodeas the only elementexplored ← an empty set
loop do if EMPTY?(frontier) then return failurenode← POP (frontier) /* chooses the node with lowest h(n) in frontier */if problem.GOAL-TEST (node.STATE) then return SOLUTION(node)add node.STATE to exploredfor eachaction in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)if child.STATE is not in exploredor frontier then
frontier ← INSERT (child, frontier) else ifchild.STATE is in frontier with higher PATH-COST then
replace that frontier node withchild
![Page 36: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/36.jpg)
hSLD Bucharest
Exemplo
DCA-FEEC-UnicampProfFernandoGomide
![Page 37: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/37.jpg)
Estado inicial In (Arad) Arad
366
Greedy best-first search
DCA-FEEC-UnicampProfFernandoGomide
![Page 38: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/38.jpg)
Arad
Sibiu Timisoara Zerind
253 329 374
DCA-FEEC-UnicampProfFernandoGomide
![Page 39: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/39.jpg)
Arad
Sibiu Timisoara Zerind
Arad Oradea RimnicuFagaras
329 374
366 176 380 193
DCA-FEEC-UnicampProfFernandoGomide
![Page 40: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/40.jpg)
Arad
Sibiu Timisoara Zerind
Arad Oradea RimnicuFagaras
329 374
366
0
380 193
Sibiu Bucharest
253 DCA-FEEC-UnicampProfFernandoGomide
![Page 41: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/41.jpg)
DCA-FEEC-UnicampProfFernandoGomide
� Greedy best-first search
– baixo custo de busca
– não é ótimo
• Arad-Sibiu-Fagaras-Bucharest = 450
• Arad-Sibiu-Rimnicu Vilcea-Pitesti-Bucharest = 418
– versão árvore: incompleto (mesmo em espaço estado finito)
• caminho de Iasi para Fagaras
– versão grafo: completo (em espaço estado finito)
– complexidade temporal/espacial: O(bm)
– qualidade de h(n) reduz complexidade
![Page 42: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/42.jpg)
Busca A*function A*_SEARCH (problem) returns a solution, or failure
node ← a node with STATE = problem.INITIAL-STATE; PATH-COST = 0frontier ← a priority queue ordered by PATH-COST with nodeas the only elementexplored ← an empty set
loop do if EMPTY?(frontier) then return failurenode← POP (frontier) /* chooses the node with lowest f(n) in frontier */if problem.GOAL-TEST (node.STATE) then return SOLUTION(node)add node.STATE to exploredfor eachaction in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)if child.STATE is not in exploredor frontier then
frontier ← INSERT (child, frontier) else ifchild.STATE is in frontier with higher PATH-COST then
replace that frontier node withchild
DCA-FEEC-UnicampProfFernandoGomide
![Page 43: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/43.jpg)
Arad
366 = 0 + 366
Estado inicial In (Arad)
Busca A*
DCA-FEEC-UnicampProfFernandoGomide
![Page 44: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/44.jpg)
Sibiu Timisoara Zerind
Arad
447 = 118 + 329 449 = 75 + 374393 = 140 + 253
DCA-FEEC-UnicampProfFernandoGomide
![Page 45: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/45.jpg)
Rimnicu
Sibiu Timisoara Zerind
Arad Fagaras Oradea
Arad
447 = 118 + 329 449 = 75 + 374
646 = 280 + 366 671 = 291 + 380415 = 239 + 176 413 = 220 + 193
DCA-FEEC-UnicampProfFernandoGomide
![Page 46: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/46.jpg)
Rimnicu
Sibiu Timisoara Zerind
Arad Fagaras Oradea
Arad
Craiova Pitesti Sibiu
447 = 118 + 329 449 = 75 + 374
646 = 280 + 366 671 = 291 + 380
526 = 366 + 160 553 = 300 + 253
415 = 239 + 176
417 = 317 + 100
DCA-FEEC-UnicampProfFernandoGomide
![Page 47: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/47.jpg)
Rimnicu
Sibiu Timisoara Zerind
Arad Fagaras Oradea
Arad
Craiova Pitesti SibiuSibiu Bucharest
447 = 118 + 329 449 = 75 + 374
646 = 280 + 366 671 = 291 + 380
591 = 338 + 253 450 = 450 + 0 526 = 366 + 160 553 = 300 + 253417 = 317 + 100
DCA-FEEC-UnicampProfFernandoGomide
![Page 48: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/48.jpg)
Rimnicu
Sibiu Timisoara Zerind
Arad Fagaras Oradea
Arad
Craiova Pitesti SibiuSibiu Bucharest
Bucharest Craiova Rimnicu
447 = 118 + 329 449 = 75 + 374
646 = 280 + 366 671 = 291 + 380
591 = 338 + 253 450 = 450 + 0 526 = 366 + 160 553 = 300 + 253
418 = 418 + 0 615 = 455 + 160 607 = 414 + 193
DCA-FEEC-UnicampProfFernandoGomide
![Page 49: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/49.jpg)
Propriedades do algoritmo A*
� f (n) = g (n) + h (n)
� h (n) otimista (nunca superestima o custo de atingir a meta) → h admissível
– exemplo: distância em linha reta (hSLD ) no exemplo da Romênia
� h (n) ≤ c(n, a n') + h (n') → h consistente (monotônica)
� A* com TREE_SEARCH é ótimo se h(n) é admissível
� A* com GRAPH_SEARCH é ótimo se h(n) é consistente
DCA-FEEC-UnicampProfFernandoGomide
![Page 50: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/50.jpg)
Teorema: A* com TREE_SEARCH e h admissível é ótimo.
Prova:
s
G2
n
G
Supor meta G2 foi gerada e está na fila
Seja n um nó não expandido no caminho ótimo
f (G2) = g(G2) + h (G2) = g (G2) > C* pois h (G2) = 0
f (n) = g (n) + h (n) ≤ C*
f (n) ≤ C* ≤ f (G2)
G2 nunca será expandido, logo A* tem que retornar solução ótima
DCA-FEEC-UnicampProfFernandoGomide
![Page 51: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/51.jpg)
Lema: Se h (n) é consistente, então os valores de f (n) ao longo dequalquer caminho são não decrescentes (A* expande nós emordem crescente dos valores def )
Prova:
h (n) ≤ c(n, a n') + h (n') consistência
n' sucessor de n⇒ g(n') = g(n) + c(n,a,n')
f (n') = g (n') + h (n')
= g(n) + c(n,a,n') + h(n')
≥ g(n) + h(n) = f (n)
isto é, f (n) é não decrescente ao longo de qualquer caminho.
n
Gn
n'
h (n)
h (n')
c(n, a, n')
DCA-FEEC-UnicampProfFernandoGomide
![Page 52: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/52.jpg)
contornoi contém todos nós com f = fi ondefi < fi + 1
DCA-FEEC-UnicampProfFernandoGomide
![Page 53: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/53.jpg)
Teorema: A* com GRAPH_SEARCH e h consistente é ótimo.
Prova:
1- h consistente ⇒ f(n) ao longo de qualquer caminho é não decrescente (Lema)
2- sempre que A* seleciona um nó n para expansão, o caminho ótimo da raizpara o nó n já foi encontrado
Se este não fosse o caso, existiria um nón′ na fronteira (propriedade daseparação) no caminho ótimo da raiz para n tal que f(n′) < f(n) (valor de f nãodiminui ao longo de qualquer caminho) e n′ seria selecionado primeiro.
3- os itens 1 e 2 significam que a sequência de nós expandidos pelo A* usandoGRAPH_SEARCH está em ordem não decrescente de f. Então o primeiro nóselecionado para expansão tem que ser a solução ótima pois h(meta) = 0 etodos nós seguintes certamente terão custo maior.
DCA-FEEC-UnicampProfFernandoGomide
![Page 54: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/54.jpg)
� A* é completo, ótimo e eficiente
� Complexidade ainda é exponencial
� Memória é o maior problema
� Ponto principal para torná-lo mais eficiente: escolha apropriada da heurística
– abstração do problema
– relaxação
– experimentos estatísticos
– aprendizagem de parâmetros de funções
DCA-FEEC-UnicampProfFernandoGomide
![Page 55: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/55.jpg)
IDA* Iterative deepeningA*
DCA-FEEC-UnicampProfFernandoGomide
� Características
– ideia: aumentar limite progressivamente
– limite: custo f-cost(g + h) e não a profundidade
– valor de corte: newcutoff= min {f-cost dos nós com f-cost> oldcutoff)
– prático para custos passos unitários
– sofre dos mesmos problemas da busca uniforme
![Page 56: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/56.jpg)
Busca heurística com limite de memória: RBFS
� Características
– ideia: mimetizarbest-first, mas com espaço linear
– limite: f_limit para rastrear f-value da melhor alternativa dos ancetrais
– valor de corte: newcutoff= min {f-cost dos nós com f-cost> oldcutoff)
– se nó corrente excede limite, algoritmo volta para caminho alternativo
– atualiza f-value de cada nó no caminho com um valor: backed-up value– backed-up value: melhor f-value dos filhos do nó
DCA-FEEC-UnicampProfFernandoGomide
![Page 57: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/57.jpg)
function RECURSIVE_BEST_FIRST_SEARCH (problem) returns a solution, or failurereturn RBFS (problem, MAKE-NODE(problem.INITIAL-STATE, ∞ )
function RBFS (problem, node, f_limit ) returns a solution, or failure and new f-cost limitif problem.GOAL-TEST(node.STATE) then return SOLUTION(node)successors← [ ]for each action in problem.ACTIONS(node.STATE)doadd CHILD-NODE(problem, node, action) into sucessorsif successorsis empty then return failure, ∞for eachs in successorsdo /* update f with values from previous search, if any */
s.f ← max (s.g + s.h, node.f )loop do
best← the lowest f-value node in successorsif best.f > f_limit then return failure, best.falternative← the second-lowest f-value among successorsresult, best.f ← RBFS ( problem, best, min (f_limit, alternative))if result ≠ failure then return result
Algoritmo de busca RBFS
DCA-FEEC-UnicampProfFernandoGomide
![Page 58: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/58.jpg)
Rimnicu
Sibiu Timisoara Zerind
Arad Fagaras Oradea
Arad
Craiova Pitesti Sibiu
∝∝∝∝
366
447
646 671
447 449
526 417 553
393
415
415 413
Busca RBFS
DCA-FEEC-UnicampProfFernandoGomide
![Page 59: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/59.jpg)
Rimnicu
Sibiu Timisoara Zerind
Arad Fagaras Oradea
Arad
Sibiu Bucharest
∝∝∝∝
366
447
646 671
591 450
413415
417
417
447 449393
DCA-FEEC-UnicampProfFernandoGomide
![Page 60: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/60.jpg)
Rimnicu
Sibiu Timisoara Zerind
Arad Fagaras Oradea
Arad
Craiova Pitesti Sibiu
∝∝∝∝
366
447
646 415 671
447 449
526 417 553
393
417
447
Bucharest Craiova Rimnicu
418 615 607
447
450
DCA-FEEC-UnicampProfFernandoGomide
![Page 61: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/61.jpg)
SMA* Simplified memory-boundedA*
� Propriedades do SMA*
– utiliza a memória que estiver disponível
– evita repetição de expansão sempre que a memória permitir
– completo se a memória é suficiente para armazenar a solução mais raza
– ótimo se memória é suficiente para armazenar solução ótima
• senão, fornece a melhor solução que pode ser encontrada
DCA-FEEC-UnicampProfFernandoGomide
![Page 62: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/62.jpg)
� Propriedades do SMA*
– quando a memória é suficiente para toda árvore de busca ele é eficiente
– robusto para encontrar solução ótima quando
• espaço de estado é um grafo
• custos dos passos não são uniformes
• geração de nós é caro, comparado com overheadpara manter
� frontier
� explored
DCA-FEEC-UnicampProfFernandoGomide
![Page 63: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/63.jpg)
SMA*: exemplo
0+12=12
10+5=15
20+5=25
3052=35 30+0=30
20+0=20
8+5=13
16+2=18 24+0=24
24+5=2924+0=24
A
B
C D
E F
G
H I
J K
meta
DCA-FEEC-UnicampProfFernandoGomide
![Page 64: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/64.jpg)
12A
12A
15B
13A
15B G
A13 (15)
13G
18 (∞)H
15 (15)A
G24 (∞)
I24
15A
15B
24G
15 (24)
15B
C
A
25 (∞)
20 (24)
B
A
20 (∞)
D20
DCA-FEEC-UnicampProfFernandoGomide
![Page 65: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/65.jpg)
A* = Branch-and-bound+ Princípio otimalidade Bellman
Comentários sobre o algoritmo A*
� Winston (Artificial Intelligence, 3rd Edition, Addison Wesley, 1993)descreve o algoritmo A* de outra maneira, resumida abaixo:
� Esta maneira nos ajuda a explicitar conceitos importantes que estão, decerta forma, implícitos no algoritmo como descrito por Russell&Norvig.
DCA-FEEC-UnicampProfFernandoGomide
![Page 66: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/66.jpg)
Branch-and-bound
S
A
B
D
13
13
ExpandidoNunca expandido
E
F
G
B
11
Expandido
![Page 67: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/67.jpg)
Princípio de otimalidade de Bellman
O melhor caminho entre um nó inicial e uma meta que passa por um nóparticular intermediário, é o melhor caminho do nó inicial até este, seguidopelo melhor caminho deste nó até a meta. Não é necessário considerarnenhum outro caminho que passa por este nó particular.
S
A
B D
D
7 8
4
Expandido
Nunca expandido
Esta é a ideia da programação dinâmica
Desigualdade do triânguloRestrição monotônica
DCA-FEEC-UnicampProfFernandoGomide
![Page 68: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/68.jpg)
A* = Branch-and-bound+ Princípio otimalidade1 – Construir uma fila com um caminho de comprimento zero contendo a raiz;
2 – Repetir até que o primeiro caminho da fila contenha a meta ou a fila vazia;
remover o primeiro caminho da fila; criar novos caminhos exten-dendo o primeiro caminho até todos os nós vizinhos do nó terminal;
rejeitar todos novos caminhos com ciclos;
adicionar os caminhos restantes, se algum, na fila;
se um ou mais caminhos atigem o mesmo nó, eliminar todos eles,exceto aquele com o menor valor;
ordenar todos os caminhos de acordo com f = g + h, colocando oscaminhos de menor valor no início da fila (h ≤≤≤≤ h*);
3 – Se a meta for encontrada, sucesso; caso contrário falha.
DCA-FEEC-UnicampProfFernandoGomide
![Page 69: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/69.jpg)
7 4
6
18
5
3
2
54
6
1
87
3
2
4.4 Funções heurísticas
profundidade média: 22 (no passos)
b ≈ 3
busca exaustiva com árvore: 322 ≈ 3.1×1010 estados
9!/2 = 181.440 estados distintos atingíveis
redução de 170.000 se usar busca grafo
15-puzzle: 1013
DCA-FEEC-UnicampProfFernandoGomide
estado inicial meta
![Page 70: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/70.jpg)
h1 : números fora do lugar correto, h1 = 8
h2 : distância de Manhattan (soma distância horizontal e vertical)
h2 = 3 + 1 + 2 + 2 + 2 + 3 + 2 = 18
profundidade da solução: 26
h1, h2: admissíveis
7 4
6
18
5
3
2
54
6
1
87
3
2
estado inicial meta
DCA-FEEC-UnicampProfFernandoGomide
![Page 71: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/71.jpg)
� Qualidade de uma heurística
– caracterizada pelo fator efetivo de ramificação b*
A* gera N nós, profundidade d
b* fator de ramificação que uma árvore uniforme com profundidade d
contém N + 1 nós
N + 1 = 1 + b* + (b*) 2 + ....+ (b*) d
– ideal b* ≈ 1
– h2(n) ≥ h1(n), h2 domina h1
– dominância ⇒ maior eficiência
DCA-FEEC-UnicampProfFernandoGomide
![Page 72: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/72.jpg)
1.64139.135–24
732273.644.03512
18206806
A*( h2)A*( h1)IDSd
Número médio de nós gerados
Comparação IDS × A* com heurísticas h1 e h2
A* versão TREE_SEARCH, média de 100 instâncias para cada d
DCA-FEEC-UnicampProfFernandoGomide
![Page 73: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/73.jpg)
� Geração de heurísticas– relaxação
– pattern databases
– experiência
– aprendizagem
DCA-FEEC-UnicampProfFernandoGomide
![Page 74: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/74.jpg)
4.5 Busca local
DCA-FEEC-UnicampProfFernandoGomide
� Características
– estado é o que interessa, não caminho
– busca inicia com um nó
– move para vizinhos do nó
– necessitam de pouca memória
– operam em espaços contínuos e discretos
– completo: se encontrar uma meta (se existir)
– ótimo: se encontrar um ótimo global
![Page 75: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/75.jpg)
funçãoobjetivo
espaçoestado
máximo global
máximo local
estado atual
DCA-FEEC-UnicampProfFernandoGomide
![Page 76: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/76.jpg)
Algoritmo do gradiente (hill-climbing)
function HILL_CLIMBING ( problem) returns a state that is local maximum
current← MAKE-NODE (problem.INITIAL-STATE)loop do
neighbor← a highest-valued successor of currentif neighbor.VALUE < current.VALUE then return current.STATEcurrent← neighbor
DCA-FEEC-UnicampProfFernandoGomide
![Page 77: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/77.jpg)
� Características
– não mantém uma árvore de busca
– estrutura dados nó: estado e valor função objetivo
– complete state formulation
– move para vizinhos imediatos do nó
– busca local gulosa
– problemas: ótimos locais, plateaux, ridges
– incompleto (ótimos locais)
– reinicializações aleatórias até encontrar meta:
• torna-se completo com probabilidade 1
DCA-FEEC-UnicampProfFernandoGomide
![Page 78: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/78.jpg)
Exemplo: problema das 8 rainhas
18
14
14
15
17
18
14
12
16
12
14
14
14
14
14
13
18
14
17
16
13
13
15
13
15
15
18
17
13
12
15
13
15
12
15
12
12
14
12
16
14
14
14
14 14
14 14
1612
1613
16 16
16
18
15
h = 17 h = 1 (mínimo local)
h = número de pares de rainhas que se atacam (direta e indiretamente)
DCA-FEEC-UnicampProfFernandoGomide
![Page 79: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/79.jpg)
� 8 rainhas com busca local
– estado inicial: gerado aleatoriamente
– 86% pára (falha) depois de 4 passos (média)
– 14% acha solução depois de 3 passos (média)
– espaço estado: 88 ≈ 17 milhões estados!
– busca em plateux: limite no número de iterações
• 94 % resolvidos com 21 passos (média)
• 6% de falhas com 64 passos em média
– reinicializações: problema com 3 milhões de rainhas em 3 min.!
DCA-FEEC-UnicampProfFernandoGomide
![Page 80: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/80.jpg)
Algoritmo simulated annealing
function SIMULATED_ANNEALING (problem, schedule) returns a solution state
inputs: problem, a problemschedule, a mapping from time to “temperature”
current← MAKE_NODE (problem.INITIAL-STATE)for t ← 1 to ∞ do
T ← schedule[t]if T = 0 then return currentnext ← a randomly selected successor of current∆E ← next.VALUE – current.VALUEif ∆E > 0 then current← nextelsecurrent← nextonly with probability exp(∆E/T)
DCA-FEEC-UnicampProfFernandoGomide
![Page 81: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/81.jpg)
� Características
– probabilidade diminui exponencialmente se a qualidade piora
– probabilidade diminui quando a temperatura diminui
– schedulediminui probabilidade suavemente
– ótimo global com probabilidade → 1
– aplicações:
• VLSI
• planejamento/programação de operações
DCA-FEEC-UnicampProfFernandoGomide
![Page 82: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/82.jpg)
Local beam search
� Conceito e características
– mantém k nós (estados) ao invés de um único
– inicializado com k nós, gerados aleatoriamente
– gera todos os sucessores dos k nós
– se encontra meta: pára
– senão escolhe os k melhores e continua
– difere do hill-climbing com reinicializações
– problema: diversidade das k soluções
• aliviado escolhendo k nós aleatoriamente
DCA-FEEC-UnicampProfFernandoGomide
![Page 83: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/83.jpg)
Busca local em espaços contínuos
)()(1 xxxx fH f ∇−← −
)(xxx f∇α+←max (min) f (x)s.a. x ∈ D ⊆ Rn
gradiente
Newton
D = Rn
DCA-FEEC-UnicampProfFernandoGomide
![Page 84: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/84.jpg)
Busca com ações não determinísticas
� Ambiente
– parcialmente observável
– não determinístico
� Importância dos percepts:
– ajuda a focalizar a busca
– resultados das ações
� Perceptsfuturos são desconhecidos
� Solução do problema: estratégia (plano de contingência)
DCA-FEEC-UnicampProfFernandoGomide
![Page 85: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/85.jpg)
Exemplo 1: agente errático
� Ação Suck
– posição com sujeira: limpa posição e eventualmente a adjacente
– posição limpa: ação eventualmente deposita sujeira
� Modelo de transição
– função RESULTS (ao invés de RESULT)
– retorna um conjunto de estados
– exemplo: {1} Suck→ {5, 7}
� Solução
– plano de contingência (estratégia)
– [Suck, if State= 5 then [Right, Suck] else[]]
DCA-FEEC-UnicampProfFernandoGomide
![Page 86: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/86.jpg)
1
3
2
4
5 6
7 8
Espaço de estados do problema
meta meta
DCA-FEEC-UnicampProfFernandoGomide
![Page 87: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/87.jpg)
� Se
– ambiente: observável, determinístico, completamente conhecido
– agente conhece o estado onde está
– efeito das ações são conhecidos
� Então
– solução: sequência de ações
– perceptssão irrelevantes
DCA-FEEC-UnicampProfFernandoGomide
![Page 88: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/88.jpg)
R
L
R
L
R
L
R
L
S S
S SS
S S
S
L
L L
R
R R
DCA-FEEC-UnicampProfFernandoGomide
![Page 89: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/89.jpg)
Árvores de busca And-Or
Suck Right
Meta
Loop LoopSuck
Suck SuckRight Left
Left Loop
LoopMeta
Meta
5
DCA-FEEC-UnicampProfFernandoGomide
![Page 90: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/90.jpg)
� Solução em um grafo AND-OR: sub-árvore que
– tem uma meta em cada folha
– especifica uma ação em cada nó OR
– inclui todos descendentes em cada nó AND
– solução: é um plano do tipo
[Suck, if State = 5 then [Right, Suck] else....]
DCA-FEEC-UnicampProfFernandoGomide
![Page 91: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/91.jpg)
function AND_OR_GRAPH_SEARCH (problem) returns a conditional plan, or failure
OR_SEARCH (problem.INITIAL-STATE, problem, [])
function OR_SEARCH (state, problem, path) returns a conditional plan, or failure
if problem.GOAL-TEST(state) then return the empty plan
if stateis on path then return failure
for each action in problem.ACTIONS(state) do
plan ← AND_SEARCH(RESULTS(state, action), problem, [state|path])
if plan≠ failure then return [action|plan]
return failure
function AND_SEARCH (states, problem, path) returns a conditional plan, or failure
for eachsi in statesdo
plani ← OR_SEARCH(si, problem, path)
if plani = failure then return failure
return [if s1 then plan1 else ifs2 then plan2 else....if sn–1 then plann–1 elseplann]
Algoritmo de busca em grafos And-Or
DCA-FEEC-UnicampProfFernandoGomide
![Page 92: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/92.jpg)
Exemplo 2: agente com falha no movimento
� Ação R (Right) e L (Left) do agente
– falha eventualmente
– agente permanece no mesmo local
– exemplo: {1} Right→ {1, 2}
� Solução cíclica
– AND_OR_GRAPH_SEARCH falha
– exemplo solução: aplicar Rightaté funcionar
– como? rotulando parte do plano
DCA-FEEC-UnicampProfFernandoGomide
![Page 93: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/93.jpg)
Suck Right
Right
5
6
1
2
[Suck, S1: Righ, if State= 5 then S1 elseSuck]
while State= 5 do Right
DCA-FEEC-UnicampProfFernandoGomide
![Page 94: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/94.jpg)
Busca com observações parciais
� Conceito importante
– estado crença (belief state)
– conjunto de estados físicos possíveis
(dados: sequência de ações epercepts)
DCA-FEEC-UnicampProfFernandoGomide
![Page 95: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/95.jpg)
Exemplo 1: busca sem observações
� Agente sem sensores– perceptsnão fornecem nenhuma informação
� Hipótese: agente conhece geografia do seu mundo– mas não conhece sua posição
– não conhece a distribuição de sujeira
� Estado inicial: um elemento de {1, 2, 3, 4, 5, 6, 7, 8}– Right→ {2, 4, 6, 8}
– [Righ, Suck] → {4, 8}
– [Righ, Suck, Left, Suck] sempre atinge {7} (meta)
para qualquer estado inicial
DCA-FEEC-UnicampProfFernandoGomide
![Page 96: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/96.jpg)
� Espaço de estados crença totalmente observável
� Perceptsobservados depois das ações são previsíveis
– são sempre vazios!
� Não há contingências
� Formulação problemas busca com estados crença ?
DCA-FEEC-UnicampProfFernandoGomide
![Page 97: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/97.jpg)
� Formulação do problema
Problema subjacente P– ACTIONSP, RESULTP, GOAL-TESTP, STEP-COSTP
1. espaço de estados crença– conjunto de todos estados possíveis de P
– se P tem N estados, então 2N estados possíveis
– nem todos estados são atingíveis
2. estado inicial– conjunto de todos estados de P
DCA-FEEC-UnicampProfFernandoGomide
![Page 98: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/98.jpg)
3. Ações
– dado um estado crença b = {s1, s2}
– em geral ACTIONSP(s1) ≠ ACTIONSP(s2)
– se todas ações são aplicáveis
– senão
conjunto das ações aplicáveis em todos os estados
Ubs
P sb∈
= )(ACTIONS)(ACTIONS
Ibs
P sb∈
= )(ACTIONS)(ACTIONS
DCA-FEEC-UnicampProfFernandoGomide
![Page 99: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/99.jpg)
4. Modelo de transição
– se ações são determinísticas
– se ações são não determinísticas
– previsão: b' = PREDICTP(b,a)
}and),(RESULT:{),(RESULT bsasssabb P ∈=′′==′
Ubs
P
asRESULTS
bsasssabb
∈=
∈∈′′==′),(
}and),(RESULTS:{),(RESULT
DCA-FEEC-UnicampProfFernandoGomide
![Page 100: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/100.jpg)
Previsão: b' = PREDICTP (b, a)
Ação determinística
Ação não determinística
1
3
2
4
b b'
Right
1
3
1
2
4
3
b b'
Right
DCA-FEEC-UnicampProfFernandoGomide
![Page 101: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/101.jpg)
5. Teste de meta– agente: necessita de um plano que funcione, com certeza
– estado crença satisfaz meta se todos seus elementos satisfazem
GOAL-TESTP
6. Custo de um caminho– ações podem ter diferentes custos
– aqui assumimos custos são os mesmos
DCA-FEEC-UnicampProfFernandoGomide
![Page 102: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/102.jpg)
– 12 estados crença atingíveis entre os 28 = 256 possíveis
– algoritmos de busca informados/não informados são aplicáveis
� se uma sequência de ações é uma solução para um estado crença b
então ela é também é solução para qualquer subconjunto de b
exemplo: [Suck, Left, Suck] → {5, 7}
[Left] → {1, 3, 5, 7} superconjunto de {5, 7}
podemos descartar {1, 3, 5, 7} se {5, 7} foi gerado
DCA-FEEC-UnicampProfFernandoGomide
![Page 103: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/103.jpg)
1 2 3
4 5 6
7 8
S
4 5
7 8
35
7
5
7
46
8
4
8
S
6
8
3
78 7
2 4
6 8
1 3
5 7
L R
L
R
S
LR
L
R
SS
S S
R
R
L
L
RL
DCA-FEEC-UnicampProfFernandoGomide
![Page 104: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/104.jpg)
– inconveniente: dimensão dos estados crença
exemplo: aspirador 10×10 contém 100 ×2100 ~ 1032 estados físicos
– solução: busca incremental
• obter solução para cada estado físico, um de cada vez
solução deve funcionar para todos os estados
• vantagem: detecta falha rapidamente
• desvantagem: difícil de usar quando não existe uma solução
DCA-FEEC-UnicampProfFernandoGomide
![Page 105: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/105.jpg)
Exemplo 2: busca com observações parciais
� Agente com sensores– ambiente gera percepts
– sensores do agente fornece informação locais
• posição
• sujeita na posição (não em outras posições)
� Definição do problema requer função PERCEPT(s)– determinístico: retorna o perceptrecebido em um estado s
exemplo: PERCEPT ({1}) = [A, Dirty]
– não determinístico: PERCEPTS retorna conjunto de percepts
exemplo: observação (parcial) [A, Dirty] → estado crença
inicial associado {1, 3}
DCA-FEEC-UnicampProfFernandoGomide
![Page 106: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/106.jpg)
� Formulação do problema
ACTIONS, GOAL-TESTP, STEP-COSTP– idêntico ao caso do agente sem sensores
Modelo de transição– transições: estado crença → ação → estado crença
– ocorrem em três estágios
1. predição
2. observação da predição
3. atualização
DCA-FEEC-UnicampProfFernandoGomide
![Page 107: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/107.jpg)
1. Predição
2. Predição da observação
– determina o conjunto de observações o que poderia ser
observado no estado crença previsto
3. Atualização
– determina, para cada perceptpossível, estado crença resultante
),(PREDICTˆ abb =
}ˆ)(PERCEPT:{)ˆ(PERCEPTSPOSSIBLE bsandsoob ∈==−
}̂and)(PERCEPT:{),ˆ(UPDATE bssosobbo ∈===
DCA-FEEC-UnicampProfFernandoGomide
![Page 108: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/108.jpg)
Transição de estado com ação determinística
1
3
2
4
b
Right
2
4
[B, Dirty]
[B, Clean]b̂
bo
DCA-FEEC-UnicampProfFernandoGomide
![Page 109: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/109.jpg)
Transição de estado com ação não determinística
1
3
2
1
3
4
b
Right
2
4
1
3
b̂
bo
[B, Dirty]
[A, Dirty]
[B, Clean]
DCA-FEEC-UnicampProfFernandoGomide
![Page 110: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/110.jpg)
– observações ajudam a diminuir incerteza
– ação/observação determinística
• estados crença para perceptspossíveis diferentes são disjuntos
• estados crença formam uma partição do estado crença previsto
– agregando os três estágios:
|ˆ||| bbo ≤
))},(PREDICT(PERCEPTSPOSSIBLE
)),,(PREDICT(UPDATE:{),(RESULTS
abo
andoabbbab oo
−∈==
DCA-FEEC-UnicampProfFernandoGomide
![Page 111: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/111.jpg)
� Solução do problema
– formular problema: problem
– executarAND_OR_GRAPH_SEARCH (problem)
• busca considera estados crença
• algoritmo verifica estados já gerados
• busca pode ser incremental
– solução é um plano de contingência
DCA-FEEC-UnicampProfFernandoGomide
![Page 112: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/112.jpg)
1
3
5
7
2 4
RightSuck
[A, Clean][B, Clean][B, Dirty]
[Suck, Right, if BState= {6} then Suckelse[]]
DCA-FEEC-UnicampProfFernandoGomide
![Page 113: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/113.jpg)
Agente em ambientes parcialmente observáveis
� Projeto do agente
– similar ao SIMPLE_PROBLEM_SOLVING_AGENT (percept)
• formula o problema
• chama algoritmo busca
• executa ações
� Em ambientes parcialmente observáveis
– solução é um plano condicional
– agente tem que manter o estado crença
– estado crença é mais fácil de ser estimado
DCA-FEEC-UnicampProfFernandoGomide
![Page 114: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/114.jpg)
– se primeiro passo é if -then-else: verificar if e executar then ou else
– atualiza estado crença ao executar ações e receber percepts
– atualização estado crença mais simples porque
• agente não estima/calcula o percept
• agente usa o percept ofornecido pelo ambiente
)),,(PREDICT(UPDATE oabb =′
DCA-FEEC-UnicampProfFernandoGomide
![Page 115: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/115.jpg)
1
3
5
7
5
7
2
6
2
6
4
8
Suck [B, Dirty][A, Clean] Right
)),,(PREDICT(UPDATE oabb =′
kindergarten worldcom sensor local: qualquer local pode ficar sujo, emqualquer instante, a menos que o agente esteja aspirando o ambiente
Ciclo predição-atualização do estado crença
DCA-FEEC-UnicampProfFernandoGomide
![Page 116: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/116.jpg)
Exemplo: localização posição
robô
obstáculos
sensores: 4 sonaresdetectam obstáculosdireção obstáculo: N, S, Wou Eação: Move(posição adjacente aleatória)
Posição atual do robô ?
DCA-FEEC-UnicampProfFernandoGomide
![Page 117: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/117.jpg)
estado inicial: b
DCA-FEEC-UnicampProfFernandoGomide
![Page 118: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/118.jpg)
bo = UPDATE(b, o)
o = NSW
DCA-FEEC-UnicampProfFernandoGomide
![Page 119: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/119.jpg)
ba = PREDICT(bo, Move)
bn = UPDATE(ba, o)
bn = UPDATE(PREDICT(UPDATE(b, NSW), Move), NS)
o = NS
DCA-FEEC-UnicampProfFernandoGomide
![Page 120: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/120.jpg)
4.6 Agentes com busca online
� Agenteonline
– executa ciclos: ação – observação – ação – …
– importante em ambientes:
• dinâmicos, não determinísticos
– necessário em ambientes desconhecidos
• não conhece estados
• não sabe que ações executar
• ações como experimentos de aprendizagem
DCA-FEEC-UnicampProfFernandoGomide
![Page 121: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/121.jpg)
� Conhecimento do agente
– ACTIONS(s) : retorna lista das ações permitidas no estado s
– c(s, a, s') : custo de um passo; só pode ser calculado quando
agente sabe que está em s'
– GOAL-TEST(s)
– RESULT(s, a): determinado somente quando agente está em
s e executa ação a
– Função heurística h(n)
– Objetivo: atingir meta com menor custo, explorar ambiente
DCA-FEEC-UnicampProfFernandoGomide
![Page 122: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/122.jpg)
S
G
1
2
3
1 2 3
S estado inicial
G meta
Exemplo
Ações: UP, Downh(n): distância ManhattanAgente não sabe que da posição (1, 1) e açãoUP → nova posição (1, 2)
DCA-FEEC-UnicampProfFernandoGomide
![Page 123: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/123.jpg)
� Avaliação do agente
– razão competitiva
– pode ser infinita se ações são irreversíveis
– dead-end
– argumento adversário
S A
G
S A
G
DCA-FEEC-UnicampProfFernandoGomide
![Page 124: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/124.jpg)
function ON_LINE_DFS_AGENT (s') returns an actioninputs: s', a percept that identifies the current statepersistent: result, table indexed by state and action, initially empty
untried, table that lists, for each state, actions not yet triedunbacktracked, table that lists, for each state, backtracks not yet tried
if GOAL-TEST(s') then return stopif s' is a new state (not in untried) then untried[s'] ← ACTIONS(s')if s is not null then
result[s,a] ← s'adds to the front ofunbacktracked[s']
if untried[s'] is emptythenif unbacktracked[s'] is emptythen return stopelsea ← an actionb such thatresult[s',b] = POP(unbacktracked[s'])
elsea ← POP(untried[s'] )s ← s'return a
Busca em profundidadeOnline
DCA-FEEC-UnicampProfFernandoGomide
![Page 125: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/125.jpg)
Busca online local e aprendizagem
8 9 2 2 4 3111111 1
8 9 3 2 4 3111111 1
8 9 3 4 4 3111111 1
8 9 5 4 4 3111111 1
8 9 5 5 4 3111111 1
(a)
(b)
(c)
(d)
(e)
DCA-FEEC-UnicampProfFernandoGomide
![Page 126: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/126.jpg)
function LRTA*_AGENT (s') returns an action
inputs: s', a percept that identifies the current statestatic: result, table indexed by state and action, initially empty
H, a table of costs estimates indexed by state, initially emptys, a, the previous state and action, initially null
if GOAL-TEST (s') then return stopif s' is a new state (not in H) then H [s'] ← h (s')if s is not null
result[s,a] ← s'H [s] ← min LRTA*_COST(s,b,result [s,b],H )
b ∈ ACTIONS (s)
a ← actionb in ACTIONS(s') that minimizes LRTA*_COST(s',b,result [s',b],H )s ← s'return a
DCA-FEEC-UnicampProfFernandoGomide
![Page 127: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/127.jpg)
function LRTA*_COST (s, a, s', H) returns a cost estimate
if s' is undefinedthen return h(s)else return c (s, a, s') + H [s']
DCA-FEEC-UnicampProfFernandoGomide
![Page 128: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/128.jpg)
Referências
Pearl, J. Heuristics: Intelligent Search Strategies for Computer Problem Solving,Addison Wesley, Massachusetts, USA, 1984.
Russell, S., Norvig, P. Artificial Intelligence-A Modern Approach, PrenticeHall, New Jersey, USA, 2010.
Luger, G. Artificial Intelligence: Structures and Strategies for Complex ProblemSolving, Addison Wesley, Massachusetts, USA, 2009.
Nilsson, N. Principles of Artificial Intelligence, Tioga, California, USA, 1980.
Winston, P. Artificial Intelligence, 3rd Edition, Addison Wesley, 1993.
DCA-FEEC-UnicampProfFernandoGomide
![Page 129: EA 072 Inteligência Artificial em Aplicações Industriaisgomide/courses/EA072/transp/EA072Estrutu... · if problem .GOAL-TEST (node .STATE) then return SOLUTION( node ) add node](https://reader034.vdocuments.pub/reader034/viewer/2022052420/5a816b877f8b9a24668cf8b7/html5/thumbnails/129.jpg)
Este material refere-se às notas de aula do curso EA 072 InteligênciaArtificial em Aplicações Industriais da Faculdade de Engenharia Elétrica e de Computação da Unicamp. Não substitui o livro texto, as referências recomendadas e nem as aulas expositivas. Este material não pode ser reproduzido sem autorização prévia dos autores. Quando autorizado, seu uso é exclusivo para atividades de ensino e pesquisa em instituições sem fins lucrativos.
Observação
DCA-FEEC-UnicampProfFernandoGomide