Você está na página 1de 33

Programao em Lgica

Prof. Dr. Silvio do Lago Pereira


Departamento de Tecnologia da Informao
Faculdade de Tecnologia de So Paulo
Contato

Sala: 623 Bloco A


E-mail: slago@ime.usp.br
Pgina: www.ime.usp.br/~slago
Material disponvel
Ementa, bibliografia e critrios de avaliao
Compilador SWI-Prolog
Cronograma de aulas e provas
Slides das aulas
Exerccios e notas

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 2


Curso

Objetivos: Representao de conhecimento e raciocnio automatizado em


lgica simblica, linguagem Prolog e aplicaes em inteligncia artificial.

Tpicos:
Lgica proposicional
Lgica de predicados
Raciocnio automatizado
Linguagem Prolog (SWI-Prolog)
Soluo de problemas por meio de busca
Processamento de linguagem natural

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 3


Avaliao

Provas
P1: 15/09
P2: 10/11
P3: 08/12
SUB: 15/12

Mdia = (P1 + P2 + P3) / 3


Aprovao requer mdia maior ou igual a 6,0.

Prova substitutiva
Apenas para quem no atingir a mdia
Substitui a menor nota entre P1, P2 e P3

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 4


Introduo

Inteligncia artificial
O papel da lgica na IA
Programao em lgica
Linguagem Prolog
Inteligncia Artificial
O que ?
rea da computao que estuda como simular comportamento
inteligente usando mtodos computacionais
Qual seu objetivo?
criao de agentes inteligentes, isto , entidades que se
comportam de modo condizente com suas metas e com as
circunstncias com que se deparam
Como evitar discusses filosficas sobre IA?
Teste de Turing

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 6


Teste de Turing

PROGRAMA

Argumento de Turing
Mesmo sem uma definio precisa de inteligncia, podemos assumir que o
ser humano inteligente
Portanto, se um programa consegue se passar por um ser humano,
podemos dizer que ele apresenta algum tipo de inteligncia que, neste
caso, s pode ser artificial

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 7


Capacidades necessrias a um agente inteligente

processamento de representao de
linguagem natural conhecimento

AGENTE

raciocnio aprendizagem
automatizado de mquina

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 8


Capacidades necessrias a um agente
Processamento de linguagem natural
para que o programa possa se comunicar com o entrevistador

Representao de conhecimento
para armazenar aquilo que ele sabe ou aprende na entrevista

Raciocnio automatizado
para usar o conhecimento que ele tem armazenado, ao responder s
perguntas feitas pelo entrevistador

Aprendizado de mquina
para absorver novas informaes que lhe so comunicadas, reconhecer
padres e atualizar seu conhecimento

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 9


O papel da lgica na IA: conhecimento

A experincia mostra que:


um aspecto fundamental do comportamento inteligente que ele
condicionado pelo conhecimento que um agente tem acerca de seu mundo

Mas, o que conhecimento?


Quando ouvimos uma frase do tipo Ana sabe que ... , em geral, espera-
mos que ela seja completada com uma sentena como, por exemplo:
est chovendo
se est chovendo, ento a rua est molhada
Isto sugere que, entre outras coisas, conhecimento uma relao entre
um agente ( Ana) e uma sentena declarativa ( est chovendo).

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 10


O papel da lgica na IA: raciocnio

Outro aspecto fundamental do comportamento inteligente que:


ele resulta de raciocnio correto sobre o conhecimento que se tem disponvel

Por exemplo, a partir do conhecimento representado pelas sentenas:


Est chovendo.
Se est chovendo, ento a rua est molhada.
Se a rua est molhada, ento a rua est escorregadia.
Se a rua est escorregadia, devemos usar calado que no escorrega.
Se a rua no est escorregadia, ento podemos usar qualquer calado.

Conclumos que a melhor coisa a fazer : conhecimento


usar um calado que no escorrega. implcito!!!

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 11


O papel da lgica na IA

Assim, o principal papel da lgica na IA ...


garantir que novas informaes possam ser corretamente extradas do
conhecimento explicitamente armazenado por um agente.

Segundo [Shanahan, 1997]:


A melhor maneira de entender o comportamento inteligente
consider-lo como resultado de um raciocnio correto sobre uma
representao correta.
A lgica simblica o melhor formalismo para explicar as noes
de representao correta e raciocnio correto.

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 12


O papel da lgica na IA
Assim, embora existam outras abordagens computacionais
interessantes para simulao de comportamento
inteligente (conexionista e evolucionista), neste curso,
adotaremos a abordagem simbolista.
Mais precisamente, adotaremos a programao em
lgica como paradigma para a construo de agentes
inteligentes.

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 13


