38
INTELIGÊNCIA ARTIFICIAL E SISTEMAS ESPECIALISTAS Mini Apostila 1 Sistemas de Produção (baseado em Regras do tipo SE ... ENTÃO ...) Enfoque: Representação de Conhecimento via “Predicados

Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Embed Size (px)

DESCRIPTION

Excelente apostila de inteligencia artificial que ensina passo a passo a utilização dos conceitos na pratica.

Citation preview

Page 1: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

INTELIGÊNCIA ARTIFICIAL E SISTEMAS ESPECIALISTAS

Mini Apostila 1

Sistemas de Produção (baseado em Regras do tipo SE ... ENTÃO ...)

Enfoque: Representação de Conhecimento via “Predicados”

Page 2: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Sistemas de Produção – Conceitos

Uma vez que a busca forma o núcleo de muitos processos inteligentes, éútil estruturar os programas de IA de uma forma que facilite a descrição eexecução dos processos de busca. Os sistemas de produção proporcionam taisestruturas. Segue abaixo uma definição de sistema de produção.

Um sistema de produção consiste em:

� Um conjunto de regras, cada uma delas consistindo em um lado esquerdo(um padrão) que determina a aplicabilidade da regra e um lado direito quedescreve a operação a ser efetuada se a regra for aplicada.

� Uma ou mais bases de conhecimento/bases de dados que contenhamquaisquer informações apropriadas a uma determinada tarefa. Certaspartes da base de dados podem ser permanentes, enquanto outras podempertencer apenas à solução do problema corrente. As informações nestasbases de dados podem ser estruturadas em qualquer modo que sejaapropriado.

� Uma estratégia de controle que especifique a ordem em que as regrasserão comparadas com a base de dados e uma maneira de solucionarconflitos que surgirem quando várias regras puderem ser aplicadas aomesmo tempo.

� Um aplicador de regras.

Ambientes de software que englobem de alguma forma estes itensconceituais de sistemas de produção são genericamente designados por shellsde sistemas especialistas, proporcionando a construção de sistemas baseadosem conhecimento. Um destes shell de sistema especialista é o softwarePROLOG (Programação em Lógica).

Page 3: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 1

1.1 Definição conceitual do problema

Suponha as seguintes informações descritivas acerca de umdeterminado contexto:

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

Sistema Especialista = Base de Conhecimento + Motor de Inferência

SE = BC + MI

Por enquanto, nada sabemos sobre o motor de inferência, porémsabemos que:

Page 4: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

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 conhecimentodiz que “Sócrates é humano”.

1.2 Formalização do conhecimento

Vamos formalizar o conhecimento usando lógica de predicados:

Predicado DescriçãoHumano (x) “x tem a propriedade de ser humano”Mortal (x) “x tem a propriedade de ser mortal”

Regra da Base de Conhecimento:

∀x (humano(x) → mortal(x))

“Todo humano é mortal” ou então, “para todo objeto x, se x tem apropriedade de ser humano, então x tem a propriedade de sermortal”.

Fato da Base de Conhecimento:

humano(socrates)

Acima temos então os “dados” disponíveis do sistema especialista. Os“dados” são aqui chamados de Base de Conhecimento, que se caracterizampor apresentar um ou mais fatos e uma ou mais regras de derivação (regras deprodução).

Page 5: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

1.3 “Codificando” o SE

Vamos codificar o SE acima usando uma ferramenta shell de SistemaEspecialista, o PROLOG. Observe a codificação abaixo e tente captar algunsaspectos básicos da sintaxe do Prolog.

/*=====================*//* === Exercicio 1 === *//*=====================*/domains pessoa = symbolpredicates humano(pessoa) mortal(pessoa)/*--------------------- *//* Base de Conhecimento *//*----------------------*/clauses/*--> Fatos <--*/ humano(socrates)./*--> Regras <--*/ mortal(X) :- humano(X).

Algumas observações sobre o Prolog:

� Comentário deve vir entre /* e */

� Temos as palavras-chave domains, predicates e clauses

� Basicamente, a caracterização de conhecimento no Prolog se dá peladefinição de predicados. No exemplo vemos os predicados humano emortal.

Page 6: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

� Cada regra do tipo SE...ENTÃO... 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)), ouainda “Se x é humano então x é mortal”. Em Prolog codifica-seprimeiro o consequente da regra: “x é mortal se x é humano”

