Sei sulla pagina 1di 38

INTELIGNCIA ARTIFICIAL E SISTEMAS ESPECIALISTAS

Mini Apostila 1
Sistemas de Produo (baseado em Regras do tipo SE ... ENTO ...)
Enfoque: Representao de Conhecimento via Predicados

Sistemas de Produo Conceitos


Uma vez que a busca forma o ncleo de muitos processos inteligentes,
til estruturar os programas de IA de uma forma que facilite a descrio e
execuo dos processos de busca. Os sistemas de produo proporcionam tais
estruturas. Segue abaixo uma definio de sistema de produo.
Um sistema de produo consiste em:
 Um conjunto de regras, cada uma delas consistindo em um lado esquerdo
(um padro) que determina a aplicabilidade da regra e um lado direito que
descreve a operao a ser efetuada se a regra for aplicada.
 Uma ou mais bases de conhecimento/bases de dados que contenham
quaisquer informaes apropriadas a uma determinada tarefa. Certas
partes da base de dados podem ser permanentes, enquanto outras podem
pertencer apenas soluo do problema corrente. As informaes nestas
bases de dados podem ser estruturadas em qualquer modo que seja
apropriado.
 Uma estratgia de controle que especifique a ordem em que as regras
sero comparadas com a base de dados e uma maneira de solucionar
conflitos que surgirem quando vrias regras puderem ser aplicadas ao
mesmo tempo.
 Um aplicador de regras.
Ambientes de software que englobem de alguma forma estes itens
conceituais de sistemas de produo so genericamente designados por shells
de sistemas especialistas, proporcionando a construo de sistemas baseados
em conhecimento. Um destes shell de sistema especialista o software
PROLOG (Programao em Lgica).

Exerccio 1
1.1 Definio conceitual do problema
Suponha as seguintes informaes descritivas acerca de um
determinado contexto:

Vamos construir um sistema especialista (SE) para este problema.


Sabemos que:
Sistema Especialista = Base de Conhecimento + Motor de Inferncia
SE = BC + MI

Por enquanto, nada sabemos sobre o motor de inferncia, porm


sabemos que:

Base de Conhecimento = Fatos + Regras

Para o problema acima exposto, a nica regra da base de conhecimento


(BC) diz que todo humano mortal e nico fato da base de conhecimento
diz que Scrates humano.

1.2 Formalizao do conhecimento


Vamos formalizar o conhecimento usando lgica de predicados:
Predicado
Humano (x)
Mortal (x)

Descrio
x tem a propriedade de ser humano
x tem a propriedade de ser mortal

Regra da Base de Conhecimento:


x (humano(x) mortal(x))
Todo humano mortal ou ento, para todo objeto x, se x tem a
propriedade de ser humano, ento x tem a propriedade de ser
mortal.
Fato da Base de Conhecimento:
humano(socrates)

Acima temos ento os dados disponveis do sistema especialista. Os


dados so aqui chamados de Base de Conhecimento, que se caracterizam
por apresentar um ou mais fatos e uma ou mais regras de derivao (regras de
produo).

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.

 Cada regra do tipo SE...ENTO... em Prolog codificada indicando-se


esquerda o consequente da regra e direita o(s) antecedente(s) da regra:
Todo humano mortal ou seja, x (humano(x) mortal(x)), ou
ainda Se x humano ento x mortal. Em Prolog codifica-se
primeiro o consequente da regra: x mortal se x humano
 Cada varivel em Prolog escrita com a primeira letra em maisculo (no
exemplo, x varivel)
 Cada constante em Prolog escrita com todas as letras em minsculo (por
exemplo, socrates uma constante)
 No esquecer do ponto final ao fim da declarao de cada fato e cada regra
 Toda regra em Prolog codificada com o consequente esquerda
separado do(s) antecedente(s) pelo smbolo :- que significa se. Veja os
exemplos abaixo que significam a mesma coisa ou seja: x mortal se x
humano.
mortal(X) :- humano(X)
mortal(X) if humano(X)

