who is mr wolf ? mr wolf pesquisa num espaço de estados resolução de problemas
Post on 07-Apr-2016
221 Views
Preview:
TRANSCRIPT
Who is Mr Wolf ?
Who is Mr Wolf ?
Mr Wolf
Mr Wolf
Mr Wolf
Mr Wolf
Pesquisa num espaço de estados
Resolução de Problemas
Agentes reflexos
Panorâmica
Agentes reflexos Agentes que planeiam e
que antecipam os efeitos das suas acções
Panorâmica
Agentes reflexos Agentes que planeiam e
que antecipam os efeitos das suas acções
Modelo do Mundo/ProblemaGrafo de Estados: uma
abstracção do problema
Panorâmica
Resolução de problemas como uma pesquisa num espaço de estados.
Agentes reflexos Agentes que planeiam e
que antecipam os efeitos das suas acções
Modelo do Mundo/ProblemaGrafo de Estados: uma
abstracção do problema
Panorâmica
Resolução de problemas como uma pesquisa num espaço de estados.
Uma solução é um plano capaz de atingir os objectivos.
Agentes reflexos Agentes que planeiam e
que antecipam os efeitos das suas acções
Modelo do Mundo/ProblemaGrafo de Estados: uma
abstracção do problema
Panorâmica
Formalização de um problema numa pesquisa num grafo
• Espaço de estados• A realidade do problema é abstraída em termos de
estados. Só a informação relevante que muda devido aos operadores de transição é que deve estar inscrita nos estados.
• Transições entre estados• As acções determinísticas e discretas levam de um
estado X a um estado Y, com um determinado custo.
• Estado Inicial • um estado conhecido)
• Teste de estado final (satisfação do objectivo) • (Pode dar-se o caso de não sabermos quais os
estados que satisfazem o nosso objectivo mas sabemos identificar que são finais com um teste de satisfação dos objectivos.
Viajando na Roménia
O problema consiste em encontrar o caminho mais curto desde Arad até Bucarest.
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
• Transições entre estados
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
• Transições entre estados• Ir para a cidade adjacente em que
o custo é o comprimento da Estrada que liga as 2 cidades.
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
• Transições entre estados• Ir para a cidade adjacente em que
o custo é o comprimento da Estrada que liga as 2 cidades.
• Poderíamos ter como custo não a distância mas o tempo ou o combustível gasto ou alguma combinação desses custos.
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
• Transições entre estados• Ir para a cidade adjacente em que
o custo é o comprimento da Estrada que liga as 2 cidades.
• Poderíamos ter como custo não a distância mas o tempo ou o combustível gasto ou alguma combinação desses custos.
• Estado Inicial
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
• Transições entre estados• Ir para a cidade adjacente em que
o custo é o comprimento da Estrada que liga as 2 cidades.
• Poderíamos ter como custo não a distância mas o tempo ou o combustível gasto ou alguma combinação desses custos.
• Estado Inicial • Arad
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
• Transições entre estados• Ir para a cidade adjacente em que
o custo é o comprimento da Estrada que liga as 2 cidades.
• Poderíamos ter como custo não a distância mas o tempo ou o combustível gasto ou alguma combinação desses custos.
• Estado Inicial • Arad
• Estado Final
Esboço de uma formalização do problema Viajando na Roménia
• Espaço de estados• Cidades
• Tamanho do espaço• Nº de cidades = 20
• Transições entre estados• Ir para a cidade adjacente em que
o custo é o comprimento da Estrada que liga as 2 cidades.
• Poderíamos ter como custo não a distância mas o tempo ou o combustível gasto ou alguma combinação desses custos.
• Estado Inicial • Arad
• Estado Final• Bucareste
Formalização em Prolog do problema Viajando na Roménia
Inicial(‘Arad’).
final(‘Bucarest’).
sucessor(Cid1,Cid2,M,C) :-adjacente(Cid1, Cid2, M,C) ;adjacente(Cid2, Cid1, M, C).
% o 3º argumento indica a etiqueta que% identifica o movimento/operadoradjacente(‘Oradea’, ’Zerind’, o-z, 71).adjacente(‘Oradea’, ’Sibiu’, o-s, 151).adjacente(‘Arad’, ’Zerind’, a-z, 75).adjacente(‘Arad’, ‘Timisoara’, a-t,118).adjacente(‘Lugoj’, ’Timisoara’, l-t, 111).adjacente(‘Mehadia’, ’Lugoj’, m-l, 70).adjacente(‘Drobeta’, ‘Craiova’, d-c, 120).adjacente(‘Drobeta’, ’Mehadia’, d-m, 75)....
O Pacman pode mover-se para Norte, Sul, Este e Oeste.
Pacman quer ir até uma determinada posição. Por exemplo uma superPastilha
Quando se move para uma célula com pastilha ou superpastilha estas são ignoradas e os fantasmas são inofensivos, andam pelo jogo sem fazer qualquer mal ao Pacman , que os ignora. Só está interessado em encontrar um caminho.
objectivo
O que representar em cada estado?
Formalização do PacMan quer descobrir um caminho
O que representar em cada estado?
Formalização do PacMan quer descobrir um caminho
Apenas a informação relevante para a resolução do problemae a informação que muda devido aos operadores de transição entre estados.
O que representar em cada estado?
Formalização do PacMan quer descobrir um caminho
Apenas a informação relevante para a resolução do problemae a informação que muda devido aos operadores de transição entre estados.
• Sendo assim, não queremos saber
O que representar em cada estado?
Formalização do PacMan quer descobrir um caminho
Apenas a informação relevante para a resolução do problemae a informação que muda devido aos operadores de transição entre estados.
• Sendo assim, não queremos saber • que cor tem o Pacman, ou os fantasmas,
nem as cores ou tipos de pastilhas
O que representar em cada estado?
Formalização do PacMan quer descobrir um caminho
Apenas a informação relevante para a resolução do problemae a informação que muda devido aos operadores de transição entre estados.
• Sendo assim, não queremos saber • que cor tem o Pacman, ou os fantasmas,
nem as cores ou tipos de pastilhas • as posições das pastilhas ou dos fantasmas
O que representar em cada estado?
Formalização do PacMan quer descobrir um caminho
Apenas a informação relevante para a resolução do problemae a informação que muda devido aos operadores de transição entre estados.
• Sendo assim, não queremos saber • que cor tem o Pacman, ou os fantasmas,
nem as cores ou tipos de pastilhas • as posições das pastilhas ou dos fantasmas• as dimensões do mundo ou as coordenadas
das paredes ou das células navegáveis.
O que representar em cada estado?
Formalização do PacMan quer descobrir um caminho
Apenas a informação relevante para a resolução do problemae a informação que muda devido aos operadores de transição entre estados.
• Sendo assim, não queremos saber • que cor tem o Pacman, ou os fantasmas, nem as cores ou
tipos de pastilhas • as posições das pastilhas ou dos fantasmas• as dimensões do mundo ou as coordenadas das paredes ou
das células navegáveis.
• O que muda é apenas a posição do PacMan
Coordenadas cartesianas
Vamos definir uma grelha de 6 x 30, para representar as células navegáveis ou as paredes.
(1,1)
(1,6)
(30,6)
(30,1)
Um estado:
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados:
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados: nº de células navegáveis ~6x30 – #paredes.
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados: nº de células navegáveis ~6x30 – #paredes.
Estado Inicial:
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados: nº de células navegáveis ~6x30 – #paredes.
Estado Inicial: posição do Pacman
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados: nº de células navegáveis ~6x30 – #paredes.
Estado Inicial: posição do Pacman
Estado Final:
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados: nº de células navegáveis ~6x30 – #paredes.
Estado Inicial: posição do Pacman
Estado Final: célula objectivo
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados: nº de células navegáveis ~6x30 – #paredes.
Estado Inicial: posição do Pacman
Estado Final: célula objective
Transição de estados:
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Um estado: é apenas as coordenadas do PacMan
Tamanho do espaço de estados: nº de células navegáveis ~6x30 – #paredes.
Estado Inicial: posição do Pacman
Estado Final: célula objective
Transição de estados: Move o PacMan para uma célula válida ortogonalmente vizinha (a norte, leste, sul, oeste) da sua posição actual, dentro dos limites do tabuleiro.
Formalização do Pacman quer descobrir um caminho num problema de Pesquisa
Formalização do Pacman quer descobrir um caminho em Prolog
% informação estática que % não faz parte do estado
navegavel((1,1)).navegavel((1,2))....navegavel((30,6)).
% não precisamos de nos preocupar % com os limites do mundo porque % conhecemos as células navegáveis
viz((X,Y),(NX,Y),oeste) :-NX is X – 1.
viz((X,Y),(NX,Y),leste) :-NX is X + 1.
viz((X,Y),(X,NY),norte) :-NY is Y – 1.
viz((X,Y),(X,NY),sul) :-NY is Y + 1.
inicial((1,3)).
final((30,3)).
suc(Est,NEst,Mov,1) :-viz(Est,Nest,Mov),navegavel(NE).
Formalização do Pacman quer descobrir um caminho em Prolog (alternativa)
% informação estática que % não faz parte do estado
parede((2,1)).parede((2,2))....
% temos de verificar os limites% do labirinto.viz((X,Y),(NX,Y),oeste) :-NX >1, NX is X – 1.
viz((X,Y),(NX,Y),leste) :-NX < 30, NX is X + 1.
viz((X,Y),(X,NY),norte) :-NY > 1, NY is Y – 1.
viz((X,Y),(X,NY),sul) :-NY < 6, NY is Y + 1.
Inicial((1,3)).
final((30,3)).
% todos os sucs têm custo 1suc(Est,NEst,Mov,1) :-
viz(Est,NEst,Mov),\+ parede(NEst).
Vamos declarar as coordenadas das paredesinteriores e não as células navegáveis.
O Pacman pode mover-se para Norte, Sul, Este e Oeste.
Novo Problema: Pacman quer comer todas as pastilhas
Quando se move para uma célula com pastilha, esta é “papada”
Espaço de estados
Problema de Pesquisa
Operador de sucessor
Um estado inicial e um teste de satisfação do objectivo
Uma solução é uma sequência de acções (um plano) que transformam o estado inicial num estado final (satisfaz objectivo)
PacMan quer comer todas as pastilhas
O que representar em cada estado?
Formalização do PacMan quer comer todas as pastilhas
O que representar em cada estado?
Formalização do PacMan quer comer todas as pastilhas
• O que muda e é relevante é:• a posição do PacMan e
• a informação sobre as pastilhas, se foram ou não comidas.
Vamos arranjar um sistema de coordenadas para poder com precisão definir a posição do Pacman e as posiçõesque têm pastilha.
O que representar em cada estado?1 2 3
1 2 3
Vamos arranjar um sistema de coordenadas para poder com precisão definir a posição do Pacman e as posiçõesque têm pastilha.
O que representar em cada estado?
O pacman é representado pelas coordenadas da célula que ocupa
1 2 31 2 3
Vamos arranjar um sistema de coordenadas para poder com precisão definir a posição do Pacman e as posiçõesque têm pastilha.
O que representar em cada estado?
O pacman é representado pelas coordenadas da célula que ocupa
Um vector de booleans para cada pastilha.O 1º elemento do vector seria a pastilha no topo mais à esquerda e o ultimo a pastilha de fundo mais à direita. (função que mapeia as coordenadas de uma posição com pastilha num índice do vector).
1 2 31 2 3
Vamos arranjar um sistema de coordenadas para poder com precisão definir a posição do Pacman e as posiçõesque têm pastilha.
O que representar em cada estado?
O pacman é representado pelas coordenadas da célula que ocupa
Um vector de booleans para cada pastilha.O 1º elemento do vector seria a pastilha no topo mais à esquerda e o último a pastilha de fundo mais à direita. (função que mapeia as coordenadas de uma posição com pastilha num índice do vector).
Teremos então um duplo (PacMan, Pastilhas) em que o Pacman é dado pelo par (X,Y) das suas coordenadas cartesianas e em que Pastilhas é um vector de booleans.
1 2 31 2 3
Um estado: é um duplo (PacMan, Pastilhas)Tamanho do espaço de estados: ~ 9 X 28
Estado Inicial: ((2,2),#(true,true,true,true,true,true,true,true))
Estado Final: (qualquer, #(false,false,false,false,false,false,false,false))
Transição de estados:Move o PacMan para uma célula válida ortogonalmente vizinha (a norte, leste, sul, oeste) da sua posição actual, dentro dos limites do tabuleiro.Se a nova posição contiver uma pastilha então actualiza o vector de booleans.
Formalização do Pacman num problema de Pesquisa
Um estado: é um duplo (PacMan, Pastilhas) em que as Pastilhs é um conjunto de coordenadas das células com pastilha.Tamanho do espaço de estados: ~ 9 X 28 (na verdade são menos)
Estado Inicial: ((2,2),{(1,1),(1,2),(1,3),(2,1),(2,3),(3,1),(3,2),(3,3)})
Estado Final: (qualquer, {})
Transição de estados:Move o PacMan para uma célula válida ortogonalmente vizinha (a norte, leste, sul, oeste) da sua posição actual, dentro dos limites do tabuleiro.Se a nova posição contiver uma pastilha então remove a nova posição da lista actual de coordenadas das pastilhas.
Formalização alternativa do Pacman num problema de Pesquisa
% um estado é dado por uma par com as coordenadas do Pacman e % a lista das coordenadas das pastilhas.
inicial( ((2,2), [(1,1),(1,2),(1,3),(2,1),(2,3),(3,1),(3,2),(3,3)]) ).
% não interessa onde está o Pacman mas apenas que não restam pastilhasfinal( (_,[]) ).
suc((Pacman,Pastilhas), (NovoPacman,NovasPastilhas),Movimento,1) :-move(Pacman, NovoPacman, Movimento),actualizaPastilhas(Pastilhas, Pacman, NovasPastilhas).
Modelização do Pacman em Prolog
move((X,Y),(NX,Y),oeste) :-X > 1, NX is X – 1.
move((X,Y),(NX,Y),leste) :-X < 3, NX is X + 1.
move((X,Y),(X,NY),norte) :-Y > 1, NY is Y – 1.
move((X,Y),(X,NY),sul) :-Y < 3, NY is Y + 1.
Modelização do Pacman em Prolog (cont.)
% se existir pastilha remove-aactualizaPastilhas((X,Y),Pastilhas,Novas) :-
select((X,Y),Pastilhas,Novas).
% mantém intactas se a nova posição não % contiver pastilha.actualizaPastilhas((X,Y),Pastilhas,Pastilhas).
\+ member((X,Y),Pastilhas).
Problema da Torre de Hanoi
A Torre de Hanói é um quebra-cabeça inventado ou divulgado por Édouard Lucas em 1883 e que consiste numa base contendo 3 pinos, em cada um dos quais podem ser dispostos discos, uns sobre os outros, por ordem crescente de diâmetro, (de cima para baixo).
O problema consiste em passar todos os discos de um pino para outro, por exemplo do pino da esquerda para o do centro, sem que nunca um disco maior fique em cima de um menor..
Formalização gráfica do Problema da Torre de Hanoi
Estados:
Transição entre estados:(custos homogéneos)
Estado inicial: Estado final:
Tamanho do Espaço: 27
O Grafo de Estados das Torres de Hanoi
Inicial Final
Solução do Problema dasTorres de Hánoi
Modelização do Problema da Torre de Hánoi
Modelização do Problema da Torre de Hánoi
Estados:
Modelização do Problema da Torre de Hánoi
Estados:
Estado inicial:
Uma lista de 3 pinos em que cada pino é representado por uma pilha de números.1 para o disco menor, 2 para o do meio e 3 para o maior.
Modelização do Problema da Torre de Hánoi
Estados: Uma lista de 3 pinos em que cada pino é representado por uma pilha de números.1 para o disco menor, 2 para o do meio e 3 para o maior.
Estado inicial:
Modelização do Problema da Torre de Hánoi
Estados: Uma lista de 3 pinos em que cada pino é representado por uma pilha de números.1 para o disco menor, 2 para o do meio e 3 para o maior.
Estado inicial: ([1,2,3],[],[])
Modelização do Problema da Torre de Hánoi
Estados: Uma lista de 3 pinos em que cada pino é representado por uma pilha de números.1 para o disco menor, 2 para o do meio e 3 para o maior.
Estado inicial: ([1,2,3],[],[])
Estado final:
Modelização do Problema da Torre de Hánoi
Estados: Uma lista de 3 pinos em que cada pino é representado por uma pilha de números.1 para o disco menor, 2 para o do meio e 3 para o maior.
Estado inicial: ([1,2,3],[],[])
Estado final: ([],[],[1,2,3])
Modelização do Problema da Torre de Hánoi
Estados: Uma lista de 3 pinos em que cada pino é representado por uma pilha de números.1 para o disco menor, 2 para o do meio e 3 para o maior.
Estado inicial: ([1,2,3],[],[])
Estado final: ([],[],[1,2,3])
Transição entre estados:(custos homogéneos)
Modelização do Problema da Torre de Hánoi
Estados: Uma lista de 3 pinos em que cada pino é representado por uma pilha de números.1 para o disco menor, 2 para o do meio e 3 para o maior.
Estado inicial: ([1,2,3],[],[])
Estado final: ([],[],[1,2,3])
Transição entre estados: desempilha um dos discos e empilha-o num dos pinos livres ou numa pilha com o topo maior.
Modelização em Prolog do Problema da Torre de Hánoi
Modelização em Prolog do Problema da Torre de Hánoi
Inicial(([1,2,3],[],[])).
final(([],[],[1,2,3])).
transfere([P|R],[],R,[P]).
transfere([P|R],[Q|S],R,[P,Q|S]) :- P < Q.
suc((P1,P2,P3),(NP1,NP2,P3),transf(1,2),1). transfere(P1,P2,NP1,NP2).
suc((P1,P2,P3),(NP1,P2,NP3),transf(1,3),1). transfere(P1,P3,NP1,NP3).
suc((P1,P2,P3),(P1,NP2,NP3),transf(2,3),1). transfere(P2,P3,NP2,NP3).
suc((P1,P2,P3),(NP1,NP2,P3),transf(2,1),1). transfere(P2,P1,NP2,NP1).
suc((P1,P2,P3),(NP1,P2,NP3),transf(3,1),1). transfere(P3,P1,NP3,NP1).
suc((P1,P2,P3),(P1,NP2,NP3),transf(3,2),1). transfere(P3,P2,NP3,NP2).
Modelização em Prolog do Problema da Torre de Hánoi (2ª versão)
Inicial(((e,[1,2,3]),(c,[]),(d,[]))).
final(((e[]),(c,[]),(d,[1,2,3]))).
transfere([P|R],[],R,[P]).
transfere([P|R],[Q|S],R,[P,Q|S]) :-P < Q.
suc(Pinos,NovosPinos,transf(X,Y),1).select((X1,P1),Pinos,Pr),select((X2,P2),Pr,Prr),transfere(P1,P2,NP1,NP2),NovosPinos = [(X1,NP1),(X2,NP2)|
Prr].
top related