� Cada variável em Prolog é escrita com a primeira letra em maiúsculo (noexemplo, x é variável)

� Cada constante em Prolog é escrita com todas as letras em minúsculo (porexemplo, socrates é uma constante)

� Não esquecer do ponto final ao fim da declaração de cada fato e cada regra

� Toda regra em Prolog é codificada com o consequente à esquerdaseparado do(s) antecedente(s) pelo símbolo :- que significa se. Veja osexemplos 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 Sócrates é mortal. A meta (goal) da consulta é obter umresultado do tipo “Sim” ou “Não”. No “ambiente” do Prolog, na “janela”Dialog digite a seguinte meta (goal):

mortal(socrates)

1.4.1) Qual a resposta do SE ?

Page 7: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Figura 1 – “Ambiente de programação” do Prolog

1.4.2) Faça outra consulta ao SE. Pergunte se Aristóteles é mortal. Qual oresultado informado pelo SE ?

mortal(aristoteles)

1.4.3) Faça outra consulta ao SE. Pergunte quem é mortal. Qual a resposta doSE ?

mortal(QUEM)

Obs.: Observe que QUEM é uma variável, pois a primeira letra é maiúscula.Nas consultas anteriores (goals), socrates e aristoteles são constantes, pois aprimeiras letras são minúsculas !!!

Page 8: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 2

Considere o SE construído no Exercício 1. Acrescente os seguintesfatos à Base de Conhecimento: “João é humano” e “Maria é humana”.Acrescente-os escrevendo-os abaixo do fato humano(socrates):

.

.

.humano(socrates).humano(joao).humano(maria)....

2.1) Faça uma consulta ao SE. Pergunte quem é mortal. Qual a respostafornecida pelo SE ?

mortal(QUEM)

Troque a ordem de declaração dos fatos na base de conhecimento do SE daseguinte forma:

.

.

.humano(maria).humano(socrates).humano(joao)....

Page 9: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

2.2) Com a nova ordem de declaração 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 diferença da resposta fornecida pelo SE no item 3.2.1 daresposta fornecida pelo SE no item 3.1 ?

Exercício 3

3.1 Definição conceitual do problema

Suponha as seguintes informações descritivas acerca de uma situação:

“Todo humano é mortal, assim como todo vegetal. Sócrates e Mané sãohumanos e o abacateiro, limoeiro e mamoeiro são vegetais”.

3.2 Formalização do conhecimento

Vamos formalizar o conhecimento usando lógica de predicados:

Predicado DescriçãoHumano (x) “x tem a propriedade de ser humano”Vegetal(x) “x tem a propriedade de ser vegetal”Mortal (x) “x tem a propriedade de ser mortal”

Regras da Base de Conhecimento:

∀x (humano(x) → mortal(x))

“Todo humano é mortal” ou então, “para todo objeto x, se x tem apropriedade de ser humano, então x tem a propriedade de ser mortal”.

∀x (vegetal(x) → mortal(x))

Page 10: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

“Todo vegetal é mortal” ou então, “para todo objeto x, se x tem apropriedade de ser vegetal, então 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 = symbolpredicates 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).

Page 11: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

3.4 Fazendo consultas à Base de Conhecimento do SE

3.4.1) Faça uma consulta ao SE para saber se o tomateiro é mortal. Qual aresposta fornecida pelo SE ?

mortal(tomateiro)

3.4.2) Faça uma consulta ao SE para saber se o josé é mortal. Qual a respostafornecida pelo SE ?

mortal(jose)

3.4.3) Faça uma consulta ao SE para saber quem é mortal. Qual a respostafornecida pelo SE ?

Troque a ordem de declaração das regras na base de conhecimento do SE daseguinte forma:

mortal(X) :- vegetal(X). mortal(X) :- humano(X).

3.4.4) Com a nova ordem de declaração de fatos na base de conhecimento,repita a consulta (goal) ao SE: “quem é mortal ?”.

3.4.4.1) Qual a resposta fornecida pelo SE ?

Page 12: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

3.4.4.2) Qual a diferença da resposta fornecida pelo SE no item 4.4.4.1 daresposta fornecida pelo SE no item 4.4.3 ?

Exercício 4

4.1 Definição conceitual do problema

Suponha as seguintes informações acerca de uma situação: “Ellen gostade jogar tenis e John gosta de futebol. Tom gosta de baseball e Eric denatação, enquanto Mark, assim como Ellen, gosta de tenis. Além disso, Billgosta de todo esporte adorado por Tom”.