Programao em lgica

Programao em lgica ...


um formalismo lgico-computacional fundamentado em trs princpios bsicos:
uso de linguagem formal para representao de conhecimento
uso de regras de inferncia para manipulao de conhecimento
uso de uma estratgia de busca para controle de inferncias

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 14


Programao em lgica: linguagem formal
Uma linguagem natural ambgua
Ana viu um homem numa montanha usando um binculo
Quem usava o binculo?
Ana, usando um binculo, viu um homem numa montanha
Ana, estando numa montanha, viu um homem que usava um binculo

Uma linguagem formal precisa


suas sentenas
so objetos (frmulas) com significado nico
tm sintaxe e semntica bem definidas
mas tambm pode ser menos expressiva

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 15


Programao em lgica: regra de inferncia
Regra de inferncia um padro de manipulao sinttica que:
permite criar novas frmulas a partir de outras existentes
em geral, simulam formas de raciocnio vlidas

Exemplo (modus ponens):




Se neva, faz frio. Est nevando. Logo, est frio.
Se vejo TV, fico com sono. Estou vendo TV. Logo, estou com sono.

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 16


Programao em lgica: estratgia de busca
Um agente pode ter uma enorme quantidade de conhecimento
armazenado
Assim como ns, ele precisa usar apenas parte de seu
conhecimento para resolver um problema
Estratgia de busca serve para decidir que parte do conheci-
mento armazenado deve ser explorada em busca da soluo

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 17


Programao em lgica: idia bsica

premissas concluso
raciocnio

natural semntica semntica

formal
inferncia
frmulas frmula

A idia bsica da programao em lgica ...


oferecer um arcabouo que permita inferir concluses desejadas, a partir
de premissas representando o conhecimento disponvel, de uma forma que
seja computacionalmente vivel

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 18


O sistema Prolog
Prolog o sistema de programao em lgica mais popular que existe!

premissas
interface motor de base de
inferncia conhecimento
concluses
usurio

Interface: permite que o usurio entre com premissas codificadas em uma


linguagem lgica e faa consultas para extrair concluses destas premissas
Motor de inferncia: atualiza a base de conhecimento com premissas forneci-
das pelo usurio e faz inferncias para extrair informaes implcitas
Base de conhecimento: armazena as premissas fornecidas pelo usurio

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 19


O sistema Prolog: vantagens
Prolog permite representar o conhecimento que um agente tem sobre
seu mundo de uma forma simples e direta, em uma linguagem de alto
nvel, tornando os programas mais compactos, flexveis e inteligveis
Prolog permite programao declarativa; em vez de especificar como
o computador deve proceder para resolver um problema, precisamos
apenas declarar o conhecimento que temos acerca do problema e, em
seguida, consultar o sistema para que ele encontre a soluo desejada
Em outras palavras, em Prolog, basta especificar corretamente o
problema que o motor de inferncia se encarrega de descobrir como
obter sua soluo

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 20


Exemplo 1 Colorao de mapas

Problema: como colorir um mapa, usando no mximo


quatro cores, de modo que regies adjacentes tenham
cores distintas?

B
E
A C

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 21


Exemplo 1 Colorao de mapas
Soluo:
Primeiramente, declaramos as cores que podem ser usadas na
colorao; isto feito por meio de sentenas denominadas fatos.
Por exemplo, o fato cor(azul) estabelece que azul uma
das cores disponveis.
Em seguida, declaramos que a tupla (A,B,C,D,E),
(A,B,C,D,E) cujos
componentes correspondem s regies do mapa, uma
colorao vlida se cada um de seus componentes uma cor e
se componentes representando regies adjacentes no mapa tm
valores distintos; isto feito por meio de uma sentena
denominada regra.

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 22


Exemplo 1 Colorao de mapas
Implementao:
% colorir.
colorir.pl - colore um mapa usando no mximo quatro cores
% cores disponveis
cor(azul).
cor(azul).
cor(verde).
cor(verde).
cor(amarelo).
cor(amarelo).
cor(vermelho).
cor(vermelho).

% restries para a soluo


colorao(A,B,C,D,E) :-
cor(A), cor(B), cor(C), cor(D), cor(E),
A\=B, A\=C, A\=D, B\=C, B\=E, C\=D, C\=E, D\=E.
=E.

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 23


Exemplo 1 Colorao de mapas
Teste:
consulta

?- colorao(A,B,C,D,E).
colorao(A,B,C,D,E).
A = azul,
B = verde, resposta
C = amarelo,
D = verde,
E = azul .

