Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Tutorial Prolog, Notas de estudo de Informática

Material sobre a programção Lógica aplicada à Inteligencia Artificial

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 03/09/2010

arnaldo-araujo-11
arnaldo-araujo-11 🇧🇷

4.4

(41)

71 documentos

1 / 23

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Raciocínio Automatizado
Prof. Dr. Silvio do Lago Pereira
Departamento de Tecnologia da Informação
Faculdade de Tecnologia de São Paulo
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Pré-visualização parcial do texto

Baixe Tutorial Prolog e outras Notas de estudo em PDF para Informática, somente na Docsity!

Raciocínio Automatizado

Prof. Dr. Silvio do Lago Pereira

Departamento de Tecnologia da Informação

Faculdade de Tecnologia de São Paulo

Introdução

SLD-refutação

é um procedimento para raciocínio automatizado que

apresenta as seguintes características:

restringe-se à uma classe de fórmulas denominadas

cláusulas de Horn

usa um mecanismo de prova por

refutação

, que combina

unificação

e

resolução

usa uma estratégia de

busca em profundidade

para controlar as inferências

introduz o conceito de

predicados computáveis

(ou predefinidos no sistema)

introduz o conceito de

negação por falha finita

Raciocínio automatizado

Raciocínio automatizado

simula raciocínio lógico por meio de processos computacionais

simula raciocínio lógico por meio de processos computacionais

Inferência com cláusulas de Horn

Inferências com cláusulas de Horn são efetuadas sempre entre:

um fato e uma consulta αααα

0000

1111

2222

n n

n n

2222

nnnn

uma regra e uma consulta

0000

1111

2222

mmmm

1111

2222

n n

n n

1 1

1 1

2222

m m

m m

2222

nnnn

O resultado de uma inferência é uma nova consulta ou uma contradição!

O resultado de uma inferência é uma nova consulta ou uma contradição!

a unificação de

0

e

1

tem efeito colateral no

valor dos demais literais

(i.e., na nova consulta)

Inferência com cláusulas de Horn

Exemplo 1 – inferência entre fato e consulta

Exemplo 1 – inferência entre fato e consulta