4.2 Formalização do conhecimento

Vamos formalizar o conhecimento usando lógica de predicados:

Predicado DescriçãoGosta_de(x,y) “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, então Bill também 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).

Page 13: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

4.3 “Codificando” o SE

/*=====================*//* === Exercicio 4 === *//*=====================*/domains pessoa, atividade = symbolpredicates 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) Faça uma consulta ao SE para saber quem gosta de jogar tenis. Qual aresposta fornecida pelo SE ?

gosta_de(QUEM,tenis)

Inverta a ordem de declaração dos fatos na base de conhecimento do SE,informando inicialmente que “Mark gosta de tenis” e depois diga que “Ellengosta de tenis”

Page 14: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

.

.

.gosta_de(mark,tenis).gosta_de(ellen,tenis)....

4.4.2) Com a nova ordem de declaração 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 diferença da resposta fornecida pelo SE no item 4.4.2.1 daresposta fornecida pelo SE no item 4.4.1 ?

4.4.3) Faça uma consulta ao SE para saber quais as pessoas registradas nabase de conhecimento e seus esportes favoritos:

gosta_de(QUEM,DOQUE)

Page 15: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

4.4.4) Consulte o SE para saber quais esportes Bill gosta de praticar. Qual aresposta 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 depraticar. Qual a resposta fornecida pelo SE ? Qual a diferença desta respostapara a resposta do item 4.4.4 ?

Exercício 5

5.1 Definição conceitual do problema

Considere a seguinte descrição para caracterização, em um sistemaespecialista (muito simples), da árvore genealógica: “Um indivíduo X é tio deum indivíduo Y se X for do sexo masculino e: X for irmão do pai de Y ou Xfor irmão da mãe de Y. Um indivíduo X é tia de um indivíduo Y se X for dosexo feminino e: X for irmã do pai de Y ou X for irmã da mãe de Y. Umindivíduo X é avô de um indivíduo Y se X for do sexo masculino e: X é paido pai de Y ou X for pai da mãe de Y. Um indivíduo X é avó de umindivíduo Y se X for do sexo feminino e: X é mãe do pai de Y ou X for mãeda mãe de Y. Um indivíduo X é irmão de Y se X for do sexo masculino e: opai de X é também pai de Y ou a mãe de X for também mãe de Y. Umindivíduo X é irmã de Y se X for do sexo feminino e: o pai de X é tambémpai de Y ou a mãe de X for também mãe de Y. Um indivíduo X é primo de Yse X for do sexo masculino e: o pai de X for irmão do pai de Y ou o pai de Xfor irmão da mãe de Y ou a mãe de X for irmã do pai de Y ou a mãe de X for

Page 16: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

irmã da mãe de Y. Um indivíduo X é prima de Y se X for do sexo femininoe: o pai de X for irmão do pai de Y ou o pai de X for irmão da mãe de Y ou amãe de X for irmã do pai de Y ou a mãe de X for irmã da mãe de Y.

5.2 Formalização do conhecimento

Vamos formalizar o conhecimento usando lógica de predicados:

Predicado DescriçãoMasculino(x) “x é do sexo masculino”Feminino(x) “x é do sexo feminino”Pai(x,y) “x é pai de y”Mae(x,y) “x é mãe de y”Tio(x,y) “x é tio de y”Tia(x,y) “x é tia de y”Avo_m(x,y) “x é avô de y”Avo_f(x,y) “x é avó de y”Irmao(x,y) “x é irmão de y”Irma(x,y) “x é irmã de y”Primo(x,y) “x é primo de y”Prima(x,y) “x é prima de y”

Regras da Base de Conhecimento:

Relação “Tio”:∀x∀y∀z (masculino(x) ∧ irmao(x,z) ∧ pai(z,y) ∧ x ≠ y → tio(x,y))∀x∀y∀z (masculino(x) ∧ irmao(x,z) ∧ mae(z,y) ∧ x ≠ y → tio(x,y))

Relação “Tia”:∀x∀y∀z (feminino(x) ∧ irma(x,z) ∧ pai(z,y) ∧ x ≠ y → tia(x,y))∀x∀y∀z (feminino(x) ∧ irma(x,z) ∧ mae(z,y) ∧ x ≠ y → tia(x,y))

