sistemas de informaÇÃo inteligência artificial 2011/01 unipac - facae faculdade de ciências...

46
SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Upload: luiz-gustavo-borja-lopes

Post on 07-Apr-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

SISTEMAS DE INFORMAÇÃO

Inteligência Artificial

2011/01

UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas

Araguari - MG

Page 2: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Inteligência Artificial Inteligência Artificial

Programação LógicaProgramação Lógica

Aula 10Aula 10

Page 3: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Paradigma Lógico

Page 4: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Programação Lógica

A linguagem Prolog está vastamente documentada na Internet. Um endereço da World-Wide-Web com diversos recursos interessantes - interpretadores Prolog e tutoriais sobre a linguagem - está disponível em: http://burks.bton.ac.uk/burks/language/prolog/

Page 5: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Paradigma Lógico

Descreve, através de declarações, o problema e deixa que o interpretador gere a solução.

As linguagens que utilizam o paradigma de programação lógico são classificados como linguagens DECLARATIVAS.

Page 6: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Paradigma Lógico

Fatos:X é aluno da disciplina Y;W é aluno da disciplina Y;X estudou;T ministra a disciplina Y;

RegrasT é professor de X, se ministra alguma disciplina

que X é aluno.Todo aluno que estuda tira boas notas.

Page 7: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Linguagens Declarativas

Descrevem o problema e não a solução.Descrevem O QUE deve ser feito e não COMO deve ser feito.

Uma declaração do mundo é feita, ou seja, uma descrição dele é fornecida.

Define os fatos e as regras que regem este mundo, que define o que pode ser inferido.

Não se define estruturas algorítmicas para permitir resolver os problemas.

Page 8: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Linguagens DeclarativasConceito de Mundo Fechado:

Descreve o problema através de FATOS e REGRAS. Após, realiza-se CONSULTAS que são ser respondidas pelo interpretador avaliando-se os fatos e regras descritos. Tudo o que o interpretador não souber terá uma resposta negativa.

Page 9: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Programação LógicaA principal linguagem de programação que representa o paradigma de programação lógico é o PROLOG.

Prolog, como segue o paradigma de programação lógico, é uma linguagem DECLARATIVA.

Mostra O QUE deve ser feito e não COMO deve ser feito.

Expresso declarativamente, através de FATOS, REGRAS E CONSULTAS.

Page 10: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Prolog Principal área de atuação: IA (Inteligência

Artificial). Sistemas baseados em conhecimento. Sistema de consultas à bases de Dados. Sistemas especialistas. Hoje em dia, Prolog não é mais usado

exclusivamente por Inteligência Artificial, mas também em várias áreas incluindo finanças, defesa, telecomunicações, medicina, direito, agricultura, engenharia e educação.

Page 11: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Conceito

A Prolog é baseada em FATOS, REGRAS e CONSULTAS

Fatos: Em Prolog, fatos são entendidos como relações entre objetos. Estas relações constituem-se de afirmações que são feitas a Prolog.

São verdades nas quais a Prolog irá basear-se para responder as consultas solicitadas.

Page 12: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Conceito

Ex.: Árvore Genealógica Fato: João é um dos

progenitores de José progenitor(João, José).

Page 13: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Conceito

Regras: Especificação de algo que pode ser verdadeiro se algumas condições forem satisfeitas.

É composta de duas partes: Conclusão (esquerda) e condição (direita)

Exemplo: Descobrir a relação Filho.filho(X,Y) :- progenitor(Y,X).

Page 14: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Conceito

Consultas: questionamentos que serão respondidos avaliando-se os fatos e regras.

João é filho de José?? filho(João, José).Conceito de “Mundo Fechado”, tudo o que o

interpretador não souber responder (não haver nem regras nem fatos relacionados)

responderá: Não.

Page 15: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo: Vamos passar as

informações (através de fatos e regras) à Prolog para após podermos realizar consultas.

