Who is Mr Wolf ? Mr Wolf Pesquisa num espaço de estados Resolução de Problemas.

Post on 07-Apr-2016

221 views 2 download

Transcript of Who is Mr Wolf ? Mr Wolf Pesquisa num espaço de estados Resolução de Problemas.

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].