Relação “Avô”:∀x∀y∀z (masculino(x) ∧ pai(x,z) ∧ pai(z,y) ∧ x ≠ y → avo_m(x,y))∀x∀y∀z (masculino(x) ∧ pai(x,z) ∧ mae(z,y) ∧ x ≠ y → avo_m(x,y))

Page 17: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Relação “Avó”:∀x∀y∀z (feminino(x) ∧ mae(x,z) ∧ pai(z,y) ∧ x ≠ y → avo_f(x,y))∀x∀y∀z (feminino(x) ∧ mae(x,z) ∧ mae(z,y) ∧ x ≠ y → avo_f(x,y))

Relação “Irmão”:∀x∀y∀z (masculino(x) ∧ pai(z,x) ∧ pai(z,y) ∧ x ≠ y → irmao(x,y))∀x∀y∀z (masculino(x) ∧ mae(z,x) ∧ mae(z,y) ∧ x ≠ y → irmao(x,y))

Relação “Irmã”:∀x∀y∀z (feminino(x) ∧ pai(z,x) ∧ pai(z,y) ∧ x ≠ y → irma(x,y))∀x∀y∀z (feminino(x) ∧ mae(z,x) ∧ mae(z,y) ∧ x ≠ y → irma(x,y))

Relação “Primo”:∀x∀y∀z∀w (masculino(x) ∧ pai(z,x) ∧ pai(w,y) ∧ irmao(z,w) ∧ x ≠ y →primo(x,y))∀x∀y∀z∀w (masculino(x) ∧ pai(z,x) ∧ mae(w,y) ∧ irmao(z,w) ∧ x ≠ y→primo(x,y))∀x∀y∀z∀w (masculino(x) ∧ mae(z,x) ∧ pai(w,y) ∧ irma(z,w) ∧ x ≠ y →primo(x,y))∀x∀y∀z∀w (masculino(x) ∧ mae(z,x) ∧ mae(w,y) ∧ irma(z,w) ∧ x ≠ y →primo(x,y))

Relação “Prima”:∀x∀y∀z∀w (feminino(x) ∧ pai(z,x) ∧ pai(w,y) ∧ irmao(z,w) ∧ x ≠ y →primo(x,y))∀x∀y∀z∀w (feminino(x) ∧ pai(z,x) ∧ mae(w,y) ∧ irmao(z,w) ∧ x ≠ y →primo(x,y))∀x∀y∀z∀w (feminino(x) ∧ mae(z,x) ∧ pai(w,y) ∧ irma(z,w) ∧ x ≠ y →primo(x,y))∀x∀y∀z∀w (feminino(x) ∧ mae(z,x) ∧ mae(w,y) ∧ irma(z,w) ∧ x ≠ y →primo(x,y))

Fatos da Base de Conhecimento: (Veja abaixo o esboço de uma árvoregenealógica e na seção seguinte veja os fatos codificados)

Page 18: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

5.3 “Codificando” o SE

/*=====================*//* === Exercicio 5 === *//*=====================*/domains pessoa = symbolpredicates

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 <--*/

Page 19: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

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) and irmao(X,Z) and pai(Z,Y) and X <> Y.tio(X,Y) :- masculino(X) and irmao(X,Z) and mae(Z,Y) and X <> Y.

Page 20: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

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.

Page 21: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

5.4 Fazendo consultas à Base de Conhecimento do SE

A seguir são solicitadas várias consultas (goals) ao SE. Execute oprograma no ambiente Prolog e verifique os resultados. Indique quaisresultados foram “duplicados”. Você tem alguma idéia porquê algunsresultados foram “duplicados” ?

5.4.1) De quem Maria é irmã ? ( goal Prolog: irma(maria,I) )5.4.2) De quem Joaozinho é irmão ? ( 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) Bárbara é prima de José? ( goal Prolog: prima(barbara,jose) )5.4.6) Bárbara é prima de Claudia? ( goal Prolog: primo(barbara,claudia) )5.4.7) José é primo de Bárbara? ( goal Prolog: primo(jose,barbara) )5.4.8) Quem é avô de quem ? ( goal Prolog: avo_m(VOVOM,NET) )5.4.9) Nastácia é 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) João é pai de quem ? ( goal Prolog: pai(joao,FILHO) )5.4.12) Maria é tia de Carla ? ( goal Prolog: tia(maria,carla) )5.4.13) João é tio de Carla ? ( goal Prolog: tio(joao,carla) ) (Obs.: compare aresposta do SE com a árvore genealógica e explique esta resposta do SE)

