SCC-630 - Capítulo 5 Representação de Conhecimento através...

47
Representação do Conhecimento Relações entre Objetos Encadeamento lógico do Prolog SCC-630 - Capítulo 5 Representação de Conhecimento através do Prolog João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos 2011 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 1/47

Transcript of SCC-630 - Capítulo 5 Representação de Conhecimento através...

Page 1: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

SCC-630 - Capítulo 5Representação de Conhecimento

através do Prolog

João Luís Garcia Rosa1

1Departamento de Ciências de ComputaçãoInstituto de Ciências Matemáticas e de Computação

Universidade de São Paulo - São Carlos

2011João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 1/47

Page 2: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 2/47

Page 3: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 3/47

Page 4: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Prolog

A idéia de usar lógica como um formalismo executável emcomputador recebeu um grande ímpeto com o advento dalinguagem Prolog (“PROgrammation en LOGic”).Desenvolvida na década de 1970 em Edinburgh, alinguagem Prolog tem a sua aplicação dirigida àcomputação simbólica (não-numérica).Trata-se de uma evolução das linguagens de computador,pois Prolog tem características de linguagensprocedimentais (o como), e de linguagens declarativas (oque).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 4/47

Page 5: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Inferência Lógica do Prolog

Prolog é uma linguagem de programação lógica.Um programa Prolog é uma base de conhecimento, ondecada asserção é uma tradução de uma implicação dalógica.A máquina de inferência do Prolog é capaz de realizardeduções lógicas a partir desta base de conhecimento eproduzir conhecimento novo. Considere, por exemplo, asseguintes proposições [3]:

1 Todos os homens são mortais.2 Platão é um homem.3 Platão é mortal.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 5/47

Page 6: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Inferência Lógica do Prolog

Para a lógica, as duas primeiras proposições sãopremissas e a terceira é a conclusão lógica destaspremissas.Na lógica de predicados de primeira ordem tem-se:

∀X (homem(X )→ mortal(X )) (1)

homem(platao) (2)

mortal(platao) (3)

onde a terceira fórmula seria facilmente obtida a partir dasduas primeiras usando qualquer ferramenta lógica dededução, como por exemplo a regra da resolução.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 6/47

Page 7: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Inferência Lógica do Prolog

Toda implicação da lógica da forma a→ b, equivalente a¬a ∨ b, gera uma regra Prolog da forma b :- a.

Logo, um programa Prolog para esta base deconhecimento seria:mortal(X) :- homem(X).homem(platão).

A partir deste programa, ao se perguntar semortal(platão) é verdadeiro, a máquina de inferênciado Prolog responde que sim (yes).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 7/47

Page 8: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 8/47

Page 9: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Encadeamento Regressivo do Prolog

A linguagem Prolog trabalha com encadeamentoregressivo. Por exemplo, seja o seguinte programa:p(X,Y) :- q(X,Y).q(a,b).

E se coloque a seguinte questão:?- p(a,b).

Prolog faz as instanciações X = a e Y = b, e dispara aprimeira regra, ou seja, troca p(a,b) por q(a,b).(Na verdade, como p(X,Y) :- q(X,Y) corresponde àimplicação da lógica q(X ,Y )→ p(X ,Y ), então o Prologestá trocando o conseqüente da implicação p(a,b) peloseu antecedente q(a,b), ou seja, encadeamentoregressivo).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 9/47

Page 10: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 10/47

Page 11: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Cláusulas Definidas

Uma cláusula (disjunção de literais) consiste de literaispositivos e negativos:

p0 ∨ p1 ∨ ... ∨ ¬n0 ∨ ¬n1 ∨ ... (4)

Usando a lei de De Morgan:

¬p ∨ ¬q ≡ ¬(p ∧ q) (5)

pode-se expressar as cláusulas como uma únicaimplicação:

(n0 ∧ n1 ∧ ...)→ (p0 ∨ p1 ∨ ...) (6)

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 11/47

Page 12: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Cláusulas Definidas

Prolog não é baseado na forma clausal completa, mas simnum subconjunto bem menos expressivo, as cláusulas deHorn, que são cláusulas com no máximo um literalpositivo.Existem então apenas três tipos de cláusulas de Horn:

cláusulas unitárias: com um literal positivo da forma p0 (ou,equivalentemente,→ p0).cláusulas não unitárias: com um literal positivo e um oumais literais negativos, isto é, da forma p0 ∨ ¬n0 ∨ ¬n1 ∨ ...(ou, equivalentemente, (n0 ∧ n1 ∧ ...)→ p0).cláusulas negativas: sem literais positivos, com um ou maisliterais negativos, isto é, da forma ¬n0 ∨ ¬n1 ∨ ... (ou,equivalentemente, (n0 ∧ n1 ∧ ...)→).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 12/47

