Documente Academic
Documente Profesional
Documente Cultură
Introduo
A programao em Prolog - que significa programao em lgica - no baseada no seqenciamento de procedimentos, mas na definio de relaes, na forma com a qual se representa o mundo que se quer implementar no computador.
Relao
o que se relaciona como o qu? entre que coisas do mundo que conhecemos existe relao? H relao entre este texto e o que estou pensando? H relao entre mim e minha me? H relao entre o motorista do nibus e seus passageiros? H relao entre dois irmos? H relao entre uma caneta que est sobre uma mesa? H uma relao entre uma cala e uma camisa? .....
Praticamente no h limites para uma viso de mundo que busca o relacionamento entre os objetos (fsicos ou no) deste mundo A importncia de considerar-se a relao como definidora dos elementos do mundo o que nos leva a consider-la de extrema utilidade na modelagem de representaes simblicas a nvel computacional
Histria e Aplicabilidade
A linguagem Prolog foi concebida por Colmerauer e Roussel em1972, sendo sua primeira verso feita em Fortran por Battani e Meloniem 1973 Desde ento tem sido utilizada para aplicaes de computao simblica, como
banco de dados relacionais compreenso de linguagem natural automao de projetos anlise de estruturas bioqumicas sistemas especialistas
Histria e Aplicabilidade
Prolog utilizado em tarefas que exijam a representao do conhecimento para execut-las Aplicaes como os sistemas especialistas e linguagem natural so exemplos claros da utilidade da linguagem Prolog, uma vez que necessitam de regras fornecidas pela experincia humana para que sejam eficientes
Histria e Aplicabilidade
Um sistema especialista que necessite realizar um diagnstico precisa que a experincia humana do especialista esteja inserida nas regras de produo para que produza um resultado correto A lngua natural tambm possui peculiaridades que somente a experincia humana pode traduzir. A estruturao de frases e a semntica inerente a elas fruto do aprendizado,que, at o momento, somente o homem pode reproduzir em regras
Estruturas/Comandos
Fatos
Baseiam-se no seguinte comando:
predicado(arg 1[,arg 2,...,arg n]).
Estrutura / Comandos
Assim, definimos uma relao (amizade) entre dois argumentos (joao e carlos)
Estrutua / Comandos
homem(carlos)
Estrutura / Comandos
O tipo de interpretao depende da ordenao dos objetos declarados nos fatos Para manter uma coerncia, importante que todos os fatos sigam uma mesma estrutura de interpretao Assim, no caso da relao amigo talvez fosse mais prudente a declarao bivalente:
amigo(joao,carlos) amigo(carlos,joao)
Um conjunto de fatos forma um banco de dados. Ou seja, vrias afirmaes compem os dados existentes no sistema. Os fatos so a clula bsica do banco de dados Prolog.
Questes
yes A funo da questo basicamente testar a existncia de uma relao sobre os argumentos propostos
Variveis
?- amigo(joao,Quem)
Quem = carlos Em cima das questes com variveis que sero construdos os sistemas mais complexos de estruturao da representao de conhecimentos
Conjuno
A vrgula ( , ) entre as questes determinam a validade mtua de ambas (ou do conjunto envolvido) O objetivo da conjuno a realizao de uma busca no banco de dados para a verificao da validade da questo ou busca dos objetos relacionados com os argumentos propostos O mecanismo de busca uma estratgia de controle do tipo busca em profundidade com retrocesso
Conjuno
E a questo:
?- amiga(joana,Quem),amiga(clara,Quem) Quem = maria
Como podemos perceber, a consulta teve como objetivo obter o objeto (maria) que faltava para validar a conjuno entre os dois objetivos
Conjuno
H duas formas de validao de conjunes.A primeira ocorre caso todos os objetivos sejam fatos como, por exemplo:
?- amiga(joana,antonia),amiga(maria,clara). no
todos os objetivos devem ser validados. A segunda forma ocorre, como j foi visto, caso hajam variveis e existam correspondentes entre as variveis dos objetivos
Conjuno
Para facilitar a compreenso da construo da conjuno, ela pode ser vista como uma estrutura em rvore,onde os objetos so folhas das relaes, as quais esto ligadas questo, que torna-se a raiz da rvore
Regras
o comando na forma:
pred(arg/Var,arg/Var) :- pred(arg/Var,arg/Var)
onde:
o smbolo :- indica a uma condio (se) ou, no caso de compararmos com lgica de predicados, a uma implicao material
Regras
A regra o instrumento bsico de organizao do banco de conhecimentos e permite a construo de questes complexas ela que indica a validade de um conjunto de fatos, questes ou conjunes
Regras
Regras
E a regra amiga_intima:
amiga_intima(Ela1,Ela2) :amiga(Ela1,Ela2), amiga(Ela2,Ela1), ama(Ela1,Ela2), ama(Ela2,Ela1).
Regras
E falsa a questo:
?- amiga_intima(maria,clara) no
Percebemos, ento, que h a possibilidade de construo de produes complexas em cada regra, permitindo conceitos cada vez maiores e consultas com um maior nvel de definio e de variveis
Disjuno
Ou:
Regras
Como podemos observar, o ponto-evrgula ( ; ) permite a aceitao de uma ou outra condio para a validao da clusula, enquanto o operador de conjuno ( , ) implica na necessidade de aceitao de todas as condies
Operadores Numricos
Relacionais
Operadores numricos relacionais so aqueles usados para realizar testes quantitativos entre dois nmeros. So eles:
= < =<
\= > >=
E a questo:
?- dentro_interv_aberto(5,0,5). no
Exemplo:
ao_quadrado(X,Y) :Y is X*X.
E a questo:
?- ao_quadrado(6,X). X = 36sss
Deste modo, percebemos que h a possibilidade de construo de diversas funes matemticas mais complexas a partir de regras e operadores aritmticos