O primeiro passo a ser feito é submeter à Prolog a informação da árvore genealógica.

Faremos isto através de 6 cláusulas (fatos).

Cada cláusula denota um fato acerca da relação progenitor.

Page 16: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:

Fatos:Progenitor(Maria, José).Progenitor(João, José).Progenitor(João, Ana).Progenitor(José, Júlia).Progenitor(José, Iris).Progenitor(Iris, Jorge).

Page 17: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:Consultas:

José é progenitor de Íris??- progenitor(josé,íris). --> Yes.

Ana é progenitor de Jorge??- progenitor(ana, jorge). --> No.

Quem é o progenitor de Íris??- progenitor(X,íris). --> X = José. (X é uma variável).

Quem são os filhos de João??-progenitor(joão,X) --> X = josé; X = ana.

Quem é o progenitor de Maria??- progenitor(X,Maria) --> No. (Conceito de “Mundo Fechado”)

Page 18: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:

Consultas:Quem é progenitor de quem?

?- progenitor(X,Y).X = maria Y = josé;X = joão Y = josé;

X = joão Y = ana;X = josé Y = júlia;X = josé Y = íris;X = íris Y = jorge.

Page 19: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:

Consultas:Quem são os avós de jorge? (Não possui uma relação direta). Quem é o progenitor de jorge? X.

Quem é o progenitor de X? Y (Y é o avô de Jorge).?- progenitor(X,jorge),progenitor(Y,X),write(Y). --> josé.

Quem é o neto de João?Quem são os filhos de João? XQuem são os filhos dos filhos de João? Y (Y são os netos de João)?- progenitor(joão,X), progenitor(X,Y), write(Y). --> júlia e íris.

José e Ana possuem algum progenitor em comum??- progenitor(X,josé),progenitor(X,ana), write(X). --> joão.

Page 20: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:Regras:

Vamos agora melhorar a fonte de conhecimento da aplicação inserindo algumas regras:

Em primeiro lugar vamos definir a relação “filho”.filho(X,Y) :- progenitor(Y,X).

Com isto, podemos fazer as seguintes consultas:Ana é filha de João?

?-filho(ana,joão). --> Yes.Quem são os filhos de josé?

?-filho(X,josé). --> júlia e íris.De quem josé é filho?

?-filho(josé,X). -->Maria e João.

Page 21: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:Novos Fatos:

Podemos também definir a relação “pai” e “mãe”. Para isto precisamos adicionar a informação sobre o sexo das pessoas representadas na árvore.

feminino(maria).feminino(ana).feminino(júlia).feminino(íris).masculino(joão).masculino(josé).masculino(jorge).

Page 22: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:

Novas Consultas:Quem são as mulheres?

?-feminino(X). --> X=maria; X = ana; X = júlia; X = íris.

João é homem??-masculino(joão). --> Yes.

Page 23: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:Novas Regras:

Vamos definir agora a relação “mãe”.Para Todo X e YX é mãe de Y seX é progenitor de Y eX é feminino.

mae(X,Y) :- progenitor(X,Y), feminino(X). Utilizaremos a mesma lógica para definir a relação “pai”.

Para Todo X e YX é pai de Y seX é progenitor de Y eX é masculino.

pai(X,Y) :- progenior(X,Y), masculino(X).

Page 24: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:

Novas Consultas:João é o pai de josé?

?- pai(joão,josé). --> Yes.Quem é a mãe de jorge?

?- mae(X,jorge). --> X = íris.

Page 25: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Exemplo:

Outras Relações (Regras)avôavóirmãoprimo

Page 26: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Arquivo: base.pl

progenitor(maria, jose).progenitor(joao, jose).progenitor(joao, ana).progenitor(jose, julia).progenitor(jose, iris).progenitor(iris, jorge).

feminino(maria). feminino(ana). feminino(julia). feminino(iris).

Page 27: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Arquivo: base.pl

masculino(joao). masculino(jose). masculino(jorge).