1.4 Fazendo consultas Base de Conhecimento do SE


Vamos agora fazer uma consulta base de conhecimento do SE.
Desejamos saber se Scrates mortal. A meta (goal) da consulta obter um
resultado do tipo Sim ou No. No ambiente do Prolog, na janela
Dialog digite a seguinte meta (goal):
mortal(socrates)
1.4.1) Qual a resposta do SE ?

Figura 1 Ambiente de programao do Prolog

1.4.2) Faa outra consulta ao SE. Pergunte se Aristteles mortal. Qual o


resultado informado pelo SE ?
mortal(aristoteles)
1.4.3) Faa outra consulta ao SE. Pergunte quem mortal. Qual a resposta do
SE ?
mortal(QUEM)
Obs.: Observe que QUEM uma varivel, pois a primeira letra maiscula.
Nas consultas anteriores (goals), socrates e aristoteles so constantes, pois a
primeiras letras so minsculas !!!

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)

Troque a ordem de declarao dos fatos na base de conhecimento do SE da


seguinte forma:
.
.
.
humano(maria).
humano(socrates).
humano(joao).
.
.
.

2.2) Com a nova ordem de declarao de fatos na base de conhecimento,


repita a consulta (goal) ao SE: quem mortal ?.
2.2.1) Qual a resposta fornecida pelo SE ?
2.2.2) Qual a diferena da resposta fornecida pelo SE no item 3.2.1 da
resposta fornecida pelo SE no item 3.1 ?

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.

3.2 Formalizao do conhecimento


Vamos formalizar o conhecimento usando lgica de predicados:
Predicado
Humano (x)
Vegetal(x)
Mortal (x)

Descrio
x tem a propriedade de ser humano
x tem a propriedade de ser vegetal
x tem a propriedade de ser mortal

Regras da Base de Conhecimento:


x (humano(x) mortal(x))
Todo humano mortal ou ento, para todo objeto x, se x tem a
propriedade de ser humano, ento x tem a propriedade de ser mortal.
x (vegetal(x) mortal(x))

Todo vegetal mortal ou ento, para todo objeto x, se x tem a


propriedade de ser vegetal, ento x tem a propriedade de ser mortal.
Fatos da Base de Conhecimento:
humano(socrates), humano(mane), vegetal(abacateiro),
vegetal(limoeiro), vegetal(mamoeiro)
3.3 Codificando o SE
/*=====================*/
/* === Exercicio 3 === */
/*=====================*/
domains
servivo = symbol
predicates
humano(servivo)
vegetal(servivo)
mortal(servivo)
/*--------------------- */
/* Base de Conhecimento */
/*----------------------*/
clauses
/*--> Fatos <--*/
humano(socrates).
humano(mane).
vegetal(abacateiro).
vegetal(limoeiro).
vegetal(mamoeiro).
/*--> Regras <--*/
mortal(X) :- humano(X).
mortal(X) :- vegetal(X).

3.4 Fazendo consultas Base de Conhecimento do SE


3.4.1) Faa uma consulta ao SE para saber se o tomateiro mortal. Qual a
resposta fornecida pelo SE ?
mortal(tomateiro)
3.4.2) Faa uma consulta ao SE para saber se o jos mortal. Qual a resposta
fornecida pelo SE ?
mortal(jose)
3.4.3) Faa uma consulta ao SE para saber quem mortal. Qual a resposta
fornecida pelo SE ?

Troque a ordem de declarao das regras na base de conhecimento do SE da


seguinte forma:

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 ?

3.4.4.2) Qual a diferena da resposta fornecida pelo SE no item 4.4.4.1 da


resposta fornecida pelo SE no item 4.4.3 ?

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

Regra da Base de Conhecimento:


x (gosta_de(Tom,x) gosta_de(Bill,x))
Se Tom gosta do esporte x, ento Bill tambm gosta desse esporte.
Fatos da Base de Conhecimento:
gosta_de(ellen,tenis),gosta_de(john,futebol), gosta_de(tom,basebol),
gosta_de(eric,natacao), gosta_de(mark,tenis).

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).

