• Nenhum resultado encontrado

GSI010 - Programação Lógica Resolvendo problemas com Programação Lógica Busca informada

N/A
N/A
Protected

Academic year: 2022

Share "GSI010 - Programação Lógica Resolvendo problemas com Programação Lógica Busca informada"

Copied!
18
0
0

Texto

(1)

GSI010 - Programação Lógica

Resolvendo problemas com Programação Lógica Busca informada

(2)

Nesta aula

I Busca informada no espaço de estados

(3)

Busca no espaço de estados

Método

Considerar a existência de umagente, que possuiações para modificar osestados do mundo.

Simplificações

I o estadodo mundo só muda quanda oagentefaz uma ação

I meta do agente é fazer o mundo atingir umestado pré-definido

(4)

Exemplo: O mundo do aspirador

Agente: aspirador-robô

Qual é a melhor forma de aspirar sujeira?

Ações

I entrarSala1

I entrarSala2

I aspirar

Estados do mundo

I sala 1 suja

I sala 1 limpa

I sala 2 suja

I sala 2 limpa

(5)

Exemplo: modelagem

[sala1, limpa, limpa] [sala2, limpa, limpa]

[sala1, limpa, suja] [sala2, limpa, suja]

[sala1, suja, limpa] [sala2, suja, limpa]

[sala1, suja, suja] [sala2, suja, suja]

entrar2 entrar1 entrar2

entrar1 entrar2 entrar1 entrar2 entrar1 aspirar

aspirar

aspirar

aspirar

(6)

Representação de estados

Estados são representados por estruturas Estrutura de estados do Aspirador-robô

I lista com três elementos

I [SalaAgente, Sala1Estado, Sala2Estado]

I SalaAgente pode sersala1ousala2

I Sala1Estado pode serlimpaousuja

I Sala2Estado pode serlimpaousuja

Exemplo: representação

1 estado_inicial([sala1, suja, suja]).

2 meta([_,limpa,limpa]).

3

(7)

Estratégias de busca não informadas

Estratégia descreve

Como fazer para encontrar solução na árvore de busca.

Opções de estratégias não informadas

I busca aleatória

I escolhe aleatoriamente para onde ir

I busca em largura

I explora as possibilidades “um nível por vez”

I busca em profundidade

I explora as possibilidades uma sequência por vez

(8)

Estratégias de busca informadas

Opções de estratégias informadas

I busca pelo menor custo

I usa informação de avaliação das ações realizadas

I busca pela melhor estimativa

I usa estratégia para avaliar aproximadamente boas alternativas

I busca ótima A

I busca melhor solução possível

(9)

Busca pelo menor custo

Custo de ação

I ações podem ter custos

I e.g. gasto de bateria do dispositivo

I tempo/distância de viagem entre cidades etc.

I adicionamos um novo argumento ao predicado ação

acao(Acao, Estado1, Estado2, Custo) :−condicoes, efeitos. 1

Leia-se: para executar aAcaono Estado1 e afetar alterar o estado do mundo paraEstado2 é necessário arcar com oCusto, se as condicoespermitirem, e ocorrendo algunsefeitos colaterais.

(10)

Exemplo de problema com informação

udia

arag 37.7

ituiu 137

prta 84.5

uba 105

capin 36.7

gurin 72.5

cverde 71.3

cflor 74.7

63.6 134

78.1

1 inicial(udia).

2 meta(cverde).

acao(vai(P, Q), P, Q, D):− 3

4 via(P, Q, D).

5 6 via(udia, arag, 37.7).

7 via(udia, ituiu, 137).

8 via(udia, prta, 84.5 ).

9 via(udia, uba, 105 ).

10 via(ituiu, capin, 36.7).

11 via(ituiu, gurin, 72.5).

12 via(gurin, cverde, 63.6 ).

13 via(prta, cverde, 71.3).

14 via(uba, cflor, 74.7).

15 via(cflor, cverde, 134).

16 via(cflor, prta, 78.1 ).

17

(11)

Custo do caminho O caminho de ações

[a1,a2,a3, . . . ,an]tem o custo igual a

n

X

i=1

g(ai) (1) g(ai) é o custo da ação ai

udia

arag 37.7

ituiu 137

prta 84.5

uba 105

capin 36.7

gurin 72.5

cverde 71.3

cflor 74.7

63.6 134

78.1

O custo do caminho[via(udia,uba,105),via(uba,cflor,74.7)] é 105+74.7=179.7

(12)

Busca de menor custo

I garantia do menor custo (mas não menor número de ações)

I se custos são iguais, equivalente a busca em largura

(13)

Exemplo: problema de aritmética

Quais operações aritméticas podemos usar para sair de um número e chegar em outro?

1 inicial(0).

2 meta(10).

acao(incrementa, S1, S2, 1) :−S2isS1+1. 3 acao(decrementa, S1, S2, 1) :−S2isS1−1. 4 acao(duplica, S1, S2, 2) :−S2isS1∗2. 5 acao(desdobra, S1, S2, 2) :−S2isS1/2. 6 acao(inverte, S1, S2, 2) :−S2is−S1. 7