filho(X,Y) :- progenitor(Y,X). mae(X,Y) :- progenitor(X,Y), feminino(X). pai(X,Y) :- progenitor(X,Y), masculino(X).

Page 28: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

PROLOG(programming in logic)

Page 29: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG
Page 30: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG
Page 31: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG
Page 32: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG
Page 33: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Prolog apresenta-se com sintaxes distintas e suportando variadas facilidades,

incluindo mecanismos extra-lógicos. Os exemplos e texto a seguir baseiam-se no

Arity Prolog desenvolvido pela Universidade de Edimburgo.

Page 34: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Um programa Prolog é composto por sentenças denominadas cláusulas, construídas a partir de termos. Termos representam constantes, variáveis ou estruturas. Constantes são representadas em letras minusculas e variáveis são representadas por nomes que iniciam por uma letra maiúscula. Estruturas são usadas para representar as cláusulas e possuem a seguinte forma geral:

funtor(lista de parâmetros).sendo funtor: predicado (identificador)

lista de parâmetros: constantes, variáveis ou estruturas.

Page 35: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Sintaticamente, o texto de um programa Prolog é composto por fatos e regras não seqüencializados representados por uma lista de cláusulas, as quais podem ser de um dos seguintes tipos:

A. - fatoExemplo: cidade(brasilia).

A :- B1, B2, . . ., Bm. - regraExemplo: capital(X,Y) :- pais(X), cidade(Y), capital_pais(X,Y).

:- B1, B2, . . ., Bm. - consultaExemplo: ? cidade(C).

Page 36: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Fatos podem ser agrupados em conjuntos, denominados de base de dados. do programa, como em:

 Fato 1: Brasilia, Curitiba, Porto Alegre, Santa Maria e Montevideo são

cidades.cidade(portoalegre).cidade(brasilia).cidade(montevideo).cidade(curitiba).cidade(santamaria).

 Fato 2: Brasil e Uruguai são países.

pais(brasil).pais(uruguai).

Page 37: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Fato 3: Rio Grande do Sul e Paraná são estados do Brasil, ou seja, existe um relacionamento entre um estado e seu país.estado(brasil, pr).estado(brasil, rgs).

 Fato 4: Porto Alegre é capital do Rio Grande do Sul e Curitiba é capital

do Paraná, ou seja, existe um relacionamento entre uma cidade e seu estado.capital_estado(rgs, portoalegre).capital_estado( pr, curitiba).

Page 38: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Fato 5: Brasilia é capital do Brasil e Montevideo é a capital do Uruguai.capital_pais(brasil,brasilia).capital_pais(uruguai,montevideo).

 As regras estabelecem relações simples ou complexas entre objetos. Regra 1: Uma cidade pode ser a capital de um estado ou de um pais.

capital(X,Y) :- capital_estado(X,Y) ; capital_pais(X,Y). Regra 2: Uma cidade Y é uma das capitais do pais X, se Y é capital do

estado Z, Z é um estado do pais X.uma_capital(X,Y) :- capital_estado(Z,Y), estado(X,Z).

Nas regras acima, as condições são separadas por vírgula, com o significado lógico 'and'; o significado lógico 'or' é representado pelo

separador ponto-e-vírgula.

Page 39: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Executar um programa em lógica é sinônimo de provar um objetivo, formulado por consultas.Por exemplo, possíveis consultas ao programa acima podem ser:

 Objetivo 1 - Saber se Brasilia é uma cidade

consulta: cidade(brasilia).resposta: yes.

 Objetivo 2: Saber os nomes das capitais do Brasil

consulta: uma_capital(brasil,C).resposta: C= portoalegre;

C= curitiba.

Page 40: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Uma consulta simples a este programa, como o objetivo 1, é resolvida por substituições diretas, buscando uma unificação, isto é, uma cláusula idêntica à consulta formulada..Já o objetivo 2 exige mais de uma unificacão e resolução, como detalhado abaixo:

 Unificação: substituição X por brasil, na regra 2 e Y por C.