Page 13: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Inferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

Cláusulas Definidas

Os dois primeiros tipos de cláusulas de Horn sãoconhecidas como cláusulas definidas porque têmexatamente um literal positivo - uma única conclusãodefinida para a implicação - ao contrário de cláusulasgerais com seu conseqüente potencialmente disjuntivo eindefinido.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 13/47

Page 14: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 14/47

Page 15: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Exemplo: Relações familiares

Prolog é adequada para resolver problemas que envolvemobjetos e relações entre objetos.Veja o exemplo da árvore familiar da figura abaixo [1]:

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 15/47

Page 16: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Exemplo: Relações familiares

O fato de que Tom é “pais” (pai/mãe) de Bob se escreve:pais(tom,bob).pais: relaçãotom, bob: argumentosOs fatos na árvore familiar do exemplo são:pais(pam,bob).pais(tom,bob).pais(bob,ann).pais(bob,pat).pais(tom,liz).pais(pat,jim).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 16/47

Page 17: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Exemplo: Relações familiares

São 6 cláusulas declarando fatos sobre a relação “pais.”Uma vez comunicado ao sistema Prolog os fatos sobre arelação “pais,” pode-se colocar questões:? - pais(bob,pat).yes? - pais(liz,pat).no? - pais(X,liz).X = tom

Outra relação, avós:? - pais(Y,jim),pais(X,Y).X = bobY = pat

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 17/47

Page 18: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Resumo

Uma relação é definida pelo estabelecimento das n-uplasde objetos que satisfazem a relação.Um programa Prolog é constituído de cláusulas. Cadacláusula termina com um ponto.Os argumentos das relações podem ser (entre outrascoisas) constantes ou variáveis.Perguntas ao sistema Prolog são constituídas de um oumais objetivos. Uma seqüência de objetivos separados porvírgulas significa a conjunção desses objetivos.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 18/47

Page 19: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 19/47

Page 20: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Estendendo o exemplo através de regras

Vai-se incluir uma nova informação para a base de dados:o sexo das pessoas. Pode-se usar uma relação unária:feminino(pam).masculino(tom).

ou usar uma relação binária:sexo(pam,feminino).sexo(tom,masculino).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 20/47

Page 21: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Estendendo o exemplo através de regras

Para a também nova relação “filhos” (filho/filha), que é oinverso da relação pais.

cabeça corpofilhos(Y,X) :- pais(X,Y).(conclusão) (condição)

em Linguagem de Predicados de Primeira Ordem:

∀X∀Y (pais(X ,Y )→ filhos(Y ,X )) (7)

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 21/47

Page 22: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Estendendo o exemplo através de regras

A diferença principal entre fatos e regras, é que o fato éuma cláusula incondicionalmente verdadeira, e a regra éuma cláusula que pode ser verdade dependendo sealguma condição for verdade.Como as regras são usadas em Prolog? Para averificação da veracidade do seguinte fato:? - filhos(liz,tom). % liz é filha de tom?

o procedimento do Prolog, para executar a prova de talfato é o seguinte:

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 22/47

Page 23: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Estendendo o exemplo através de regras

1 Procura tal fato na “base de conhecimento.” Não existe talfato.

2 Procura se existe uma regra sobre a relação filhos. Comoexiste, aplica a particular instanciação X = tom e Y =liz, ou seja, filhos(liz,tom) :- pais(tom,liz).

3 O objetivo original filhos(liz,tom) é substituído porum novo objetivo: pais(tom,liz).

4 O novo objetivo é encontrado como um fato na “base deconhecimento” e o Prolog responde yes.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 23/47

Page 24: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Resumo

Cláusulas em Prolog são constituídas de cabeça e corpo.O corpo é uma lista de objetivos separados por vírgulas,esta entendida como conjunção de objetivos.Cláusulas em Prolog: fatos, regras e questões:

Fatos declaram coisas verdadeiras e possuem só cabeça.Regras declaram coisas que são verdade dependendo deuma condição e possuem cabeça e corpo.Questões: através delas o usuário pode perguntar aoprograma sobre a verdade de certas coisas e possuemsomente corpo.

Durante a execução, uma variável pode ser instanciadapor algum objeto.

Variáveis são assumidas ser universalmente quantificadase são lidas como para todo.Leituras alternativas são possíveis para variáveis queaparecem somente no corpo.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 24/47

Page 25: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 25/47

Page 26: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

ExemploIncluindo RegrasRegra recursiva

Definição recursiva de regra

Para definir uma nova relação, predecessor, vai-se fazê-loda seguinte forma:predecessor(X,Z) :- pais(X,Z).predecessor(X,Z) :- pais(X,Y),predecessor(Y,Z).