4.4 Fazendo consultas Base de Conhecimento do SE


4.4.1) Faa uma consulta ao SE para saber quem gosta de jogar tenis. Qual a
resposta fornecida pelo SE ?
gosta_de(QUEM,tenis)
Inverta a ordem de declarao dos fatos na base de conhecimento do SE,
informando inicialmente que Mark gosta de tenis e depois diga que Ellen
gosta de tenis

.
.
.
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

irm da me de Y. Um indivduo X prima de Y se X for do sexo feminino


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 irm da me de Y.
5.2 Formalizao do conhecimento
Vamos formalizar o conhecimento usando lgica de predicados:
Predicado
Masculino(x)
Feminino(x)
Pai(x,y)
Mae(x,y)
Tio(x,y)
Tia(x,y)
Avo_m(x,y)
Avo_f(x,y)
Irmao(x,y)
Irma(x,y)
Primo(x,y)
Prima(x,y)

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

Regras da Base de Conhecimento:


Relao Tio:
xyz (masculino(x) irmao(x,z) pai(z,y) x y tio(x,y))
xyz (masculino(x) irmao(x,z) mae(z,y) x y tio(x,y))
Relao Tia:
xyz (feminino(x) irma(x,z) pai(z,y) x y tia(x,y))
xyz (feminino(x) irma(x,z) mae(z,y) x y tia(x,y))
Relao Av:
xyz (masculino(x) pai(x,z) pai(z,y) x y avo_m(x,y))
xyz (masculino(x) pai(x,z) mae(z,y) x y avo_m(x,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

and irmao(X,Z) and


X <> Y.
and irmao(X,Z) and
X <> Y.

tia(X,Y) :- feminino(X) and irma(X,Z) and


pai(Z,Y) and X <> Y.
tia(X,Y) :- feminino(X) and irma(X,Z) and
mae(Z,Y) and X <> Y.
avo_m(X,Y) :- masculino(X) and pai(X,Z) and
pai(Z,Y) and X <> Y.
avo_m(X,Y) :- masculino(X) and pai(X,Z) and
mae(Z,Y) and X <> Y.
avo_f(X,Y) :- feminino(X) and mae(X,Z) and
pai(Z,Y) and X <> Y.
avo_f(X,Y) :- feminino(X) and mae(X,Z) and
mae(Z,Y) and X <> Y.
irmao(X,Y) :- masculino(X) and pai(Z,X) and
pai(Z,Y) and X <> Y.
irmao(X,Y) :- masculino(X) and mae(Z,X) and
mae(Z,Y) and X <> Y.
irma(X,Y) :- feminino(X) and pai(Z,X) and
pai(Z,Y) and X <> Y.
irma(X,Y) :- feminino(X) and mae(Z,X) and
mae(Z,Y) and X <> Y.
primo(X,Y) :- masculino(X) and pai(Z,X) and
pai(W,Y) and irmao(Z,W) and X <> Y.
primo(X,Y) :- masculino(X) and pai(Z,X) and
mae(W,Y) and irmao(Z,W) and X <> Y.
primo(X,Y) :- masculino(X) and mae(Z,X) and
pai(W,Y) and irma(Z,W) and X <> Y.
primo(X,Y) :- masculino(X) and mae(Z,X) and
mae(W,Y) and irma(Z,W) and X <> Y.
prima(X,Y) :- feminino(X) and pai(Z,X) and
pai(W,Y) and irmao(Z,W) and X <> Y.
prima(X,Y) :- feminino(X) and pai(Z,X) and
mae(W,Y) and irmao(Z,W) and X <> Y.
prima(X,Y) :- feminino(X) and mae(Z,X) and
pai(W,Y) and irma(Z,W) and X <> Y.
prima(X,Y) :- feminino(X) and mae(Z,X) and
mae(W,Y) and irma(Z,W) and X <> Y.

5.4 Fazendo consultas Base de Conhecimento do SE


A seguir so solicitadas vrias consultas (goals) ao SE. Execute o
programa no ambiente Prolog e verifique os resultados. Indique quais
resultados foram duplicados. Voc tem alguma idia porqu alguns
resultados foram duplicados ?
5.4.1) De quem Maria irm ? ( goal Prolog: irma(maria,I) )
5.4.2) De quem Joaozinho irmo ? ( goal Prolog: irmao(joaozinho,I) )
5.4.3) Quem tia de quem ? ( goal Prolog: tia(TITIA,SOBRINH) )
5.4.4) Quem tio de quem ? ( goal Prolog: tia(TITIO,SOBRINH) )
5.4.5) Brbara prima de Jos? ( goal Prolog: prima(barbara,jose) )
5.4.6) Brbara prima de Claudia? ( goal Prolog: primo(barbara,claudia) )
5.4.7) Jos primo de Brbara? ( goal Prolog: primo(jose,barbara) )
5.4.8) Quem av de quem ? ( goal Prolog: avo_m(VOVOM,NET) )
5.4.9) Nastcia av de Carlos ? ( goal Prolog: avo_f(nastacia,carlos) )
5.4.10) Quem av de quem ? ( goal Prolog: avo_f(VOVOF,NET) )
5.4.11) Joo pai de quem ? ( goal Prolog: pai(joao,FILHO) )
5.4.12) Maria tia de Carla ? ( goal Prolog: tia(maria,carla) )
5.4.13) Joo tio de Carla ? ( goal Prolog: tio(joao,carla) ) (Obs.: compare a
resposta do SE com a rvore genealgica e explique esta resposta do SE)
5.4.14) Acrescente a este Sistema Especialista as regras para caracterizao
da relao de sobrinho e da relao de sobrinha.
5.4.15) Com estas novas regras acrescentadas ao SE, consulte
conhecimento para saber quem sobrinho de quem?
5.4.16) Com estas novas regras acrescentadas ao SE, consulte
conhecimento para saber se Carlos sobrinho de Ana?
5.4.17) Com estas novas regras acrescentadas ao SE, consulte
conhecimento para saber se Carlos sobrinho de Joao?
5.4.18) Com estas novas regras acrescentadas ao SE, consulte
conhecimento para saber de quem Cludia sobrinha ?

