A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Uma Breve Introdução á programação lógica Inteligência Artificial Wladimir Araújo Tavares.

Apresentações semelhantes


Apresentação em tema: "Uma Breve Introdução á programação lógica Inteligência Artificial Wladimir Araújo Tavares."— Transcrição da apresentação:

1 Uma Breve Introdução á programação lógica Inteligência Artificial Wladimir Araújo Tavares

2 Prolog É uma linguagem simples baseada na lógica simbólica É uma linguagem simples baseada na lógica simbólica Prolog é uma linguagem interativa projetada para manipulação de dados simbólicos Prolog é uma linguagem interativa projetada para manipulação de dados simbólicos Prolog é baseado em um provador de teoremas para cláusulas Horn. Prolog é baseado em um provador de teoremas para cláusulas Horn.

3 Exemplos Sócrates é homem. Sócrates é homem. Todo homem é mortal. Todo homem é mortal.

4 Programa homem(socrates) mortal(X) :- homem(X) ?- mortal(socrates). yes

5 Objetos manipulados pelo Prolog Os objetos manipulados pelo prolog são os termos. Os objetos manipulados pelo prolog são os termos. Os termos podem ser átomos ou estruturas. Os termos podem ser átomos ou estruturas. Os átomos podem ser constantes ou variáveis. Os átomos podem ser constantes ou variáveis.

6 Variáveis Nas linguagem convencionais as variáveis representa um célula de memória. Nas linguagem convencionais as variáveis representa um célula de memória. Em PROLOG uma variável é associada a um objeto. A vantagem da ligação sobre a atribuição está no fato de que qualquer tipo de objeto pode ser ligado a uma mesma variável; não se tem restrições às ligações, pois uma variável não possui estrutura interna.

7 Estrutura Uma estrutura é um objeto que possui organização interna. Em PROLOG estruturas são representadas por símbolo funcional(lista de argumentos) onde símbolo funcional é um identificador e lista de argumentos é uma lista de termos que pode ser vazia; isto é, um átomo é um caso particular de estrutura.

8 Exemplo Estrutura livro(gabriela,autor(amado,jorge)) cidade(sao-paulo, pais(brasil))

9 Programa Prolog mae(antonio, maria). /* fato1 */ mae(pedro, maria). /* fato2 */ mae(jose, ana). /* fato 3 */ pai(antonio,carlos). /* fato 4 */ pai(pedro,jose). /* fato5 */ pai(paulo,jose). /* fato6 */ irmao(X,Y):-pai(X,Z), pai(Y,Z), X\==Y. /* regra1 */ irmao(X,Y):-mae(X,Z), mae(Y,Z), X\==Y. /* regra2 */

10 ?-irmao(antonio,I) irmao(antonio,I):-pai(antonio,Z), pai(I,Z), antonio \== I. irmao(antonio,I):- pai(antonio,carlos),pai(I,carlos),antonio\= =I. irmao(antonio,I):- pai(antonio,carlos),pai(antonio,carlos),ant onio\==antonio. irmao(antonio,I):- mae(antonio,Z),mae(I,Z),antonio\==I.

11 amigo(antonio,andre). amigo(andre,juliana). amigo(antonio,maria). amigo(juliana,jose). amigo(X,Y):-amigo(Y,X). ?- amigo(X,Y) X=antonio Y=andre

12 Recursividade á esquerda amigo(X,Y):-amigo(Y,X). amigo(antonio,andre). amigo(andre,juliana). amigo(antonio,maria). amigo(juliana,jose). ?- ?-?-amigo(X,Y)

13 fat(0,1). fat(N,F) :- N1 is N-1, fat(N1,F1), F is N*F1.

14 Lista Uma lista é um termo estruturado que é operado como um conjunto ordenado de elementos. Os elementos podem ser átomos ou termos estruturados, inclusive listas.

15 Uma operação comum sobre uma lista é dividi-la em sua cabeça e cauda. Há uma notação especial para representar “a lista com cabeça X e cauda Y”: X|Y.

16 membro(X,[X|_]). membro(X,[_|Y]):-membro(X,Y). add_to_set(X,[],[X]). add_to_set(X,Y,Y) :- member(X,Y). add_to_set(X,Y,[X|Y]). escreve_lista([]). escreve_lista([X|Y]) :- write(':'),write(X),escreve_lista(Y).

17 binario(1) :- write('1'). binario(1) :- write('1'). binario(X) :- Z is X // 2,binario(Z),N is X mod 2,write(N). binario(X) :- Z is X // 2,binario(Z),N is X mod 2,write(N).

18 Processamento de linguagem Natural frase :- sujeito predicado sujeito :- artigo substantivo predicado :- verbo artigo substantivo artigo :- o substantivo :- gato j rato verbo :- caçou

19 frase(L1,L3) :- frase(L1,L3) :- sintagma_nominal(L1,L2), sintagma_verbal(L2,L3). sintagma_nominal(L1,L2), sintagma_verbal(L2,L3). sintagma_nominal(L1,L3) :- sintagma_nominal(L1,L3) :- determinante(L1,L2), nome(L2,L3). determinante(L1,L2), nome(L2,L3). sintagma_verbal(L1,L3) :- sintagma_verbal(L1,L3) :- verbo(L1,L2), sintagma_nominal(L2,L3). verbo(L1,L2), sintagma_nominal(L2,L3). determinante([o|R],R). determinante([o|R],R). nome([homem|R],R). nome([homem|R],R). nome([disco|R],R). nome([disco|R],R). verbo([vira|R],R). verbo([vira|R],R).

20 frase --> sujeito, predicado. sujeito --> artigo(G), substantivo(G). predicado --> verbo, artigo(G), substantivo(G). artigo(m) --> [o]. artigo(f) --> [a]. substantivo(m) --> [gato] | [rato]. substantivo(f) --> [gata] | [rata]. verbo --> [caçou].

21 frase(L1,L3) :- frase(L1,L3) :- sintagma_nominal(L1,L2), sintagma_verbal(L2,L3). sintagma_nominal(L1,L2), sintagma_verbal(L2,L3). sintagma_nominal(L1,L3) :- sintagma_nominal(L1,L3) :- artigo_masculino(L1,L2), nome_masculino(L2,L3). artigo_masculino(L1,L2), nome_masculino(L2,L3). sintagma_nominal(L1,L3) :- sintagma_nominal(L1,L3) :- artigo_feminino(L1,L2), nome_feminino(L2,L3). artigo_feminino(L1,L2), nome_feminino(L2,L3). sintagma_verbal(L1,L3) :- sintagma_verbal(L1,L3) :- verbo(L1,L2), sintagma_nominal(L2,L3). verbo(L1,L2), sintagma_nominal(L2,L3). artigo_masculino([o|R],R). artigo_masculino([o|R],R). artigo_feminino([a|R],R). artigo_feminino([a|R],R). nome_masculino([homem|R],R). nome_masculino([homem|R],R). nome_feminino([mulher|R],R). nome_feminino([mulher|R],R). nome([disco|R],R). nome([disco|R],R). verbo([vira|R],R). verbo([vira|R],R).


Carregar ppt "Uma Breve Introdução á programação lógica Inteligência Artificial Wladimir Araújo Tavares."

Apresentações semelhantes


Anúncios Google