Note que a definição do predicado predecessor usarecursividade.A programação recursiva é um dos princípiosfundamentais da programação em Prolog.A relação predecessor é definida por duas cláusulas, oque consiste em um procedimento.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 26/47

Page 27: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 27/47

Page 28: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

Uma questão em Prolog é uma seqüência de objetivos(um ou mais).Prolog tenta satisfazer os objetivos, isto é, demonstrar queos objetivos seguem logicamente a partir dos fatos eregras do programa.Se as questões contêm variáveis, Prolog também tentaachar a particular instanciação que satisfaz os objetivos.Os fatos e regras são aceitos como um conjunto deaxiomas (hipóteses).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 28/47

Page 29: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

A questão do usuário é aceita como uma possível tese deum teorema.Prolog tenta provar esse teorema (demonstrar que elesegue logicamente dos axiomas).Prolog realiza encadeamento lógico regressivo, ou seja, apartir da meta, aplica as regras (no sentido regressivo) etermina nos fatos.Pode-se dizer também que Prolog parte da negação(implícita) da meta até chegar a cláusula vazia, utilizandoa estratégia por preferência unitária (demonstração porabsurdo): refutação.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 29/47

Page 30: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

Exemplo: seqüência de prova da conjectura (tese):?- predecessor(tom,pat).

Observação: note o sinal “-” após a interrogação no promptdo interpretador Prolog.Esse sinal representa que a cláusula meta deve sernegada antes do início da prova.Essa negação é feita internamente pelo mecanismo deinferência do Prolog.Mesmo porque, a questão Prolog deve ser um (ou mais)literal negativo!

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 30/47

Page 31: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

1 Prolog procura um fato que combine com o objetivo:

se sim: yesse não: vai para o passo 2.

Quando Prolog encontra o fato que unifica com a meta,aplica-se a regra da resolução (literal negativo da meta eliteral positivo do fato se cancelam, resultando na cláusulavazia). A razão do Prolog procurar primeiro o fato é que aestratégia usada é a preferência unitária e o fato é cláusulaunitária. Apesar da estratégia por preferência unitária nãoser completa, é a mais eficiente de todas. Caso a busca nãoseja bem sucedida, o Prolog realiza o backtracking e umanova busca é efetuada.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 31/47

Page 32: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

2 Prolog procura uma regra cuja cabeça combine com oobjetivo:

se não: nose sim: vai para o passo 3.

Se não há fato e nem regra cuja cabeça (literal positivo),então não há como aplicar a regra da resolução. Portantonão há solução.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 32/47

Page 33: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

3 Prolog “dispara” a regra para a particular instanciaçãopredecessor(X,Z) :- pais(X,Z).X = tomZ = pate substitui o objetivo corrente por? - pais(tom,pat).A cabeça da regra corresponde ao conseqüente daimplicação lógica (conclusão) e o corpo ao antecedente(condição). Quando Prolog dispara a regra, na verdade“troca” a cabeça pelo corpo, ou seja, “retorna” doconseqüente para o antecedente na implicação lógica(encadeamento regressivo). Em termos de regra daresolução: trocar a cabeça pelo corpo significa “cancelar” oliteral negativo da meta com o literal positivo da cabeça,resultando no literal negativo do corpo da cláusula Prolog.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 33/47

Page 34: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

4 Prolog procura uma cláusula cuja cabeça combina com oobjetivo (novo)

se sim e cláusula = fato: yesse sim e cláusula = regra: “dispara” a regrase não: backtrack

Repete-se o processo. Caso encontre um fato, termina, poisno encadeamento regressivo o encadeamento termina nofato. E na refutação, encontrar o fato significa chegar àcláusula vazia (lembre-se: havia um literal negativo e o fato éseu literal complementar).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 34/47

Page 35: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

5 Prolog “dispara” a segunda regrapredecessor(X,Z) :- pais(X,Y),predecessor(Y,Z).X = tomZ = pate substitui o objetivo corrente? - pais (tom,Y), predecessor (Y,pat).

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 35/47

Page 36: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Como Prolog responde questões

6 Prolog procura o primeiro objetivo, que combina com o fatopais(tom,bob), instanciando Y = bob.

7 Resta analisar? - predecessor(bob,pat).

8 Prolog “dispara” a primeira regra novamente e substitui oobjetivo? - pais(bob,pat).que finalmente é encontrado como fato no banco deconhecimento.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 36/47

Page 37: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 37/47

Page 38: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Significados declarativo e procedimental

É possível distinguir entre os significados declarativo (oque) do procedimental (o como) de um programa Prolog.A habilidade do Prolog realizar muitos detalhesprocedimentais por si mesmo é considerado uma de suasvantagens.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 38/47