a base de
a base de
a base de
a base de

5.4.19) Acrescente a este Sistema Especialista a(s) regra(s) para


caracterizao da relao de neto e da relao de neta.

5.4.20) Com estas novas regras acrescentadas ao SE, consulte a base de


conhecimento para saber quem neto de Manoel?
5.4.21) Com estas novas regras acrescentadas ao SE, consulte a base de
conhecimento para saber de quem Cludia neta?

Algumas Observaes acerca dos Exerccios 1 a 5


 A ordem em que esto descritos os fatos e regras da base de conhecimento
no corpo do programa influencia a ordem de resposta do SE
 Relembremos uma definio de Computador Inteligente:

Computador inteligente aquele que responde uma


pergunta mesmo que a resposta a tal pergunta no esteja
explcitamente armazenada no computador.
Considerando-se esta definio, podemos notar que o computador
demonstrou comportamento inteligente, pois soube dizer, por exemplo, que
Scrates mortal, que o limoeiro mortal, que Bill gosta de jogar tenis e que
Joozo av de Brbara, apesar destes fatos no estarem explcitamente
registrados na base de conhecimento do SE.
 Considere o Exerccio 5 e a consulta (goal) Joo tio de Carla ?
(consulta 5.4.13). A consulta resultou em false, isto , o SE disse que Joo
no tio de Carla !! Analisando-se o esquema da rvore genealgica,
constatamos contudo que Joo tio de Carla, se considerarmos o fato de
que Joo casado com Maria, reconhecidamente tia de Carla. E foi
justamente por isso que o SE disseque Joo no tio de Carla: as
relaes de parentesco esto considerando apenas o parentesco
consanguneo. Ou seja o SE no tem registrado em sua base de
conhecimento informaes (regras) acerca de relaes extraconsanguneas e ento no pode justificar o fato de Joo ser tio de Carla
(se considerarmos relao no consangunea e que Joo esteja casado com

Maria !!). Este exemplo conduz a uma reflexo acerca da potncia de


