PPT Slide
PPT Slide
Solução mais genérica ...
pertence(X,[Y|Z]):- pertence(X,Z).
alice :- findall(M,mente(M,_),R),
pertence(J,R),pertence(K,R),
nl,nl,write('Alice deduziu que era '),write(X),nl,nl.
Nessa solução mais genérica os animais envolvidos são extraídos da Base de Conhecimentos através da cláusula findall(M,mente(M,_),R), onde uma lista com os possíveis animais é retornada em ‘R’. Então, da mesma forma que na solução anterior, as varíaveis J e K devem assumir os valores dos nomes dos animais. Isso é feito dizendo que J e K são membros da lista R, utilizando a sequência pertence(J,R),pertence(K,R). O restante do raciocínio é o mesmo da solução anterior, e ao final do programa a variável X assume o valor ‘quinta’ que foi o mesmo encontrado por Alice.
Uma solução mais generalizada consiste em um programa que pensa como um humano, ou seja, partindo-se de conhecimentos previamente adquiridos e de algumas condições, é possível chegar a algum tipo de conclusão. Nesse caso, o nosso conhecimento previamente adquirido são os dados da Base de Conhecimentos. As condições são representadas pelas condições do raciocínio que se deve fazer para chegar à resposta, e são traduzidas na forma de cláusulas. Quando se generaliza, não se deve explicitar os conhecimentos na parte do programa onde se faz apenas o raciocínio. Por exemplo, não se pode citar o unicórnio no corpo do programa propriamente dito.