A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG."— Transcrição da apresentação:

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

2 Inteligência Artificial Programação Lógica Aula 10

3 Paradigma Lógico

4 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/ http://burks.bton.ac.uk/burks/language/prolog/

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

6 Paradigma Lógico Fatos:  X é aluno da disciplina Y;  W é aluno da disciplina Y;  X estudou;  T ministra a disciplina Y; Regras  T é professor de X, se ministra alguma disciplina que X é aluno.  Todo aluno que estuda tira boas notas.

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

8 Linguagens Declarativas Conceito 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.

9 Programação Lógica A 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.

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

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

12 Conceito Ex.: Árvore Genealógica Fato: João é um dos progenitores de José progenitor(João, José).

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

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

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

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

17 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”)‏

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

19 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? X Quem 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.

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

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

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

23 Exemplo: Novas Regras:  Vamos definir agora a relação “mãe”. Para Todo X e Y X é mãe de Y se X é progenitor de Y e X é feminino. mae(X,Y) :- progenitor(X,Y), feminino(X).  Utilizaremos a mesma lógica para definir a relação “pai”. Para Todo X e Y X é pai de Y se X é progenitor de Y e X é masculino. pai(X,Y) :- progenior(X,Y), masculino(X).

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

25 Exemplo: Outras Relações (Regras)‏  avô  avó  irmão  primo

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

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

28 PROLOG (programming in logic)

29

30

31

32

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

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

35 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.- fato Exemplo: cidade(brasilia). A :- B1, B2,..., Bm.- regra Exemplo: capital(X,Y) :- pais(X), cidade(Y), capital_pais(X,Y). :- B1, B2,..., Bm.- consulta Exemplo: ? cidade(C).

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

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

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

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

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

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

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

43 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

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

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

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


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

Apresentações semelhantes


Anúncios Google