Vamos usar o compilador SWI-Prolog para testar o programa!

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 24


Exemplo 1 Colorao de mapas
Inicie a execuo do compilador SWI-Prolog
Voc ter acesso tela de consultas/comandos
Digite o comando para ativao do editor de textos:
?- emacs('colorir.pl').

Digite o programa e compile com a opo


Compile/Compile Buffer, no menu do editor emacs
Volte tela de consultas e digite:
?- colorao(A,B,C,D,E).

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 25


Exemplo 2 Gerao de binrios
Problema: gerar todos os nmeros % binrio.
binrio.pl
binrios compostos por trs dgitos % dgitos binrios
Soluo: dgito(0
dgito(0).
Declarar que dgitos podem ser dgito(1
dgito(1).
usados na composio de um % restries para a soluo
nmero binrio
binrio(N) :-
Definir restries sobre
N = (A,B,C),
componentes de uma estrutura
representando um nmero binrio dgito(A),
de trs dgitos dgito(B),
Teste: dgito(C).
dgito(C).
?- binrio(N).
N = (0,0,0) ;
digite ponto-e-vrgula
N = (0,0,1) ;
para ver as respostas
N = (0,1,0) ;
...

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 26


Exibio de todas as solues
Digitando ponto-e-vgula, podemos ver uma soluo de cada vez
Para ver todas de uma vez, podemos usar os predicados predefinidos:
forall(C,A) : que, para todo caso em que a condio C satisfeita,
executa a ao A
writeln(T) : que exibe o termo T no vdeo
Por exemplo, veja o resultado da consulta a seguir:
?- forall( binrio(N), writeln(N) ).
0, 0, 0
0, 0, 1
0, 1, 0
0, 1, 1
1, 0, 0
1, 0, 1
1, 1, 0
1, 1, 1

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 27


Exemplo 3 Gerao de rotas areas
% rotas.
rotas.pl
1 B 4 % vos
2 E
3 8 vo(1
vo(1,a,b).
,a,b). vo(2
vo(2,b,c).
,b,c).
A 5 vo(3
vo(3,b,d).
,b,d). vo(4
vo(4,b,e).
,b,e).
C
7 vo(5
vo(5,c,a).
,c,a). vo(6
vo(6,d,c).
,d,c).
6 vo(7
vo(7,d,e).
,d,e). vo(8
vo(8,e,b).
,e,b).
D
% rota
rota(X,X,[]).
rota(X,X,[]).
Problema: gerar todas as rotas que rota(X,Y,[N|R]) :-
levam de um aeroporto X a outro Y, vo(N,X,Z),
at encontrar uma de comprimento M. rota(Z,Y,R).
rota(Z,Y,R).
% rotas
Soluo: rotas(X,Y,M) :-
Declarar vos length(R,N),
Definir o conceito de rota rota(X,Y,R),
writeln(R),
Impor restries sobre comprimento
N=M, !.
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 28
Outros exemplos de programas
Digite:
?- manpce.
E escolha a opo File / Demo Programs

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 29


Exerccio 1 Interface grfica

Veja o que fazem o comandos a seguir:


?- new(D,dialog), send(D,open).

?- new(D,dialog('Teste')), send(D,open).

?- new(D,dialog('Teste')),
new(B,button(ok)),
send(D,append,B),
send(D,open).

?- new(D,dialog('Teste')),
new(B,button(ok,message(@prolog,writeln,ol))),
send(D,append,B),
send(D,open).

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 30


Exerccio 2 Restaurante

Sabendo-se que:
h duas opes de entrada (salada ou po)
trs opes de prato principal (peixe, carne ou massa)
duas opes de sobremesa (sorvete, pudim)
Quais so todas as possveis refeies completas que podem ser formadas?

entrada(salada).
entrada(salada).
entrada(po).
entrada(po).
prato(peixe).
prato(peixe).
prato(carne).
prato(carne).
prato(massa).
prato(massa).
sobremesa(sorvete).
sobremesa(sorvete).
sobremesa(pudim).
sobremesa(pudim).
refeio(R) :- ... % complete esta regra !

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 31


Exerccio 3 rvore genealgica

3.1. Declare os seguintes fatos:


Ado pai de Abel, Caim e Seth
Seth pai de Enos
3.2. Declare uma regra para definir a relao av e teste o sistema
av
X Y
pai
pai
Z

3.3. Declare a regra correspondente ao grafo a seguir, teste e corrija:


irmo
X Y
pai
pai
Z

Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 32


Fim

Você também pode gostar