um Sistema Especialista:

A acumulao e codificao de conhecimento um dos


mais importantes aspectos de um sistema especialista
A potncia de um sistema especialista deriva do
conhecimento que possui e no do particular formalismo
ou esquema de inferncia que empregue
Em outras palavras, um Sistema Especialista ter maior utilidade como
ferramenta de suporte tomada de deciso quanto maior for a quantidade de
conhecimento que estiver disposta em sua base de conhecimento.
Pensando em termos prticos um programa Prolog ser um bom
sistema especialista quanto maior for o nmero de regras escritas que,
obviamente, devem refletir as mais variadas possibilidades do problema
tratado.

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.

Analise a tabela acima e generalize as regras para o SE. A seguir


fornecido o modelo para formalizao deste SE. Utilize portanto os
predicados apresentados e escreva as regras adequadamente:

6.2 Formalizao do conhecimento


Vamos formalizar o conhecimento usando lgica de predicados:
Predicado
sangue(x,y)
rh(x,y)
podedoar(x,y)

Descrio
o sangue do indivduo x y
o fator RH do indivduo x y
o indivduo x pode doar sangue para o indivduo y

Veja alguns exemplos destes predicados no formato Prolog:


sangue(joao,AB)
Joo tem sangue AB
rh(joao, +)
Joo tem fator RH positivo
podedoar(joao,maria) Joo pode doar sangue para Maria
Codifique no seu SE os seguintes fatos:
Joozo tem sangue A+
Joo tem sangue A+
Maria tem sangue A-
Ana tem sangue A-
Brbara tem sangue O+
Cludia tem sangue A+
Manoel tem sangue A-

Nastcia tem sangue B+


Ana tem sangue B-
Neuza tem sangue B+
Manoelzinho tem sangue O+
Jos tem sangue AB+
Carlos tem sangue AB-
Carla tem sangue O-

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

7.4 Fazendo consultas Base de Conhecimento do SE


Execute as seguintes consultas, indicando corretamente a ordem das respostas
fornecidas pelo SE:
7.4.1) Quem fala francs ?
7.4.2) Quem fala ingls ?
7.4.3) Quem fala lingua popular ?
7.4.4) Quem nasceu na Inglaterra ?
7.4.5) Quem nasceu no Gabo ?
7.4.6) Esteban fala francs ?
7.4.6.a) Desenhe a rvore de refutao que o Prolog constri para a consulta
Lennon fala lngua popular.
7.4.6.b) Considere que o Prolog executa navegao em profundidade
regressiva (depth-first search & backward chaining) na rvore de refutao
que ele monta para responder as consultas. Suponha que desejemos calcular
um custo de navegao na rvore de refutao montada da seguinte
forma: (a) CUSTO = 0; (b) a cada n da rvore visitado que procurado
entre os fatos da base de conhecimentos fazemos CUSTO = CUSTO + 1.
Qual seria ento o custo para responder consulta Lennon fala lngua
popular ?
7.4.6.c) Considere que o Prolog executa navegao em amplitude
regressiva (breadth-first search & backward chaining) na rvore de
refutao que ele monta para responder as consultas. Qual seria ento o
custo da consulta do item 7.4.6.b acima ?

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

Dica: Abaixo est codificada no formato prolog uma regra de operao da


operadora op14:
podeoperar(op14,CIDADE) :- localidade(CIDADE,rn,_) .
8.3 Codificando o SE
Proceda a codificao em Prolog do SE acima especificado

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)

O composto qumico X um alcino


O composto qumico X metano
O composto qumico X etano
O composto qumico X propano
O composto qumico X butano
O composto qumico X tem Y ligaes
duplas
O composto qumico X eteno
O composto qumico X propeno
O composto qumico X buteno
O composto qumico X etino
O composto qumico X propino
O composto qumico X butino

