Busca no espaço de estados (parte II) Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo
Estratégias de busca: recordando... Uma estratégia de busca especifica em que ordem devemos visitar os nós da árvore de busca para achar uma solução As principais estratégias de busca podem ser divididas em dois grupos: busca não-informada: as estratégias neste grupo não dispõem de informação que possibilite a escolha do nó mais promissor para ser visitado em cada instante. busca aleatória busca em largura busca em profundidade busca informada: as estratégias neste grupo dispõem de informação que possibilitam a escolha do nó mais promissor para ser visitado em cada instante. busca pelo menor custo busca pela melhor estimativa busca ótima (A*) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 2
Busca informada busca pelo menor custo busca pela melhor estimativa busca ótima (A*)
Custo de ação Em muitos problemas de busca, as ações podem ter custos que refletem a dificuldade que o agente tem em executá-las. Este custo pode representar uma quantia de dinheiro, tempo, distância, etc. Para que o custo de uma ação possa ser levado em conta durante a busca, precisamos adicioná-lo como um novo argumento na especificação das ações. Representação de ações com custos ação(α,e 1,e 2,g) :- β. onde: α é o identificador da ação e 1 é o estado em que o mundo se encontra antes da execução da ação α e 2 é o estado em que o mundo fica após a execução da ação α g é o custo de executar a ação α β é uma especificação das precondições e/ou efeitos da ação α Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 4
Custo de ação No problema das rotas, as ações do agente permitem seu deslocamento de um ponto ao outro do mapa e seus custos representam as distâncias percorridas. Exemplo 1. Problema das rotas (versão 1) Mapa de vias inicial(a). meta(j). ação(vai(p,q) vai(p,q),p,q,d),p,q,d) :- via(p,q,d). via(a,b,4.0). via(a,d,5.8). via(a,e,3.2). via(a,h,7.0). via(b,c,3.2). via(c,f,4.0). via(d,c,2.8). via(d,j,5.8). via(e,g,2.2). via(f,i,3.2). via(g,j,3.0). via(h,j,2.2). via(i,d,5.1). via(i,j,4.0). via(j,a,8.2). 3.2 B 4 A C 2.8 3.2 4 D 5.8 E 2.2 7 F 5.1 G 8.2 3.2 5.8 3 H I 4 J 2.2 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 5
Custo de caminho Custo de caminho Mapa de vias quando as ações têm custo, o custo de um caminho [a 1, a 2,..., a n ] é onde g(a i ) é o custo da ação a i. 3.2 B 4 A C 2.8 3.2 5.8 4 D E 2.2 7 F 5.1 G 8.2 3.2 5.8 3 H I 4 J 2.2 Exemplo 2. Custo de caminho O custo do caminho [vai(a,h) vai(a,h),vai(h,j) vai(h,j) vai(h,j)] é 7 + 2.2 2.2 = 9.2 Numa árvore de busca, o custo de uma folha é o custo do caminho da raiz até ela. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 6
Busca pelo menor custo Na busca pelo menor custo em cada instante, expande-se uma das folhas que tenha custo mínimo 0:a vai(a,b) vai(a,d) vai(a,e) vai(a,h) 4.0:b 5.8:d 3.2:e 7.0:h vai(b,c) vai(d,c) vai(d,j) vai(e,g) vai(h,j) 7.2:c 8.6:c 11.6:j 5.4:g 9.2:j vai(c,f) vai(g,j) 11.2:f Solução: [vai(a,e),vai(e,g),vai(g,j)] 8.4:j Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 7
Busca pelo menor custo A busca pelo menor custo garante encontrar uma solução de custo mínimo (não necessariamente com menos passos) se as ações têm custo uniforme (todos iguais), esta busca funciona como a busca em largura Folhas de maior custo Folha de custo mínimo nós ainda não explorados Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 8
Busca pelo menor custo Exemplo 3. Implementação de busca pelo menor custo busca_menor_custo :- inicial(e), busca_menor_custo([0:e:[]],[],p:g), format('~nplano: ~w',[p]), format('~ncusto: ~w~n~n',[g]). busca_menor_custo([ ([G:E:C _],_,P:G) :- meta(e),!, reverse(c,p). busca_menor_custo([ ([G:E:C F],V,P) :- sucessoresg(g:e:c,v,s), insereordenado(s,f,nf), union([e],v,nv), busca_menor_custo(nf,nv,p). Ordenando as folhas pelo valor de g(s), garantimos escolher a folha de menor custo Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 9
Busca pelo menor custo Exemplo 3. Implementação de busca pelo menor custo (continuação) sucessoresg(g:e:c,v,s) :- findall(g1:n:[a C],(ação(A,E,N,G2), not(member member(n,v)), G1 is G+G2),S). insereordenado(s,f,nf) :- append(s,f,r), sort(r,nf),!. Exercício 1. Teste de busca pelo menor custo Considerando a especificação de ações do problema das rotas (versão 1), encontre uma solução de custo mínimo para os seguintes problemas: Ir de A até J Ir de J até H Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 10
Busca pelo menor custo Exercício 2. O problema de aritmética Resolva o problema especificado a seguir usando busca pelo menor custo: inicial(0). meta(10). ação(inc inc,s1,s2,1) :- S2 is S1+1. ação(dec dec,s1,s2,1) :- S2 is S1-1. 1. ação(dup dup,s1,s2,2) :- S2 is S1*2. ação(div div,s1,s2,2) :- S2 is S1//2. ação(inv inv,s1,s2,2) :- S2 is -S1. Exercício 3. Outros problemas de aritmética Resolva os problemas de aritmética a seguir usando busca pelo menor custo: Transformar 10 em 0 Transformar 7 em 1 Transformar -7 em 1 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 11
Busca pelo menor custo Exercício 4. O problema das fichas O problema das fichas consiste num tabuleiro com cinco posições e apenas quatro fichas. O objetivo é posicionar as duas fichas azuis à esquerda e as duas fichas vermelhas à direita. As ações possíveis são da forma mij, sendo i a posição atual da ficha e j a nova posição para a qual ela é movida (que deve estar livre). Se i e j são adjacentes, o custo da ação é 1; caso contrário, o custo da ação é igual ao dobro do número de posições saltadas pela ficha movida. ação(m21 m21,[,[b,a,b,c,d],[a,,a,b,c,d],[a,b,b,c,d],1).,b,c,d],1). ação(m31 m31,[,[b,a,b,c,d],[b,a,,a,b,c,d],[b,a,b,c,d],2).,c,d],2). ação(m41 m41,[,[b,a,b,c,d],[c,a,b,,a,b,c,d],[c,a,b,b,d],4).,d],4). ação(m51 m51,[,[b,a,b,c,d],[d,a,b,c,,a,b,c,d],[d,a,b,c,b],6). ],6). Especifique as ações para este problema e resolva-o usando busca pelo menor custo. inicial([v,b,a,v,a]) 1 2 3 4 5 1 2 3 4 5 meta([a,a,b,v,v]) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 12
Função heurística Função heurística é uma função h que estima o custo mínimo de um caminho (desconhecido) que leva de um determinado estado corrente s a um estado meta s. inicial corrente meta s 0 s s o custo exato do caminho já percorrido é g(s) o custo mínimo estimado do caminho que falta percorrer é h(s) Seja h* uma função que calcula o custo mínimo exato de um caminho que leva de um estado corrente s a um estado meta s. Uma função heurística h é admissível se, para todo estado s, temos h(s) h*(s). Particularmente, se s é um estado meta, devemos ter h(s) = 0. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 13
Função heurística (distância de Manhattan) Exemplo 4. Função heurística admissível O problema do quebra-cabeça de oito peças consiste em encontrar uma seqüência de movimentos que transforme um estado inicial s num estado meta s. Uma heurística admissível bastante conhecida para este problema é a chamada distância de Manhattan. Esta heurística estima o custo mínimo do caminho a ser percorrido de um estado corrente s a um estado meta s, calculando a soma das distâncias entre as posições que as peças ocupam em s e em s. h(s 1 ) = d 1 (2) + d 1 (3) + d 1 (4) = 1+1+1 = 3 h(s 2 ) = d 2 (2) + d 2 (3) + d 2 (4) + d 2 (5) = 1+1+1+1+1 = 5 Esta heurística é admissível porque as peças não podem se mover na diagonal. Sucessor mais promissor? s 1 3 4 8 2 5 7 6 s 1 s 2 1 3 4 8 2 7 6 5 s 1 2 3 8 4 7 6 5 1 3 4 8 2 5 7 6 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 14
Função heurística (distância em linha reta) Exemplo 5. Problema das rotas (versão 2) inicial(a). meta(j). ação(vai(p,q) vai(p,q),p,q,d),p,q,d) :- via(p,q), dist(p,q,d). h(s,h) :- meta(m), dist(s,m,h). via(a,b). via(a,d). via(a,e). via(a,h). via(b,c). via(c,f). via(d,c). via(d,j). via(e,g). via(f,i). via(g,j). via(h,j). via(i,d). via(i,j). via(j,a). dist(p,q,d) :- pos(p,xp,yp), pos(q,xq,yq), D is sqrt((xp ((Xp-Xq)^2 Xq)^2 + (Yp-Yq)^2). Yq)^2). pos(a,1,2). pos(b,1,6). pos(c,2,9). pos(d,4,7). pos(e,4,3). pos(f,6,9). pos(g,6,4). pos(h,8,2). pos(i,9,8). pos(j,9,4). Exercício 5. Heurística Calcule a heurística para cada localização do mapa a abaixo. Mapa com coordenadas 9 C F 8 7 6 5 4 3 2 1 B A D E 1 2 3 4 5 6 7 8 9 G H I J Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 15
Busca heurística Um método de busca heurístico é um método que usa a estimativa fornecida por uma função heurística h para escolher a folha mais promissora (i.e., mais próxima a um estado meta) a ser expandida em cada instante da busca. De acordo com esta definição, embora o método de busca pelo menor custo seja um método de busca informada (pois utiliza informação sobre o custo das ações para escolher a folha mais promissora a ser expandida), ele não é um método heurístico (pois a informação que ele tem não serve para orientar a busca em direção à meta). A seguir, apresentamos dois métodos de busca heurística: busca pela melhor estimativa busca ótima (A*) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 16
Busca pela melhor estimativa Na busca pela melhor estimativa em cada instante, expande-se uma das folhas que tenha a melhor estimativa (heurística) 8.2:a vai(a,b) vai(a,d) vai(a,e) vai(a,h) 8.2:b 5.8:d 5.1:e 2.2:h vai(h,j) Solução: [vai(a,h),vai(h,j)] 0.0:j Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 17
Busca pela melhor estimativa A busca pelo menor custo minimiza o comprimento do caminho já percorrido, a partir do estado inicial, até um estado corrente. Conseqüência: encontra uma solução de custo mínimo. inicial corrente meta s 0 s s busca pelo menor custo busca pela melhor estimativa A busca pela melhor estimativa minimiza o comprimento estimado do caminho que ainda falta percorrer, do estado corrente, até um estado meta. Conseqüência: encontra uma solução rapidamente. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 18
Busca pela melhor estimativa Exemplo 6. Implementação de busca pela melhor estimativa busca_melhor_estimativa :- inicial(e), busca_melhor_estimativa([_:0:e:[]],[],p:g), format('~nplano: ~w',[p]), format('~ncusto: ~w~n~n',[g]). busca_melhor_estimativa([ ([_:G:E:C _],_,P:G) :- meta(e),!, reverse(c,p). busca_melhor_estimativa([ ([_:G:E:C F],V,P) :- sucessoresh(g:e:c,v,s), insereordenado(s,f,nf), union([e],v,nv), busca_melhor_estimativa(nf,nv,p). Ordenando as folhas pelo valor de h(s), garantimos escolher a folha de melhor estimativa Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 19
Busca pela melhor estimativa Exemplo 6. Implementação de busca pela melhor estimativa (continuação) sucessoresh(g:e:c,v,s) :- findall(h:g1:n:[a C],(ação(A,E,N,G2), not(member member(n,v)), h(n,h), G1 is G+G2),S). insereordenado(s,f,nf) :- append(s,f,r), sort(r,nf),!. Exercício 6. Teste de busca pela melhor estimativa Usando busca pela melhor estimativa, encontre uma solução para a segunda versão do problema das rotas. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 20
Busca pela melhor estimativa Exercício 7. Heurística para o problema das fichas O número de peças fora do lugar desejado pode ser usado como heurística no problema das fichas. h(s,h) :- meta(m), dif(s,m,h),!. dif([],[],0) :-!. dif([b A],[_ B],D) :-!, dif(a,b,d). dif([x A],[X B],D) :-!, dif(a,b,d). dif([_ A],[_ B],D) :-!, dif(a,b,r), D is R+1. Use esta heurística para resolver o problema, com o algoritmo de busca pela melhor estimativa. inicial([v,b,a,v,a]) 1 2 3 4 5 1 2 3 4 5 meta([a,a,b,v,v]) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 21
Busca ótima (ou A*) Na busca ótima (ou A*) em cada instante, expande-se uma das folhas que tenha a menor soma de custo e heurística. 8.2:0.0:a vai(a,b) vai(a,d) vai(a,e) vai(a,h) 8.2:4.0:b 5.8:5.8:d 5.1:3.2:e 2.2:7.0:h vai(e,g) 3.0:5.4:g vai(g,j) Solução: [vai(a,e),vai(e,g),vai(g,j)] 0.0:8.4:j Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 22
Busca ótima (ou A*) A busca pelo menor custo encontra uma solução de custo mínimo. A busca pela melhor estimativa encontra uma solução rapidamente. inicial corrente meta s 0 s s menor custo minimiza g(s) melhor estimativa minimiza h(s) busca ótima minimiza g(s)+h(s) A busca ótima (ou A*) encontra uma solução de custo mínimo rapidamente. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 23
Busca ótima (ou A*) Exemplo 7. Implementação de busca ótima busca_ótima :- inicial(e), busca_ótima([_:_:0:e:[]],[],p:g), format('~nplano: ~w',[p]), format('~ncusto: ~w~n~n',[g]). busca_ótima([ ([_:_:G:E:C _],_,P:G) :- meta(e),!, reverse(c,p). busca_ótima([ ([_:_:G:E:C F],V,P) :- sucessoresf(g:e:c,v,s), insereordenado(s,f,nf), union([e],v,nv), busca_ótima(nf,nv,p). Ordenando as folhas pelo valor de f(s), garantimos escolher a folha de menor g(s)+h(s) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 24
Busca ótima (ou A*) Exemplo 7. Implementação de busca ótima (continuação) sucessoresf(g:e:c,v,s) :- findall(f:h:g1:n:[a C],(ação(A,E,N,G2), not(member member(n,v)), h(n,h), G1 is G+G2, F is H+G1), S). insereordenado(s,f,nf) :- append(s,f,r), sort(r,nf),!. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 25
Busca ótima (ou A*) Exercício 8. Teste de busca ótima Considerando a segunda versão do problema das rotas, use busca ótima para resolver os seguintes problemas: Encontrar uma rota de A até J. Encontrar uma rota de J até A. 3 9 8 7 6 5 4 B C D E F G I J 2 A 1 H 1 2 3 4 5 6 7 8 9 1 2 3 4 5 1 2 3 4 5 Exercício 9. Teste de busca ótima Considerando a especificação de ações para o problema das fichas, use busca ótima para encontrar uma solução para o problema ilustrado na figura ao lado. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 26
Algoritmo de busca generalizado Exemplo 8. Algoritmo de busca generalizado busca(t) :- inicial(e), busca(t,[_:_:0:e:[]],[],p:g), tipo(t,n), format(' ('~ntipo ~ntipo.: ~w',[n]), format(' ('~nplano ~nplano: ~w',[p]), format(' ('~ncusto ~ncusto: ~w~n~n w~n~n',[g]). busca(_,[_:_:g:e:,[_:_:g:e:c _ C _],_,P:G) :- meta(e),!, reverse(c,p). busca(t,[_:_:g:e:,[_:_:g:e:c F C F], ],V,P),P) :- sucessores(t,g:e:c,v,s), insere(t,s,f,nf), union([e],v,nv), busca(t,nf,nv,p). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 27
Algoritmo de busca generalizado Exemplo 8. Algoritmo de busca generalizado (continuação) sucessores(t,g1:e:c,v,r) :- findall(f:h:g:s:[a C], (ação(a,e,s,g2), not(member member(s,v)), h(s,h), G is G1+G2, (T=4 -> F is G ;T=5 -> F is H ;T=6 -> F is G+H ; F is 0)),R). insere(1,s,f,nf) :- append(s,f,r), length(r,l), embaralha(l,r,nf),!. insere(2,s,f,nf) :- append(f,s,nf),!. insere(3,s,f,nf) :- append(s,f,nf),!. insere(_,s,f,nf) :- append(s,f,r), sort(r,nf),!. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 28
Algoritmo de busca generalizado Exemplo 8. Algoritmo de busca generalizado (continuação) embaralha(0,f,f) :-!. embaralha(l,f,[x NF]) :- N is random(l), nth0(n,f,x), delete(f,x,r), M is L-1, embaralha(m,r,nf),!. tipo(1,aleatória). tipo(2,largura). tipo(3,profundidade). tipo(4,menor_custo). tipo(5,melhor_estimativa). tipo(6,ótima). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 29
Algoritmo de busca generalizado Exercício 10. Teste do algoritmo de busca generalizado Para cada um dos problemas a seguir: problema das rotas (versão 2) problema das fichas faça as consultas abaixo e analise os resultados obtidos:?- busca(1).?- busca(2).?- busca(3).?- busca(4).?- busca(5).?- busca(6). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 30
Representações sucintas hipótese do mundo fechado representação sucinta de estados representação sucinta de ações busca generalizada
Hipótese do mundo fechado A hipótese do mundo fechado assume que aquilo que não é explicitamente declarado como verdadeiro é falso permite que os estados do mundo sejam representados de forma mais concisa os fatos verdadeiros são declarados por meio de fluentes Fluente Significado C A B clear(x) on(x,y) ontable(x) bloco X está livre bloco X está sobre o bloco Y bloco X está sobre a mesa Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 32
Representação sucinta de estados Estados são representados por conjuntos de fluentes Fluente Significado C A B A B C clear(x) on(x,y) ontable(x) bloco X está livre bloco X está sobre o bloco Y bloco X está sobre a mesa Exemplo 9. Estado inicial e meta do problema de Sussman (Mundo dos Blocos) inicial([ ([clear(b) clear(b),clear(c) clear(c),on(c,a) on(c,a),ontable(a) ontable(a),ontable(b) ontable(b)]). meta(s) :- subset([on(a,b) on(a,b),on(b,c) on(b,c)],s). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 33
Representação sucinta de ações Exemplo 10. Ações para o mundo dos blocos ação(stack(x,y) stack(x,y),e,s,1),e,s,1) :- member(ontable(x), ontable(x),e), member(clear(x) clear(x),e), member(clear(y) clear(y),e), X\=Y =Y, union(e,[on(x,y) on(x,y)],s1), subtract(s1,[ontable(x) ontable(x),clear(y) clear(y)],s). ação(unstack(x,y) unstack(x,y),e,s,1),e,s,1) :- member(clear(x) clear(x),e), member(on(x,y) on(x,y),e),,e), union(e,[ontable(x) ontable(x),clear(y) clear(y)],s1), subtract(s1,[on(x,y) on(x,y)],s). ação(move(x,y) move(x,y),e,s,1),e,s,1) :- member(clear(x) clear(x),e), member(clear(y) clear(y),e), X\=Y =Y, member(on(x,z) on(x,z),e),,e), Y\=Z =Z, union(e,[on(x,y) on(x,y),clear(z) clear(z)],s1), subtract(s1,[on(x,z) on(x,z),clear(y) clear(y)],s). precondições efeito positivo efeitos negativos Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 34
Busca com representações sucintas Exemplo 11. Algoritmo de busca com representações sucintas busca(t) :- inicial(e), busca(t,[_:_:0:e:[]],[],p:g), tipo(t,n), format(' ('~ntipo ~ntipo.: ~w',[n]), format(' ('~nplano ~nplano: ~w',[p]), format(' ('~ncusto ~ncusto: ~w~n~n w~n~n',[g]). busca(_,[_:_:g:e:,[_:_:g:e:c _ C _],_,P:G) :- meta(e),!, reverse(c,p). busca(t,[_:_:g:e:,[_:_:g:e:c F C F], ],V,P),P) :- sucessores(t,g:e:c,v,s), insere(t,s,f,nf), adiciona(e,v,nv), busca(t,nf,nv,p). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 35
Busca com representações sucintas Exemplo 11. Algoritmo de busca com representações sucintas (continuação) sucessores(t,g1:e:c,v,r) :- findall(f:h:g:s:[ (F:H:G:S:[A C A C], (ação(a,e,s,g2), not(pertence pertence(s,v)), h(s,h), G is G1+G2, (T=4 -> F is G ;T=5 -> F is H ;T=6 -> F is G+H ; F is 0)),R). insere(1,s,f,nf) :- append(s,f,r), length(r,l), embaralha(l,r,nf),!. insere(2,s,f,nf) :- append(f,s,nf),!. insere(3,s,f,nf) :- append(s,f,nf),!. insere(_,s,f,nf) :- append(s,f,r), sort(r,nf),!. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 36
Busca com representações sucintas Exemplo 11. Algoritmo de busca com representações sucintas (continuação) embaralha(0,f,f) :-!. embaralha(l,f,[ (L,F,[X NF X NF]) :- N is random(l), nth0(n,f,x), delete(f,x,r), M is L-1, embaralha(m,r,nf),!. pertence(x,s) :- member(y,s), subset(x,y),!. adiciona(x,a,a) :- pertence(x,a),!. adiciona(x,a,[ (X,A,[X A X A]). tipo(1,aleatória). tipo(2,largura). tipo(3,profundidade). tipo(4, (4,menor_custo menor_custo). tipo(5, (5,melhor_estimativa melhor_estimativa). tipo(6,ótima). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 37
Busca com representações sucintas Exercício 11. Problema de Sussman Use o algoritmo de busca com representações sucintas para encontrar uma solução para o problema de Sussman especificado no Exemplo 8. Defina h(_,0). Exercício 12. Outros problemas no mundo dos blocos Especifique e encontre soluções para os problemas a seguir: D C B A A C B D A C B D A C B D Usando time/1 time/1, compare os tempos de busca em largura e profundidade. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 38
Busca com representações sucintas Exercício 13. Mundo do aspirador simplificado Especifique as ações para o mundo do aspirador simplificado, usando o fluente em(x) para denotar que o aspirador está na sala X e o fluente limpa(x) para denotar que a sala X está limpa. Em seguida, teste sua especificação para encontrar uma solução para o problema em que: Estado inicial = aspirador está na sala 1 e as duas salas estão sujas Estado meta = as duas salas estão limpas e não importa onde esteja o aspirador Heurística nula: h(_,0). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 39
Busca com representações sucintas Exercício 14. Quebra-cabeça de oito peças (inicial e meta) inicial([p( ([p(2,0,0), p(5,0,1), p(6,0,2), p(1,1,0), p(-,1,1), p(3,1,2), p(8,2,0), p(4,2,1), p(7,2,2)]). meta(s) :- subset([p( ([p(1,0,0), p(2,0,1), p(3,0,2), p(8,1,0), p(-,1,1), p(4,1,2), p(7,2,0), p(6,2,1), p(5,2,2)],s). 2 5 6 1 3 8 4 7 1 2 3 8 4 7 6 5 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 40
Busca com representações sucintas Exercício 14. Quebra-cabeça de oito peças (ações) ação(a,e,s,1) :- member(p( (p(-,x1,y1),e), novapos(a,x1,y1,x2,y2), subtract(e,[p( (E,[p(-,X1,Y1),p(N,X2,Y2)],S1),,X1,Y1),p(N,X2,Y2)],S1), union([p( ([p(-,x2,y2),p(n,x1,y1)],s1,s). novapos(up up,x1,y,x2,y) :- X1>0, X2 is X1-1. 1. novapos(lt lt,x,y1,x,y2) :- Y1>0, Y2 is Y1-1. 1. novapos(rt rt,x,y1,x,y2) :- Y1<2, Y2 is Y1+1. novapos(dn dn,x1,y,x2,y) :- X1<2, X2 is X1+1. h([],0) :-!. h([p( ([p(-,_,_) R],H) :- h(r,h),!. h([p(n,x,y) R],H) :- meta(m), member(p(n,x1,y1),m), h(r,h1), H is H1+abs abs(x1 (X1-X)+ X)+abs abs(y1 (Y1-Y), Y),!. 1 3 4 8 2 5 7 6 1 2 3 8 4 7 6 5 Use busca com representações sucintas para resolver este problema! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 41
Busca com representações sucintas Exercício 15. Quebra-cabeça de oito peças: outro problema Especifique e resolva o problema a seguir usando busca heurística. 1 4 7 1 2 3 6 3 5 2 8 8 4 7 6 5 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 42
Fim