Page 39: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Resumo

A programação em Prolog consiste em definir relações efazer questões sobre essas relações.Prolog consiste de cláusulas de três tipos: fatos, regras equestões.Uma relação pode ser especificada por fatossimplesmente estabelecendo as n-uplas de objetos quesatisfazem a relação, ou estabelecendo regras a respeitoda relação.Um procedimento é um conjunto de cláusulas a respeitode uma mesma relação.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 39/47

Page 40: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Resumo

Questionar sobre relações, através de perguntas, lembraquestionar um banco de dados. A resposta consiste de umconjunto de objetos que satisfazem a questão.A resposta é obtida através de um complexo processo queenvolve inferência lógica, exploração entre alternativas,backtracking.Existem dois significados nos programas Prolog:declarativo e procedimental. O declarativo é vantajoso doponto de vista da programação. Apesar de que osdetalhes procedimentais muitas vezes devem serconsiderados pelo programador.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 40/47

Page 41: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Sumário

1 Representação do ConhecimentoInferência Lógica do PrologEncadeamento Regressivo do PrologCláusulas Definidas

2 Relações entre ObjetosExemploIncluindo RegrasRegra recursiva

3 Encadeamento lógico do PrologComo Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 41/47

Page 42: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Listas

A lista é uma estrutura de dados simples muito usada emprogramação não-numérica.Uma lista é uma seqüência de qualquer número de itens,tais como ana, tenis, tom, esqui. Tal lista pode serescrita em Prolog como:[ana, tenis, tom, esqui]

Esta é entretanto, apenas a aparência externa das listas,pois todos os objetos estruturados em Prolog são árvores.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 42/47

Page 43: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Listas

Como se pode representar uma lista como um objetoProlog padrão?Deve-se considerar dois casos: ou a lista está vazia ounão vazia.No primeiro caso, a lista é simplesmente escrita como oátomo do Prolog, [].No segundo caso, a lista pode ser vista como consistindode duas coisas:

1 o primeiro item, chamado a cabeça da lista;2 a parte remanescente da lista, chamada de cauda.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 43/47

Page 44: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Resumo

Uma lista é uma estrutura de dados que ou está vazia ouconsiste de duas partes: uma cabeça e uma cauda. Acauda por sua vez também é uma lista.As listas são manipuladas pelo Prolog com um casoespecial de árvores binárias. Para melhorar a legibilidade,Prolog provê uma notação especial para listas:[Item1, Item2, ...]ou[Cabeca | Cauda]ou[Item1, Item2, ... | Outros]

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 44/47

Page 45: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Representação do ConhecimentoRelações entre Objetos

Encadeamento lógico do Prolog

Como Prolog responde questõesSignificados declarativo e procedimentalDados estruturados do Prolog: Listas

Conclusões

Prolog é a linguagem para programação lógica e podefazer muitas coisas. Mas tem quatro fraquezas lógicasfundamentais [5]:

1 Prolog não permite fatos ou conclusões disjuntivos, ouseja, sentenças onde uma ou mais coisas são verdadeiras,mas não se sabe quais.

2 Prolog não permite fatos ou conclusões negativos, isto é,sentenças diretas onde alguma coisa é falsa.

3 Prolog não permite que muitos fatos, conclusões ou regrastenham quantificação existencial, isto é, sentenças ondeexista algum valor de variável, ainda que não se saiba qual,tal que o predicado que a contém seja verdadeiro.

4 Prolog não permite diretamente lógica de segunda ordem,nomes de predicados como variáveis, isto é, sentençassobre P onde P significa um nome de predicado.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 45/47

Page 46: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Apêndice Bibliografia

Referências I

[1] Bratko, I.Prolog Programming for Artificial Intelligence.3rd edition. Addison-Wesley Pub Co., 2000.

[2] Casanova, M. A., Giorno, F. A. C., Furtado, A. L.Programação em Lógica e a Linguagem Prolog.Ed. Edgard Blücher Ltda., 1987

[3] Pereira, F. C. N., Shieber, S. M.Prolog and Natural Language Analysis.CSLI - Center for the Study of Language and Information,1987.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 46/47

Page 47: SCC-630 - Capítulo 5 Representação de Conhecimento através ...wiki.icmc.usp.br/images/f/fe/IA5-2011.pdf · 1 Procura tal fato na “base de conhecimento.” Não existe tal fato.

Apêndice Bibliografia

Referências II

[4] Rosa, J. L. G.Fundamentos da Inteligência Artificial.Editora LTC. Rio de Janeiro, 2011. No prelo.

[5] Rowe, N. C.Artificial Intelligence Through Prolog.Prentice Hall, 1988.

João Luís G. Rosa c© 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 47/47