pai(

pai(

pai(

pai(adao

adao

adao

adao,

,abel

abel

abel

abel)

pai(pai(pai(pai(adao

adaoadaoadao,Y)

,Y),Y),Y),

pai(Y,Z)pai(Y,Z)pai(Y,Z)pai(Y,Z)

pai(pai(pai(pai(abel

abelabelabel,Z)

,Z),Z),Z)

{Y={Y={Y={Y=abel

abelabelabel}

pai(

pai(

pai(

pai(adao

adao

adao

adao,

,abel

abel

abel

abel)

pai(pai(pai(pai(adao

adaoadaoadao,Y)

,Y),Y),Y)

pai(Y,Z)pai(Y,Z)pai(Y,Z)pai(Y,Z)

pai(pai(pai(pai(abel

abelabelabel,Z)

,Z),Z),Z)

{Y={Y={Y={Y=abel

abelabelabel}

Exemplo 2 – inferência entre regra e consulta

Exemplo 2 – inferência entre regra e consulta

avo(X,Z)

avo(X,Z)

avo(X,Z)

avo(X,Z)

pai(X,Y)pai(X,Y),pai(X,Y)pai(X,Y)

pai(Y,Z)pai(Y,Z)pai(Y,Z)pai(Y,Z)

pai(pai(pai(pai(adao

adaoadaoadao,A)

,A),A),A),

pai(A,B)pai(A,B)pai(A,B)pai(A,B)

pai(pai(adaopai(pai(

adao,Y)adaoadao

,Y),,Y),Y)

pai(Y,A)pai(Y,A),pai(Y,A)pai(Y,A)

pai(A,B)pai(A,B)pai(A,B)pai(A,B)

{X={X=adao{X={X=

adao, Z=A}adaoadao

, Z=A}, Z=A}, Z=A}

avo(X,Z)

avo(X,Z)

avo(X,Z)

avo(X,Z)

pai(X,Y)pai(X,Y)pai(X,Y)pai(X,Y)

pai(Y,Z)pai(Y,Z)pai(Y,Z)pai(Y,Z)

pai(pai(pai(pai(adao

adaoadaoadao,A)

,A),A),A)

pai(A,B)pai(A,B)pai(A,B)pai(A,B)

pai(pai(adaopai(pai(

adao,Y)adaoadao

,Y),Y),Y)

pai(Y,A)pai(Y,A)pai(Y,A)pai(Y,A)

pai(A,B)pai(A,B)pai(A,B)pai(A,B)

{X={X=adao{X={X=

adao, Z=A}adaoadao

, Z=A}, Z=A}, Z=A}

SLD-refutação

Programa lógico 1 – O que é saudável?

Programa lógico 1 –

O que é saudável?

(1)(1)(1)(1)

bebe(bebe(bebe(bebe(ze

zezeze,pinga)

,pinga),pinga),pinga)

(2)(2)(2)(2)

bebe(mane,bebe(mane,aguabebe(mane,bebe(mane,

agua)aguaagua

(3)(3)(3)(3)

vivo(mane)vivo(mane)vivo(mane)vivo(mane)

(4)(4)(4)(4)

saudavelsaudavelsaudavelsaudavel(X)

(X)(X)(X)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

(1)(1)(1)(1)

bebe(bebe(bebe(bebe(ze

zezeze,pinga)

,pinga),pinga),pinga)

(2)(2)(2)(2)

bebe(mane,bebe(mane,aguabebe(mane,bebe(mane,

agua)aguaagua

(3)(3)(3)(3)

vivo(mane)vivo(mane)vivo(mane)vivo(mane)

(4)(4)(4)(4)

saudavelsaudavelsaudavelsaudavel(X)

(X)(X)(X)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

SLD-refutação

Programa lógico 1 – O que é saudável?

Programa lógico 1 –

O que é saudável?

(1)(1)(1)(1)

bebe(bebe(bebe(bebe(ze

zezeze,pinga)

,pinga),pinga),pinga)

(2)(2)(2)(2)

bebe(mane,bebe(mane,aguabebe(mane,bebe(mane,

agua)aguaagua

(3)(3)(3)(3)

vivo(mane)vivo(mane)vivo(mane)vivo(mane)

(4)(4)(4)(4)

saudavelsaudavelsaudavelsaudavel(X)

(X)(X)(X)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

(1)(1)(1)(1)

bebe(bebe(bebe(bebe(ze

zezeze,pinga)

,pinga),pinga),pinga)

(2)(2)(2)(2)

bebe(mane,bebe(mane,aguabebe(mane,bebe(mane,

agua)aguaagua

(3)(3)(3)(3)

vivo(mane)vivo(mane)vivo(mane)vivo(mane)

(4)(4)(4)(4)

saudavelsaudavelsaudavelsaudavel(X)

(X)(X)(X)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

SLD-refutação

Programa lógico 1 – O que é saudável?

Programa lógico 1 –

O que é saudável?

(1)(1)(1)(1)

bebe(bebe(bebe(bebe(ze

zezeze,pinga)

,pinga),pinga),pinga)

(2)(2)(2)(2)

bebe(mane,bebe(mane,aguabebe(mane,bebe(mane,

agua)aguaagua

(3)(3)(3)(3)

vivo(mane)vivo(mane)vivo(mane)vivo(mane)

(4)(4)(4)(4)

saudavelsaudavelsaudavelsaudavel(X)

(X)(X)(X)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

(1)(1)(1)(1)

bebe(bebe(bebe(bebe(ze

zezeze,pinga)

,pinga),pinga),pinga)

(2)(2)(2)(2)

bebe(mane,bebe(mane,aguabebe(mane,bebe(mane,

agua)aguaagua

(3)(3)(3)(3)

vivo(mane)vivo(mane)vivo(mane)vivo(mane)

(4)(4)(4)(4)

saudavelsaudavelsaudavelsaudavel(X)

(X)(X)(X)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

bebe(Y,X),

vivo(Y)

SLD-refutação

Programa lógico 2 – Ana fala que idioma?

Programa lógico 2 –

Ana fala que idioma?

(1)(1)(1)(1)

nasceu(nasceu(nasceu(nasceu(ana

anaanaana,

,,,brasil

brasil

brasil brasil)

(2)(2)(2)(2)

nasceu(nasceu(yvesnasceu(nasceu(

yves,franca)yvesyves

,franca)

,franca) ,franca)

(3)(3)(3)(3)

idioma(idioma(idioma(idioma(brasil

brasilbrasilbrasil,

,,,portugues

portuguesportuguesportugues)

(4)(4)(4)(4)

idioma(franca,idioma(franca,idioma(franca,idioma(franca,frances

francesfrancesfrances)

(5)(5)(5)(5)

estudou(estudou(estudou(estudou(ana

anaanaana,

,frances

francesfrancesfrances)

(6)(6)(6)(6)

fala(A,C)fala(A,C)fala(A,C)fala(A,C)

nasceu(A,B),

idioma(B,C)

nasceu(A,B),

idioma(B,C)

nasceu(A,B),

idioma(B,C)

nasceu(A,B),

idioma(B,C)

(7)(7)(7)(7)

fala(D,E)fala(D,E)fala(D,E)fala(D,E)

estudou(D,E) estudou(D,E)

estudou(D,E) estudou(D,E)

(1)(1)(1)(1)

nasceu(nasceu(nasceu(nasceu(ana

anaanaana,

,,,brasil

brasil

brasil brasil)

(2)(2)(2)(2)

nasceu(nasceu(yvesnasceu(nasceu(

yves,franca)yvesyves

,franca)

,franca) ,franca)

(3)(3)(3)(3)

idioma(idioma(idioma(idioma(brasil

brasilbrasilbrasil,

,,,portugues

portuguesportuguesportugues)

(4)(4)(4)(4)

idioma(franca,idioma(franca,idioma(franca,idioma(franca,frances

francesfrancesfrances)

(5)(5)(5)(5)

estudou(estudou(estudou(estudou(ana

anaanaana,

,frances

francesfrancesfrances)

(6)(6)(6)(6)

fala(A,C)fala(A,C)fala(A,C)fala(A,C)

nasceu(A,B),

idioma(B,C)

nasceu(A,B),

idioma(B,C)

nasceu(A,B),

idioma(B,C)

nasceu(A,B),

idioma(B,C)

(7)(7)(7)(7)

fala(D,E)fala(D,E)fala(D,E)fala(D,E)

estudou(D,E) estudou(D,E)

estudou(D,E) estudou(D,E)

SLD-refutação

Programa lógico 3

Programa lógico 3

(1)(1)(1)(1)

gosta(gosta(arygosta(gosta(

ary,aryary

,eva,,

eva)evaeva

(2)(2)(2)(2)

gosta(gosta(gosta(gosta(ivo

ivoivoivo,ana)

,ana),ana),ana)

(3)(3)(3)(3)

gosta(gosta(gosta(gosta(ivo

ivoivoivo,

,,,eva

evaevaeva)

(4)(4)(4)(4)

gosta(gosta(gosta(gosta(eva

evaevaeva,

,,,ary

aryaryary)

(5)(5)(5)(5)

gosta(ana,gosta(ana,gosta(ana,gosta(ana,ary

aryaryary)

(6)(6)(6)(6)

namora(A,B)namora(A,B)namora(A,B)namora(A,B)

gosta(A,B),

gosta(B,A)

gosta(A,B),

gosta(B,A)

gosta(A,B),

gosta(B,A)

gosta(A,B),

gosta(B,A)

(1)(1)(1)(1)

gosta(gosta(arygosta(gosta(

ary,aryary

,eva,,

eva)evaeva

(2)(2)(2)(2)

gosta(gosta(gosta(gosta(ivo

ivoivoivo,ana)

,ana),ana),ana)

(3)(3)(3)(3)

gosta(gosta(gosta(gosta(ivo

ivoivoivo,

,,,eva

evaevaeva)

(4)(4)(4)(4)

gosta(gosta(gosta(gosta(eva

evaevaeva,

,,,ary

aryaryary)

(5)(5)(5)(5)

gosta(ana,gosta(ana,gosta(ana,gosta(ana,ary

aryaryary)

(6)(6)(6)(6)

namora(A,B)namora(A,B)namora(A,B)namora(A,B)

gosta(A,B),

gosta(B,A)

gosta(A,B),

gosta(B,A)

gosta(A,B),

gosta(B,A)

gosta(A,B),

gosta(B,A)

Exercício 1 Em Prolog, o operador ‘

←←←←

’ é omitido nas cláusulas do tipo fato e substituído por

::-::


’ nas cláusulas do tipo regra. Ademais, toda cláusula deve ser finalizada com

....

’. Usando esta convenção, codifique o programa a seguir em Prolog e faça as

seguintes consultas:

Eva namora com Ary? Ivo namora com Ana? Ary namora com quem?

SLD-refutação

Exercício 2 Em Prolog, o predicado predefinido

trace/0trace/0trace/0trace/

permite rastrear o raciocínio

feito pelo motor de inferência do sistema, ao responder a uma consulta.

Usando este predicado para rastrear as consultas a seguir e desenhe a árvore de refutação correspondente:

? ?

? ?-

namora(namora(namora(namora(eva

evaevaeva,

,

, ,ary

aryaryary).

).).).

? ?

? ?-

namora(namora(namora(namora(ivo

ivoivoivo,ana).

,ana).

,ana). ,ana).

? ?

? ?-

namora(namora(arynamora(namora(

ary,Q).aryary

,Q).

,Q). ,Q).

Predicados computáveis

Predicado computável

Predicado computável

é um predicado avaliado diretamente pelo procedimento de refutação, sem queeste tenha que estar definido no programa lógico.

é um predicado avaliado diretamente pelo procedimento de refutação, sem queeste tenha que estar definido no programa lógico.

Exemplos:

operadores aritméticos: +, -, *, / operadores relacionais: =,

, <,

, >,

A SLD-refutação sinaliza fracasso se um predicado computável resulta em falso!

A SLD-refutação sinaliza fracasso se um predicado computável resulta em falso!

Predicados computáveis

Programa lógico 5 – Quem é irmão de Caim?

Programa lógico 5 –

Quem é irmão de Caim?

(1)(1)(1)(1)

pai(adão,pai(adão,pai(adão,pai(adão,caim

caimcaimcaim)

(2)(2)(2)(2)

pai(adão,pai(adão,abelpai(adão,pai(adão,

abel)abelabel

(3)(3)(3)(3)

pai(adão,pai(adão,pai(adão,pai(adão,seth

sethsethseth)

(4)(4)(4)(4)

irmão(X,Y)irmão(X,Y)irmão(X,Y)irmão(X,Y)

pai(Z,X),

pai(Z,Y),

pai(Z,X),

pai(Z,Y),

pai(Z,X),

pai(Z,Y),

pai(Z,X),

pai(Z,Y),

XXXX
YYYY

(1)(1)(1)(1)

pai(adão,pai(adão,pai(adão,pai(adão,caim

caimcaimcaim)

(2)(2)(2)(2)

pai(adão,pai(adão,abelpai(adão,pai(adão,

abel)abelabel

(3)(3)(3)(3)

pai(adão,pai(adão,pai(adão,pai(adão,seth

sethsethseth)

(4)(4)(4)(4)

irmão(X,Y)irmão(X,Y)irmão(X,Y)irmão(X,Y)

pai(Z,X),

pai(Z,Y),

pai(Z,X),

pai(Z,Y),

pai(Z,X),

pai(Z,Y),

pai(Z,X),

pai(Z,Y),

XXXX
YYYY

19

Negação por falha finita

Mecanismo de negação por falha finita

Mecanismo de negação por falha finita

Ao encontrar um

literal negativo

(

¬λ¬λ¬λ¬λ

) o sistema dispara uma sub-prova do

literal complementar

(

λλλλ

):

se a prova de

λλλλ

termina com sucesso, a prova de

¬λ ¬λ

¬λ ¬λ

termina com fracasso

se a prova de

λλλλ

termina com fracasso, a prova de

¬λ¬λ¬λ¬λ

termina com sucesso

Ao encontrar um

literal negativo

(

¬λ¬λ¬λ¬λ

) o sistema dispara uma sub-prova do

literal complementar

(

λλλλ

):

se a prova de

λλλλ

termina com sucesso, a prova de

¬λ ¬λ

¬λ ¬λ

termina com fracasso

se a prova de

λλλλ

termina com fracasso, a prova de

¬λ¬λ¬λ¬λ

termina com sucesso

Hipótese do mundo fechado: tudo o que é verdadeiro está declarado!

Hipótese do mundo fechado

: tudo o que é verdadeiro está declarado!

Prolog implementa negação por falha finita através do predicado computável

notnotnotnot/

Negação por falha finita

Programa lógico 7 – Quem voa?

Programa lógico 7 –

Quem voa?

(1)(1)(1)(1)

ave(ave(ave(ave(fred

fredfredfred)

(2)(2)(2)(2)

ave(bob)ave(bob)ave(bob)ave(bob)

(3)(3)(3)(3)

pimguimpimguimpimguimpimguim(

(((fred

fredfredfred)

(4)(4)(4)(4)

voa(X)voa(X)voa(X)voa(X)

ave(X),ave(X),ave(X),ave(X),

pinguimpinguimpinguimpinguim(X)

(X)
(X)
(X)

(1)(1)(1)(1)

ave(ave(ave(ave(fred

fredfredfred)

(2)(2)(2)(2)

ave(bob)ave(bob)ave(bob)ave(bob)

(3)(3)(3)(3)

pimguimpimguimpimguimpimguim(

(((fred

fredfredfred)

(4)(4)(4)(4)

voa(X)voa(X)voa(X)voa(X)

ave(X),ave(X),ave(X),ave(X),

pinguimpinguimpinguimpinguim(X)

(X)
(X)
(X)