(14)

Exemplo: problema de jogo

Jogo: Street Fighter

I Quais golpes usar para ganhar do adversário?

I Cada golpe usa uma quantidade de tempo.

I Quais golpes vão levar menos tempo?

1 inicial(50).% barra de energia do adversário

2 meta(0).% quando a energia do adversário chegar a 0

acao(socoFraco, S1, S2, 1) :−S2isS1−1. 3 acao(socoForte, S1, S2, 2) :−S2isS1−2. 4 acao(chuteFraco, S1, S2, 3) :−S2isS1−4. 5 acao(chuteForte, S1, S2, 4) :−S2isS1−8. 6 acao(haduken, S1, S2, 10) :−S2isS1/2. 7

(15)

Implementação da busca de menor custo

CominsereOrdenado/3 é possível sempre consultar primeiro aquele com menor custo até o momento.

buscaMenor:− 1

2 inicial(EstadoInicial),

3 buscaMenor([0:EstadoInicial:[]], [], CaminhoMenorCustoAteMeta:Custo),

4 format(’Plano: ~w’, [CaminhoMenorCustoAteMeta]),

5 format(’\nCusto: ~w \n\n’, [Custo]).

6 7 buscaMenor([Custo:EstadoFinal:CaminhoFimInicio|_], _, CaminhoInicioFim:

Custo) :−

8 meta(EstadoFinal), !,

9 reverse(CaminhoFimInicio, CaminhoInicioFim).

10 buscaMenor([CustoAtual:EstadoAtual:Caminho|Folhas], Visitados, Solucao):− 11

12 sucessoresCusto(CustoAtual:EstadoAtual:Caminho, Visitados, Sucessores),

13 insereOrdenado(Sucessores, Folhas, NovoFolhas),

14 union([EstadoAtual], Visitados, UniaoVisitados),

15 buscaMenor(NovoFolhas, UniaoVisitados, Solucao).

16

(16)

1 sucessoresCusto(CustoAtual:EstadoAtual:Caminho, Visitados,

ListaDeSucessores):−

2 findall(CustoNovo:EstadoNovo:[Acao|Caminho],

3 (acao(Acao, EstadoAtual, EstadoNovo, CustoAcao),

4 not(member(EstadoNovo, Visitados)),

5 CustoNovoisCustoAtual+CustoAcao),

6 ListaDeSucessores).

7 insereOrdenado(NovasOpcoes, Caminhos, NovosCaminhos) :− 8

9 append(NovasOpcoes, Caminhos, OpcoesCaminhos),

10 sort(OpcoesCaminhos, NovosCaminhos), !.

11

(17)

Exercício: problema do troco

Uma máquina automática temN1 moedas de 1 centavo,N5 moedas de cinco centavos,N10 moedas de 10 centavos,N25 moedas de 25 centavos,N50 moedas de 50 centavos eN100 moedas de 1 real.

Exercício

Fazer a modelagem (grafo de estados) e codificação do problema para obter moedas para formar um troco deT, colocando um custo maior em oferecer moedas mais escassas e um custo menor em moedas mais frequentes.

Dicas

Se temosN moedas de um determinado tipo, o custo da operação de oferecer essa moeda pode ser 1/N seN >0. Para simplificar a modelagem, reduza o número de moedas apenas após cada troco ter sido realizado.

(18)

Referências

I Slides – Busca no espaço de estados (Parte I) – Prof. Dr.

Silvio do Lago Pereira

I Slides – Busca no espaço de estados (Parte II) – Prof. Dr.

Silvio do Lago Pereira

Referências

Documentos relacionados

seguindo uma sequência de comandos previamente programada para as devidas finalidades. Esses comandos estão escritos em estruturas chamadas de algoritmos. Na construção de um

Fundada em 2001, a 4Linux é líder de mercado em cursos de Linux e open source com números que impressionam: mais de 70.000 alunos treinados, mais de 4.800 empresas atendidas e mais

Na informática, o algoritmo é o "projeto do programa“, ou seja, antes de se fazer um programa (software) na Linguagem de Programação desejada (Pascal, Java, C, Delphi,

Este jogo teria puzzles do estilo sokoban, onde o jogador tem de manipular determinados objetos para resolver problemas e de manipulação espacial, onde todos os

Torna-se necessário referir que a limitação de inserção de conhecimento repetido ao nível do predicado progenitor delimita necessariamente as restantes relações

● Dica: ao utilizar o método puts com as aspas (para escrever textos), dentro das aspas você pode acessar as variáveis com #{IDENTIFICADOR} , trocando IDENTIFICADOR pelo

O seguinte exemplo, composto por 5 comandos em alto nível, representa um algoritmo de extrema complexidade de ser implementado, pois os comandos são muito

• Elabore uma sequência que mova três discos de uma Torre de Hanói, que consiste em três hastes (a-b-c), uma das quais serve de suporte para três discos de tamanhos diferentes