5.4.14) Acrescente a este Sistema Especialista as regras para caracterizaçãoda relação de sobrinho e da relação de sobrinha.

5.4.15) Com estas novas regras acrescentadas ao SE, consulte a base deconhecimento para saber “quem é sobrinho de quem?”5.4.16) Com estas novas regras acrescentadas ao SE, consulte a base deconhecimento para saber se “Carlos é sobrinho de Ana?”5.4.17) Com estas novas regras acrescentadas ao SE, consulte a base deconhecimento para saber se “Carlos é sobrinho de Joao?”5.4.18) Com estas novas regras acrescentadas ao SE, consulte a base deconhecimento para saber “de quem Cláudia é sobrinha ?”

5.4.19) Acrescente a este Sistema Especialista a(s) regra(s) paracaracterização da relação de neto e da relação de neta.

Page 22: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

5.4.20) Com estas novas regras acrescentadas ao SE, consulte a base deconhecimento para saber “quem é neto de Manoel?”5.4.21) Com estas novas regras acrescentadas ao SE, consulte a base deconhecimento para saber “de quem Cláudia é neta?”

Algumas Observações acerca dos Exercícios 1 a 5

� A ordem em que estão descritos os fatos e regras da base de conhecimentono corpo do programa influencia a ordem de resposta do SE

� Relembremos uma definição de “Computador Inteligente”:

Computador inteligente ⇒ É aquele que responde umapergunta mesmo que a resposta a tal pergunta não estejaexplícitamente armazenada no computador.

Considerando-se esta definição, podemos notar que o computadordemonstrou “comportamento inteligente”, pois soube dizer, por exemplo, queSócrates é mortal, que o limoeiro é mortal, que Bill gosta de jogar tenis e queJoãozão é avô de Bárbara, apesar destes fatos não estarem explícitamenteregistrados na base de conhecimento do SE.

� Considere o Exercício 5 e a consulta (goal) “João é tio de Carla ?”(consulta 5.4.13). A consulta resultou em false, isto é, o SE disse que Joãonão é tio de Carla !! Analisando-se o esquema da árvore genealógica,constatamos contudo que João é tio de Carla, se considerarmos o fato deque João é casado com Maria, reconhecidamente tia de Carla. E foijustamente por isso que o SE “disse”que João não é tio de Carla: asrelações de parentesco estão considerando apenas o parentescoconsanguíneo. Ou seja o SE não tem registrado em sua base deconhecimento informações (regras) acerca de relações extra-consanguíneas e então não pode justificar o fato de João ser tio de Carla(se considerarmos relação não consanguínea e que João esteja casado com

Page 23: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Maria !!). Este exemplo conduz a uma reflexão acerca da “potência” deum Sistema Especialista:

“A acumulação e codificação de conhecimento é um dosmais importantes aspectos de um sistema especialista”

“A potência de um sistema especialista deriva doconhecimento que possui e não do particular formalismoou esquema de inferência que empregue”

Em outras palavras, um Sistema Especialista terá maior utilidade comoferramenta de suporte à tomada de decisão quanto maior for a quantidade deconhecimento que estiver disposta em sua base de conhecimento.

Pensando em termos práticos um “programa” Prolog será um bomsistema especialista quanto maior for o número de regras escritas que,obviamente, devem refletir as mais variadas possibilidades do problematratado.

Page 24: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 6

6.1 Definição conceitual do problema

Sistema Sanguíneo ABO e Fator RH em grupos humanos

Construa um sistema especialista que permita identificarcompatibilidade de doação de sangue entre indivíduos. Sabe-se que cadaindivíduo tem um tipo de sangue (A, B, O ou AB) e um fator chamado“fator-RH” que pode ser “+” ou “-“. Abaixo é apresentada a tabela decompatibilidade de doação/recepção de sangue entre seres humanos.

Analise a tabela acima e generalize as regras para o SE. A seguir éfornecido o modelo para formalização deste SE. Utilize portanto ospredicados apresentados e escreva as regras adequadamente:

Page 25: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

6.2 Formalização do conhecimento

Vamos formalizar o conhecimento usando lógica de predicados:

Predicado Descriçãosangue(x,y) “o sangue do indivíduo x é y”rh(x,y) “o fator RH do indivíduo x é y”podedoar(x,y) “o indivíduo x pode doar sangue para o indivíduo y”

Veja alguns exemplos destes predicados no “formato” Prolog:

sangue(joao,AB) “João tem sangue AB”rh(joao,” +”) “João tem fator RH positivo”podedoar(joao,maria) “João pode doar sangue para Maria”

Codifique no seu SE os seguintes fatos:

“Joãozão tem sangue A+” “Nastácia tem sangue B+““João tem sangue A+” “Ana tem sangue B-““Maria tem sangue A-“ “Neuza tem sangue B+”“Ana tem sangue A-“ “Manoelzinho tem sangue O+”“Bárbara tem sangue O+“ “José tem sangue AB+”“Cláudia tem sangue A+“ “Carlos tem sangue AB-”“Manoel tem sangue A-“ “Carla tem sangue O-”

6.3 “Codificando” o SE

Proceda a codificação... Atente para a codificação do fator RH comomostrado 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 Bárbara doar sangue ?”, “quem é doador de fator RH+”,“de quem um indivíduo fator RH- pode receber sangue?”, etc...

Page 26: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 7

7.1 Definição conceitual do problema

“Se o indivíduo nasceu na França, então ele fala francês. Se o indivíduonasceu no Gabão, então ele fala francês. Se o indivíduo nasceu na GuianaFrancesa, então ele fala francês. Se o indivíduo nasceu na Argélia, então elefala francês. Se o indivíduo é nascido na cidade de Caiena, então ele nasceuna Guiana Francesa. Se o indivíduo é nascido na cidade de Londres, então elenasceu na Inglaterra. Se o indivíduo é nascido na cidade de Liverpool, entãoele nasceu na Inglaterra. Se o indivíduo nasceu nos EUA, então ele falainglês. Se o indivíduo nasceu na Inglaterra, então ele fala inglês. Se oindivíduo nasceu na Espanha, então ele fala espanhol. Se o indivíduo nasceuem Cuba, então ele fala espanhol. Se o indivíduo fala francês ou inglês ouespanhol, então ele fala uma língua popular.”

7.2 Formalização do conhecimento

Formalize os predicados para este SE...

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

Jean nasceu em CaienaEsteban nasceu em CubaJacques nasceu na FrançaLennon nasceu em LiverpoolMarie fala francêsMcCartney nasceu na Inglaterra

7.3 “Codificando” o SE

Proceda a codificação em Prolog do SE acima especificado

Page 27: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

7.4 Fazendo consultas à Base de Conhecimento do SE

Execute as seguintes consultas, indicando corretamente a ordem das respostasfornecidas pelo SE:

7.4.1) Quem fala francês ?7.4.2) Quem fala inglês ?7.4.3) Quem fala lingua popular ?7.4.4) Quem nasceu na Inglaterra ?7.4.5) Quem nasceu no Gabão ?7.4.6) Esteban fala francês ?

7.4.6.a) Desenhe a árvore de refutação que o Prolog constrói para a consulta“Lennon fala língua popular”.

7.4.6.b) Considere que o Prolog executa “navegação” em profundidaderegressiva (depth-first search & backward chaining) na “árvore de refutação”que ele monta para responder as consultas. Suponha que desejemos calcularum “custo” de “navegação” na árvore de refutação montada da seguinteforma: (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 então o custo para responder à consulta “Lennon fala línguapopular” ?

7.4.6.c) Considere que o Prolog executa “navegação” em amplituderegressiva (breadth-first search & backward chaining) na “árvore derefutação” que ele monta para responder as consultas. Qual seria então ocusto da consulta do item 7.4.6.b acima ?

Page 28: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 8

8.1 Definição conceitual do problema

“A operadora telefônica op14 está autorizada a funcionar no país no estadode Santa Catarina, e no estado Goiás, nas cidades com menos de 40.000habitantes. Pode operar também em todo o estado do Rio Grande do Norte,independente do tamanho populacional. Outra operadora, a op21, por suavez, está autorizada a operar em qualquer cidade do país que tenha mais de100.000 habitantes ou em todas as cidades do estado do Acre. Ambas asoperadoras, op14 e op21, podem operar no estado de São Paulo”

Construa um sistema especialista que seja capaz de responder perguntassobre quais cidades as operadoras op14 e op21 podem operar.

8.2 Formalização do conhecimento

Formalize o SE acima com os seguintes predicados:

Predicado Descriçãolocalidade(X,Y,Z) “X é uma cidade do estado de Y com Z habitantes”podeoperar(X,Y) “a operadora X pode operar na cidade de Y”