uma_capital(brasil,C) :- capital_estado(Z,C), estado(brasil,Z). Resolução: condição 1: capital_estado(Z, C).Unificação: capital_estado(rgs,portoalegre). Resolução: condição 2: estado(brasil, Z).Unificação: substituição Z=rgs.uma_capital(brasil,portoalegre) :- capital_estado(rgs,portoalegre),

estado(brasil,rgs). Resolução: condição 2: estado(brasil,,rgs).

Page 41: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Na busca de uma resposta, a máquina de inferência pode percorrer um caminho de tentativas e erros, como pode ser visto no exemplo abaixo:

Supondo a seguinte regra de determinação da capital de um país:

capital(X,Y) :- pais(X), cidade(Y), capital_pais(X,Y).e a consulta: ? capital(brasil,C).

Sendo a cláusula: cidade(portoalegre) a primeira da base de dados, resultaria uma unificacão como:

cidade(brasil, portoalegre):-pais(brasil) , cidade(portoalegre), capital_pais(brasil,portoalegre).

Page 42: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Na resolução da condição 'capital_pais(brasil,portoalegre)', haverá um insucesso no processo dedutivo. Neste caso, ocorre um retorno à substituição anterior (de C=portoalegre), e uma nova tentativa de dedução, com outra unificação (de C=brasilia). Este mecanismo é denominado de 'backtracking' e permitirá sucesso com a seguinte substituição:

 capital(brasil,brasilia) :- pais(brasil), cidade(brasilia),

capital_pais(brasil,brasilia).

O processo de execução de cada consulta pode ser representado por uma árvore de objetivos, onde a raiz é a consulta ou objetivo original, os nodos são objetivos intermediários derivados das resoluções e as folhas são ou cláusulas nulas ou insucessos. O insucesso determina o retorno ao ramo anterior.

Page 43: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Listas são estruturas compostas por constantes, variáveis ou quaisquer outros termos, incluindo outras listas.

Exemplos de representação de listas:

[ morango, nata, chocolate] lista com três elementos

[ ] lista vazia

[ X | Y ] lista com header X e tail Y

[gosta( ana, pedro), gosta (pedro, ana)] lista de claúsulas

Page 44: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Uma lista pode ser criada através de uma cláusula representada por uma estrutura simples como:lista([10,20,30]).lista([[o, gato], bebeu, [o, leite]]).lista([canario,bentevi,periquito]).lista([uni]).lista([]).cores([azul,preto,branco,amarelo]).

As cláusulas acima não criam diversas listas associadas ao mesmo nome 'lista'; são usadas para registrar dados na base de dados do programa. Uma possível consulta poderia ser:

? lista[ X ]. /* quer-se a relação das listas existentes na base de dados do programa */

Page 45: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Para o tratamento de listas, algumas operações básicas devem ser definidas, tais como:

adicionar e retirar elementos de uma lista, determinar se um elemento pertence a uma lista, somar elementos de uma lista, entre outras. Estas operações são definidas por

cláusulas recursivas, uma vez que programas em lógica não incluem a determinação de estruturas de controle, como a repetição.

Page 46: SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG

Recursividade

Inciando com o exemplo clássico de recursividade, que é a implementação de fatorial, a seguir:fatorial (0, 1).fatorial (N, X) :- N1 is N -1, fatorial (N1, X1), X is N * X1.

Pode-se observar que a cláusula 'fatorial(0,1)' é sempre verdadeira, pois está expressa como um fato. Esta cláusula é usada para determinar o final da recursão, iniciada pela cláusula seguinte.

O predicado is é muito útil em programas que lidam com computações numéricas, mas esta conveniência tem seu preço: a propriedade de reversibilidade de programas lógicos deixa de existir. O predicado is espera como argumento à direita uma expressão para ser avaliada, isto é, que todas as variáveis já estejam amarradas.