Codifique no seu SE os seguintes fatos, na ordem abaixo citada:


O composto qumico a1 tem 3 tomos de carbono
O composto qumico a1 tem 6 tomos de hidrognio
O composto qumico a2 tem 3 tomos de carbono
O composto qumico a2 tem 4 tomos de hidrognio
O composto qumico a2 tem 2 ligaes duplas
O composto qumico a3 tem 3 tomos de carbono
O composto qumico a3 tem 8 tomos de hidrognio
O composto qumico a4 tem 2 tomos de carbono
O composto qumico a4 tem 2 tomos de hidrognio
O composto qumico a5 tem 2 tomos de carbono
O composto qumico a5 tem 4 tomos de hidrognio
O composto qumico a6 tem 2 tomos de carbono
O composto qumico a6 tem 4 tomos de hidrognio
O composto qumico a6 tem 2 ligaes duplas
O composto qumico a7 tem 8 tomos de carbono
O composto qumico a7 tem 18 tomos de hidrognio
O composto qumico a8 tem 9 tomos de carbono
O composto qumico a8 tem 8 tomos de hidrognio
O composto qumico a9 tem 6 tomos de carbono

O composto qumico a9 tem 6 tomos de hidrognio


O composto qumico a9 tem 4 ligaes duplas

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.

A acumulao e codificao de conhecimento um dos


mais importantes aspectos de um sistema especialista
A potncia de um sistema especialista deriva do
conhecimento que possui e no do particular formalismo ou
esquema de inferncia que empregue

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)

A companhia X pretende instalar filial no pas Y


O pas X fala espanhol
O pas X tem renda per capita anual de Us$ Y
O pas X um pas europeu

Codifique no seu SE os seguintes fatos, na ordem abaixo citada:


a Bulgria um pas europeu
a Itlia um pas europeu
a Albnia um pas europeu
o Equador fala espanhol
em Cuba fala-se espanhol
o Chile fala espanhol
o Equador tem renda per capita de $ 21000
o Canad tem renda per capita de $ 38000
o Uruguai tem renda per capita de $ 23000
a Frana tem renda per capita de $ 36000

11.3 Codificando o SE
Proceda a codificao em Prolog do SE acima especificado

11.4 Fazendo consultas Base de Conhecimento do SE


Execute as seguintes consultas, indicando corretamente a ordem das respostas
fornecidas pelo SE:
(Obs.: Suponha que a CBMAR seja representada pela constante cbmar e a
CBGOI seja representada pela constante cbgoi)
11.4.1) Em quais pases a CBMAR pretende abrir filiais ?
11.4.2) Em quais pases a CBGOI pretende abrir filiais ?
11.4.3) A CBGOI pretende abrir filial na Frana ?
11.4.4) A CBMAR pretende abrir filial na Frana ?
11.4.5) A CBGOI pretende abrir filial na Itlia ?
11.4.6) A CBMAR pretende abrir filial na Itlia ?
11.4.7) Quais pases falam espanhol ?
11.4.8) Quais pases so europeus ?

Exerccio 12
Resolva o problema de lgica abaixo apresentado, atravs de um programa Prolog.

Uma possvel soluo Prolog


domains
pessoa = symbol
prof = symbol
predicates
homem(pessoa)
casado(pessoa,pessoa)
profissao(pessoa,prof)
clauses
homem(carlos).
homem(luis).
homem(paulo).
profissao(paulo,advogado).
profissao(X,medico) :- homem(X) and X <> "paulo" and X <> "carlos".
profissao(X,engenheiro) :- homem(X) and not(profissao(X, medico))
and not (profissao(X,advogado)).
casado(X,maria) :- profissao(X,medico).
casado(X,patricia) :- homem(X) and X <> "paulo" and not(profissao(X,medico)).
casado(X,lucia) :- homem(X) and not(casado(X,maria))
and not (casado(X,patricia)).

Consultas Prolog para Resolver o Problema:

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.