Professional Documents
Culture Documents
Mini Apostila 1
Sistemas de Produo (baseado em Regras do tipo SE ... ENTO ...)
Enfoque: Representao de Conhecimento via Predicados
Exerccio 1
1.1 Definio conceitual do problema
Suponha as seguintes informaes descritivas acerca de um
determinado contexto:
Descrio
x tem a propriedade de ser humano
x tem a propriedade de ser mortal
1.3 Codificando o SE
Vamos codificar o SE acima usando uma ferramenta shell de Sistema
Especialista, o PROLOG. Observe a codificao abaixo e tente captar alguns
aspectos bsicos da sintaxe do Prolog.
/*=====================*/
/* === Exercicio 1 === */
/*=====================*/
domains
pessoa = symbol
predicates
humano(pessoa)
mortal(pessoa)
/*--------------------- */
/* Base de Conhecimento */
/*----------------------*/
clauses
/*--> Fatos <--*/
humano(socrates).
/*--> Regras <--*/
mortal(X) :- humano(X).
Algumas observaes sobre o Prolog:
Comentrio deve vir entre /* e */
Temos as palavras-chave domains, predicates e clauses
Basicamente, a caracterizao de conhecimento no Prolog se d pela
definio de predicados. No exemplo vemos os predicados humano e
mortal.
Exerccio 2
Considere o SE construdo no Exerccio 1. Acrescente os seguintes
fatos Base de Conhecimento: Joo humano e Maria humana.
Acrescente-os escrevendo-os abaixo do fato humano(socrates):
.
.
.
humano(socrates).
humano(joao).
humano(maria).
.
.
.
2.1) Faa uma consulta ao SE. Pergunte quem mortal. Qual a resposta
fornecida pelo SE ?
mortal(QUEM)
Exerccio 3
3.1 Definio conceitual do problema
Suponha as seguintes informaes descritivas acerca de uma situao:
Todo humano mortal, assim como todo vegetal. Scrates e Man so
humanos e o abacateiro, limoeiro e mamoeiro so vegetais.
Descrio
x tem a propriedade de ser humano
x tem a propriedade de ser vegetal
x tem a propriedade de ser mortal
mortal(X) :- vegetal(X).
mortal(X) :- humano(X).
3.4.4) Com a nova ordem de declarao de fatos na base de conhecimento,
repita a consulta (goal) ao SE: quem mortal ?.
3.4.4.1) Qual a resposta fornecida pelo SE ?
Exerccio 4
4.1 Definio conceitual do problema
Suponha as seguintes informaes acerca de uma situao: Ellen gosta
de jogar tenis e John gosta de futebol. Tom gosta de baseball e Eric de
natao, enquanto Mark, assim como Ellen, gosta de tenis. Alm disso, Bill
gosta de todo esporte adorado por Tom.
4.2 Formalizao do conhecimento
Vamos formalizar o conhecimento usando lgica de predicados:
Predicado
Gosta_de(x,y)
Descrio
x gosta de praticar y
4.3 Codificando o SE
/*=====================*/
/* === Exercicio 4 === */
/*=====================*/
domains
pessoa, atividade = symbol
predicates
gosta_de(pessoa,atividade)
/*--------------------- */
/* Base de Conhecimento */
/*----------------------*/
clauses
/*--> Fatos <--*/
gosta_de(ellen,tenis).
gosta_de(john,futebol).
gosta_de(tom,basebol).
gosta_de(eric,natacao).
gosta_de(mark,tenis).
/*--> Regras <--*/
gosta_de(bill,X) :- gosta_de(tom,X).
.
.
.
gosta_de(mark,tenis).
gosta_de(ellen,tenis).
.
.
.
4.4.2) Com a nova ordem de declarao de fatos na base de conhecimento,
repita a consulta (goal) ao SE: quem gosta de jogar tenis ?.
4.4.2.1) Qual a resposta fornecida pelo SE ?
4.4.2.2) Qual a diferena da resposta fornecida pelo SE no item 4.4.2.1 da
resposta fornecida pelo SE no item 4.4.1 ?
4.4.3) Faa uma consulta ao SE para saber quais as pessoas registradas na
base de conhecimento e seus esportes favoritos:
gosta_de(QUEM,DOQUE)
4.4.4) Consulte o SE para saber quais esportes Bill gosta de praticar. Qual a
resposta fornecida pelo SE ?
gosta_de(bill,DOQUE)
Acrescente base de conhecimento o fato de Bill gostar de jogar ping-pong.
.
.
.gosta_de(bill,ping-pong).
.
.
.
4.4.5) Repita agora a consulta ao SE para saber quais esportes Bill gosta de
praticar. Qual a resposta fornecida pelo SE ? Qual a diferena desta resposta
para a resposta do item 4.4.4 ?
Exerccio 5
5.1 Definio conceitual do problema
Considere a seguinte descrio para caracterizao, em um sistema
especialista (muito simples), da rvore genealgica: Um indivduo X tio de
um indivduo Y se X for do sexo masculino e: X for irmo do pai de Y ou X
for irmo da me de Y. Um indivduo X tia de um indivduo Y se X for do
sexo feminino e: X for irm do pai de Y ou X for irm da me de Y. Um
indivduo X av de um indivduo Y se X for do sexo masculino e: X pai
do pai de Y ou X for pai da me de Y. Um indivduo X av de um
indivduo Y se X for do sexo feminino e: X me do pai de Y ou X for me
da me de Y. Um indivduo X irmo de Y se X for do sexo masculino e: o
pai de X tambm pai de Y ou a me de X for tambm me de Y. Um
indivduo X irm de Y se X for do sexo feminino e: o pai de X tambm
pai de Y ou a me de X for tambm me de Y. Um indivduo X primo de Y
se X for do sexo masculino e: o pai de X for irmo do pai de Y ou o pai de X
for irmo da me de Y ou a me de X for irm do pai de Y ou a me de X for
Descrio
x do sexo masculino
x do sexo feminino
x pai de y
x me de y
x tio de y
x tia de y
x av de y
x av de y
x irmo de y
x irm de y
x primo de y
x prima de y
Relao Av:
xyz (feminino(x) mae(x,z) pai(z,y) x y avo_f(x,y))
xyz (feminino(x) mae(x,z) mae(z,y) x y avo_f(x,y))
Relao Irmo:
xyz (masculino(x) pai(z,x) pai(z,y) x y irmao(x,y))
xyz (masculino(x) mae(z,x) mae(z,y) x y irmao(x,y))
Relao Irm:
xyz (feminino(x) pai(z,x) pai(z,y) x y irma(x,y))
xyz (feminino(x) mae(z,x) mae(z,y) x y irma(x,y))
Relao Primo:
xyzw (masculino(x) pai(z,x) pai(w,y) irmao(z,w) x y
primo(x,y))
xyzw (masculino(x) pai(z,x) mae(w,y) irmao(z,w) x y
primo(x,y))
xyzw (masculino(x) mae(z,x) pai(w,y) irma(z,w) x y
primo(x,y))
xyzw (masculino(x) mae(z,x) mae(w,y) irma(z,w) x y
primo(x,y))
Relao Prima:
xyzw (feminino(x) pai(z,x) pai(w,y) irmao(z,w) x y
primo(x,y))
xyzw (feminino(x) pai(z,x) mae(w,y) irmao(z,w) x y
primo(x,y))
xyzw (feminino(x) mae(z,x) pai(w,y) irma(z,w) x y
primo(x,y))
xyzw (feminino(x) mae(z,x) mae(w,y) irma(z,w) x y
primo(x,y))
Fatos da Base de Conhecimento: (Veja abaixo o esboo de uma rvore
genealgica e na seo seguinte veja os fatos codificados)
5.3 Codificando o SE
/*=====================*/
/* === Exercicio 5 === */
/*=====================*/
domains
pessoa = symbol
predicates
masculino(pessoa)
feminino(pessoa)
pai(pessoa,pessoa)
mae(pessoa,pessoa)
tio(pessoa,pessoa)
tia(pessoa,pessoa)
avo_m(pessoa,pessoa)
avo_f(pessoa,pessoa)
irma(pessoa,pessoa)
irmao(pessoa,pessoa)
primo(pessoa,pessoa)
prima(pessoa,pessoa)
/*--------------------- */
/* Base de Conhecimento */
/*----------------------*/
clauses
/*--> Fatos <--*/
masculino(joaozao).
masculino(joao).
masculino(joaozinho).
masculino(manoelzao).
masculino(manoelzinho).
masculino(jose).
masculino(carlos).
feminino(maria).
feminino(barbara).
feminino(claudia).
feminino(nastacia).
feminino(ana).
feminino(neuza).
feminino(carla).
pai(joaozao,joao).
pai(joao,joaozinho).
pai(joao,barbara).
pai(joao,claudia).
pai(manoelzao,maria).
pai(manoelzao,ana).
pai(manoelzao,neuza).
mae(maria,joaozinho).
mae(maria,barbara).
mae(maria,claudia).
mae(nastacia,maria).
mae(nastacia,ana).
mae(nastacia,neuza).
mae(ana,manoelzinho).
mae(ana,jose).
mae(neuza,carlos).
mae(neuza,carla).
/*--> Regras <--*/
tio(X,Y) :- masculino(X)
pai(Z,Y) and
tio(X,Y) :- masculino(X)
mae(Z,Y) and
a base de
a base de
a base de
a base de
Exerccio 6
6.1 Definio conceitual do problema
Sistema Sanguneo ABO e Fator RH em grupos humanos
Construa um sistema especialista que permita identificar
compatibilidade de doao de sangue entre indivduos. Sabe-se que cada
indivduo tem um tipo de sangue (A, B, O ou AB) e um fator chamado
fator-RH que pode ser + ou -. Abaixo apresentada a tabela de
compatibilidade de doao/recepo de sangue entre seres humanos.
Descrio
o sangue do indivduo x y
o fator RH do indivduo x y
o indivduo x pode doar sangue para o indivduo y
6.3 Codificando o SE
Proceda a codificao... Atente para a codificao do fator RH como
mostrado no exemplo acima !
6.4 Fazendo consultas Base de Conhecimento do SE
Execute consultas tais como quem pode doar sangue para quem?,
para quem pode Brbara doar sangue ?, quem doador de fator RH+,
de quem um indivduo fator RH- pode receber sangue?, etc...
Exerccio 7
7.1 Definio conceitual do problema
Se o indivduo nasceu na Frana, ento ele fala francs. Se o indivduo
nasceu no Gabo, ento ele fala francs. Se o indivduo nasceu na Guiana
Francesa, ento ele fala francs. Se o indivduo nasceu na Arglia, ento ele
fala francs. Se o indivduo nascido na cidade de Caiena, ento ele nasceu
na Guiana Francesa. Se o indivduo nascido na cidade de Londres, ento ele
nasceu na Inglaterra. Se o indivduo nascido na cidade de Liverpool, ento
ele nasceu na Inglaterra. Se o indivduo nasceu nos EUA, ento ele fala
ingls. Se o indivduo nasceu na Inglaterra, ento ele fala ingls. Se o
indivduo nasceu na Espanha, ento ele fala espanhol. Se o indivduo nasceu
em Cuba, ento ele fala espanhol. Se o indivduo fala francs ou ingls ou
espanhol, ento ele fala uma lngua popular.
7.2 Formalizao do conhecimento
Formalize os predicados para este SE...
Codifique no seu SE os seguintes fatos, na ordem abaixo citada:
Jean nasceu em Caiena
Esteban nasceu em Cuba
Jacques nasceu na Frana
Lennon nasceu em Liverpool
Marie fala francs
McCartney nasceu na Inglaterra
7.3 Codificando o SE
Proceda a codificao em Prolog do SE acima especificado
Exerccio 8
8.1 Definio conceitual do problema
A operadora telefnica op14 est autorizada a funcionar no pas no estado
de Santa Catarina, e no estado Gois, nas cidades com menos de 40.000
habitantes. Pode operar tambm em todo o estado do Rio Grande do Norte,
independente do tamanho populacional. Outra operadora, a op21, por sua
vez, est autorizada a operar em qualquer cidade do pas que tenha mais de
100.000 habitantes ou em todas as cidades do estado do Acre. Ambas as
operadoras, op14 e op21, podem operar no estado de So Paulo
Construa um sistema especialista que seja capaz de responder perguntas
sobre quais cidades as operadoras op14 e op21 podem operar.
8.2 Formalizao do conhecimento
Formalize o SE acima com os seguintes predicados:
Predicado
localidade(X,Y,Z)
podeoperar(X,Y)
Descrio
X uma cidade do estado de Y com Z habitantes
a operadora X pode operar na cidade de Y
Exerccio 9
9.1 Definio conceitual do problema
Hidrocarbonetos so compostos qumicos constitudos exclusivamente de
Carbono e Hidrognio. Todo alcano hidrocarboneto, assim como todo
alceno e todo alcino. Os alcanos so hidrocarbonetos que possuem sempre n
tomos de carbono e (2n + 2) tomos de hidrognio. O metano um alcano
com um tomo de carbono e quatro tomos de hidrognio. O etano um
alcano com dois tomos de carbono e seis tomos de hidrognio. O propano
um alcano com trs tomos de carbono e oito tomos de hidrognio. O
butano um alcano com quatro tomos de carbono e dez tomos de
hidrognio. Os alcenos por sua vez, so hidrocarbonetos que possuem sempre
n tomos de carbono e (2n 2[k 1]) tomos de hidrognio, onde k o
nmero de ligaes duplas que existem entre os tomos de carbono. Assim, o
eteno um alceno com dois tomos de carbono e quatro tomos de
hidrognio. O propeno um alceno com trs tomos de carbono e seis
tomos de hidrognio. E o butileno um alceno com quatro tomos de
carbono e oito tomos de hidrognio. Finalmente, os alcinos so
hidrocarbonetos que possuem sempre n tomos de carbono e (2n - 2) tomos
de hidrognio. O etino um alcino que possui dois tomos de carbono e dois
tomos de hidrognio. O propino um alcino que possui trs tomos de
carbono e quatro tomos de hidrognio. E o butino um alcino que possui
quatro tomos de carbono e seis tomos de hidrognio.
9.2 Formalizao do conhecimento
Predicado
Hidrocarboneto(X)
Tem_carbono(X,Y)
Tem_hidrogenio(X)
Alcano(X)
Alceno(X)
Descrio
O composto qumico X um
hidrocarboneto
O composto qumico X tem Y tomos de
carbono
O composto qumico X tem Y tomos de
hidrognio
O composto qumico X um alcano
O composto qumico X um alceno
Alcino(X)
Metano(X)
Etano(X)
Propano(X)
Butano(X)
Tem_ligacoes_duplas(X,Y)
Eteno(X)
Propeno(X)
Buteno(X)
Etino(X)
Propino(X)
Butino(X)
9.3 Codificando o SE
Proceda a codificao em Prolog do SE acima especificado
9.4 Fazendo consultas Base de Conhecimento do SE
Execute as seguintes consultas, indicando corretamente a ordem das respostas
fornecidas pelo SE:
Considerando os compostos qumicos a1, a2, a3, a4, a5, a6, a7, a8 e a9:
9.4.1) Quais compostos so hidrocarbonetos ?
9.4.2) Quais compostos so alcanos ?
9.4.3) Quais compostos so alcenos ?
9.4.4) Quais compostos so alcinos ?
9.4.5) Quais compostos so metano?
9.4.6) Quais compostos so propano ?
9.4.7) Quais compostos so propeno ?
9.4.8) Quais compostos so butileno ?
9.4.5) Quais compostos so etano ?
9.4.6) Quais compostos so eteno ?
9.4.7) Quais compostos so etino ?
9.4.8) Quais compostos tm 4 tomos de hidrognio ?
9.4.9) Quais compostos tm ligao dupla ?
9.4.10) O composto qumico a6 alceno ?
9.4.11) O composto qumico a6 alcino ?
Exerccio 10
Comente, com suas palavras, sobre as consideraes feitas acerca da
performance, de um modo geral, de sistemas especialistas. Ou seja, explique
o que o autor abaixo enfatiza com relao ao desempenho, de um modo geral
dos sistemas especialistas.
Exerccio 11
11.1 Definio conceitual do problema
A Companhia Brasileira de Marmelo CBMAR pretende abrir filiais em
pases de lngua espanhola ou pases que tenham renda per capita anual
superior a Us$ 25.000. J a Companhia Brasileira de Goiabada CBGOI
pretende abrir filiais em todos os pases europeus exceto Albnia e
Eslovquia
Construa um sistema especialista que seja capaz de responder perguntas
sobre quais pases a CBMAR e CBGOI pretendem se instalar.
11.2 Formalizao do conhecimento
Formalize o SE acima com os seguintes predicados:
Filial (X,Y)
Espanhol (X)
Renda(X,Y)
PasEuropeu(X)
11.3 Codificando o SE
Proceda a codificao em Prolog do SE acima especificado
Exerccio 12
Resolva o problema de lgica abaixo apresentado, atravs de um programa Prolog.
Exerccio 13
Resolva o problema de lgica abaixo apresentado, atravs de um programa Prolog.
SABOR REFRESCANTE
Numa Tarde de sol, Ana, Bianca e Rita foram tomar um sorvete numa sorveteria que vendia deliciosos
sabores de frutas. Com base nas dicas, tente descobrir o nome de cada garota, o tipo de sorvete tomado
e o seu sabor:
1. Rita tomou sorvete de copinho
2. Uma das garotas tomou sorvete de casquinha sabor mangaba
3. Bianca no escolheu nem o sabor mangaba nem o laranja
Exerccio 14
Resolva o problema de lgica abaixo apresentado, atravs de um programa Prolog.
BEBIDA ESPECIAL
Cludio e dois outros amigos estavam conversando sobre suas bebidas preferidas para um jantar
especial. Cada um deles mencionou a bebida de que mais gostava. Com base nas dicas abaixo, tente
descobrir o nome completo de cada um, e o tipo de bebida que cada um mais gosta.
1. O rapaz cujo sobrenome Borges, disse preferir caipirinha.
2. Cludio no prefere caipirinha nem cerveja.
3. O sobrenome de Leandro no Brito nem Borges.