Dica: Abaixo está codificada no “formato prolog” uma regra de operação daoperadora op14:

podeoperar(op14,CIDADE) :- localidade(CIDADE,rn,_) .

8.3 “Codificando” o SE

Proceda a codificação em Prolog do SE acima especificado

Page 29: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 9

9.1 Definição conceitual do problema

“Hidrocarbonetos são compostos químicos constituídos exclusivamente deCarbono e Hidrogênio. Todo alcano é hidrocarboneto, assim como todoalceno e todo alcino. Os alcanos são hidrocarbonetos que possuem sempre nátomos de carbono e (2n + 2) átomos de hidrogênio. O metano é um alcanocom um átomo de carbono e quatro átomos de hidrogênio. O etano é umalcano com dois átomos de carbono e seis átomos de hidrogênio. O propano éum alcano com três átomos de carbono e oito átomos de hidrogênio. Obutano é um alcano com quatro átomos de carbono e dez átomos dehidrogênio. Os alcenos por sua vez, são hidrocarbonetos que possuem sempren átomos de carbono e (2n – 2[k – 1]) átomos de hidrogênio, onde k é onúmero de ligações duplas que existem entre os átomos de carbono. Assim, oeteno é um alceno com dois átomos de carbono e quatro átomos dehidrogênio. O propeno é um alceno com três átomos de carbono e seisátomos de hidrogênio. E o butileno é um alceno com quatro átomos decarbono e oito átomos de hidrogênio. Finalmente, os alcinos sãohidrocarbonetos que possuem sempre n átomos de carbono e (2n - 2) átomosde hidrogênio. O etino é um alcino que possui dois átomos de carbono e doisátomos de hidrogênio. O propino é um alcino que possui três átomos decarbono e quatro átomos de hidrogênio. E o butino é um alcino que possuiquatro átomos de carbono e seis átomos de hidrogênio.”

9.2 Formalização do conhecimento

Predicado DescriçãoHidrocarboneto(X) O composto químico X é um

hidrocarbonetoTem_carbono(X,Y) O composto químico X tem Y átomos de

carbonoTem_hidrogenio(X) O composto químico X tem Y átomos de

hidrogênioAlcano(X) O composto químico X é um alcanoAlceno(X) O composto químico X é um alceno

Page 30: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Alcino(X) O composto químico X é um alcinoMetano(X) O composto químico X é metanoEtano(X) O composto químico X é etanoPropano(X) O composto químico X é propanoButano(X) O composto químico X é butanoTem_ligacoes_duplas(X,Y) O composto químico X tem Y ligações

duplasEteno(X) O composto químico X é etenoPropeno(X) O composto químico X é propenoButeno(X) O composto químico X é butenoEtino(X) O composto químico X é etinoPropino(X) O composto químico X é propinoButino(X) O composto químico X é butino

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

O composto químico a1 tem 3 átomos de carbonoO composto químico a1 tem 6 átomos de hidrogênioO composto químico a2 tem 3 átomos de carbonoO composto químico a2 tem 4 átomos de hidrogênioO composto químico a2 tem 2 ligações duplasO composto químico a3 tem 3 átomos de carbonoO composto químico a3 tem 8 átomos de hidrogênioO composto químico a4 tem 2 átomos de carbonoO composto químico a4 tem 2 átomos de hidrogênioO composto químico a5 tem 2 átomos de carbonoO composto químico a5 tem 4 átomos de hidrogênioO composto químico a6 tem 2 átomos de carbonoO composto químico a6 tem 4 átomos de hidrogênioO composto químico a6 tem 2 ligações duplasO composto químico a7 tem 8 átomos de carbonoO composto químico a7 tem 18 átomos de hidrogênioO composto químico a8 tem 9 átomos de carbonoO composto químico a8 tem 8 átomos de hidrogênioO composto químico a9 tem 6 átomos de carbono

Page 31: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

O composto químico a9 tem 6 átomos de hidrogênioO composto químico a9 tem 4 ligações duplas

9.3 “Codificando” o SE

Proceda a codificação em Prolog do SE acima especificado

9.4 Fazendo consultas à Base de Conhecimento do SE

Execute as seguintes consultas, indicando corretamente a ordem das respostasfornecidas pelo SE:Considerando os compostos químicos a1, a2, a3, a4, a5, a6, a7, a8 e a9:

