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

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

Uma Breve Introdução á programação lógica

Apresentações semelhantes


Apresentação em tema: "Uma Breve Introdução á programação lógica"— 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
Prolog é uma linguagem interativa projetada para manipulação de dados simbólicos Prolog é baseado em um provador de teoremas para cláusulas Horn.

3 Exemplos Sócrates é homem. 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 termos podem ser átomos ou estruturas. Os átomos podem ser constantes ou variáveis.

6 Variáveis 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),antonio\==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(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) :- sintagma_nominal(L1,L2), sintagma_verbal(L2,L3). sintagma_nominal(L1,L3) :- determinante(L1,L2), nome(L2,L3). sintagma_verbal(L1,L3) :- verbo(L1,L2), sintagma_nominal(L2,L3). determinante([o|R],R). nome([homem|R],R). nome([disco|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) :- sintagma_nominal(L1,L2), sintagma_verbal(L2,L3). sintagma_nominal(L1,L3) :- artigo_masculino(L1,L2), nome_masculino(L2,L3). artigo_feminino(L1,L2), nome_feminino(L2,L3). sintagma_verbal(L1,L3) :- verbo(L1,L2), sintagma_nominal(L2,L3). artigo_masculino([o|R],R). artigo_feminino([a|R],R). nome_masculino([homem|R],R). nome_feminino([mulher|R],R). nome([disco|R],R). verbo([vira|R],R).


Carregar ppt "Uma Breve Introdução á programação lógica"

Apresentações semelhantes


Anúncios Google