9.4.1) Quais compostos são hidrocarbonetos ?9.4.2) Quais compostos são alcanos ?9.4.3) Quais compostos são alcenos ?9.4.4) Quais compostos são alcinos ?9.4.5) Quais compostos são metano?9.4.6) Quais compostos são propano ?9.4.7) Quais compostos são propeno ?9.4.8) Quais compostos são butileno ?9.4.5) Quais compostos são etano ?9.4.6) Quais compostos são eteno ?9.4.7) Quais compostos são etino ?9.4.8) Quais compostos têm 4 átomos de hidrogênio ?9.4.9) Quais compostos têm ligação dupla ?9.4.10) O composto químico a6 é alceno ?9.4.11) O composto químico a6 é alcino ?

Page 32: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 10

Comente, com suas palavras, sobre as considerações feitas acerca daperformance, de um modo geral, de sistemas especialistas. Ou seja, expliqueo que o autor abaixo enfatiza com relação ao desempenho, de um modo geraldos sistemas especialistas.

“A acumulação e codificação de conhecimento é um dosmais importantes aspectos de um sistema especialista”

“A potência de um sistema especialista deriva doconhecimento que possui e não do particular formalismo ouesquema de inferência que empregue”

Page 33: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 11

11.1 Definição conceitual do problema

“A Companhia Brasileira de Marmelo – CBMAR – pretende abrir filiais empaíses de língua espanhola ou países que tenham renda per capita anualsuperior a Us$ 25.000. Já a Companhia Brasileira de Goiabada – CBGOI –pretende abrir filiais em todos os países europeus exceto Albânia eEslováquia”

Construa um sistema especialista que seja capaz de responder perguntassobre quais países a CBMAR e CBGOI pretendem se instalar.

11.2 Formalização do conhecimento

Formalize o SE acima com os seguintes predicados:

Filial (X,Y) A companhia X pretende instalar filial no país YEspanhol (X) O país X fala espanholRenda(X,Y) O país X tem renda per capita anual de Us$ YPaísEuropeu(X) O país X é um país europeu

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

“a Bulgária é um país europeu”“a Itália é um país europeu”“a Albânia é um país 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 França tem renda per capita de $ 36000”

Page 34: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

11.3 “Codificando” o SE

Proceda a codificação em Prolog do SE acima especificado

11.4 Fazendo consultas à Base de Conhecimento do SE

Execute as seguintes consultas, indicando corretamente a ordem das respostasfornecidas pelo SE:

(Obs.: Suponha que a CBMAR seja representada pela constante cbmar e aCBGOI seja representada pela constante cbgoi)

11.4.1) Em quais países a CBMAR pretende abrir filiais ?11.4.2) Em quais países a CBGOI pretende abrir filiais ?11.4.3) A CBGOI pretende abrir filial na França ?11.4.4) A CBMAR pretende abrir filial na França ?11.4.5) A CBGOI pretende abrir filial na Itália ?11.4.6) A CBMAR pretende abrir filial na Itália ?11.4.7) Quais países falam espanhol ?11.4.8) Quais países são europeus ?

Page 35: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 12

Resolva o problema de lógica abaixo apresentado, através de um programa Prolog.

Uma possível solução Prolog

domains pessoa = symbol prof = symbolpredicates 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)).

Page 36: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Consultas Prolog para Resolver o Problema:

Page 37: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 13

Resolva o problema de lógica abaixo apresentado, através de um programa Prolog.

SABOR REFRESCANTE

Numa Tarde de sol, Ana, Bianca e Rita foram tomar um sorvete numa sorveteria que vendia deliciosossabores de frutas. Com base nas dicas, tente descobrir o nome de cada garota, o tipo de sorvete tomadoe o seu sabor:

1. Rita tomou sorvete de copinho2. Uma das garotas tomou sorvete de casquinha sabor mangaba3. Bianca não escolheu nem o sabor mangaba nem o laranja

Page 38: Tipo Sanguineo_inteligencia_ Artificial Feito_ Em_ Rh Prolog

Exercício 14

Resolva o problema de lógica abaixo apresentado, através de um programa Prolog.

BEBIDA ESPECIAL

Cláudio e dois outros amigos estavam conversando sobre suas bebidas preferidas para um jantarespecial. Cada um deles mencionou a bebida de que mais gostava. Com base nas dicas abaixo, tentedescobrir 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. Cláudio não prefere caipirinha nem cerveja.3. O sobrenome de Leandro não é Brito nem Borges.