Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2017.html Inteligência Artificial Prolog Aula 2 Introdução (cont.)
Características - Palazzo As principais características que diferenciam os programas em lógica dos programas convencionais são as seguintes: Processamento simbólico Soluções heurísticas Estruturas de controle e conhecimento separadas Fácil modificação Incluem respostas parcialmente corretas Incluem todas as soluções possíveis;
Características - Palazzo Além disso, os sistemas de programação em lógica em geral e a linguagem Prolog em particular possuem as seguintes propriedades: Funcionam simultaneamente como linguagem de programação e de especificação Possuem capacidade dedutiva Operam de forma não-determinística Permitem a representação de relações reversíveis Permitem interpretação declarativa, procedimental e operacional São naturalmente recursivos;
Prolog - + Características O algoritmo é constituído por dois elementos: a lógica e o controle; O componente lógico corresponde à definição do que deve ser solucionado ou a base de conhecimento; O componente de controle estabelece como a solução pode ser obtida. O programador precisa somente descrever o componente lógico, deixando o controle da execução para ser exercido pelo sistema de programação em lógica.
Linguagem de Programação - Sebesta Prolog tem duas formas básicas de sentenças, aquelas que correspondem às Clausulas de Horn, com cabeça, e as sem cabeça do cálculo de predicados. A forma mais simples de Clausulas de Horn, sem cabeça em Prolog é uma estrutura única, um fato. Fatos são proposições assumidas como verdadeiras. Ex.: gosta(maria, pedro). valioso(ouro). mulher(jane).
Linguagem de Programação - Sebesta A outra forma básica de sentença em Prolog é a Clausula de Horn com cabeça. Uma conclusão pode ser tirada se o conjunto das condições dadas for satisfeito. O lado direito é o antecedente: a parte se O lado esquerdo é o consequente: a parte então Se o antecedente é verdadeiro, o consequente também o é. O consequente é um termo simples e o antecedente é um termo simples ou uma conjunção.
Linguagem de Programação - Sebesta A forma geral da sentença com cabeça em Prolog é: Consequente :- expressão_antecedente O consequente pode ser concluído se a expressão_ antecedente for verdadeira ou puder se tornar verdadeira por uma instanciação de variáveis. antecessor(adao, caim) :- pai(adao, caim).
Cláusula de Horn As cláusulas de Horn são assim denominadas em homenagem ao matemático Alfred Horn, que primeiro lhes estudou as propriedades, em 1951. Para um grande número de aplicações da lógica, é suficiente empregar o contexto restrito das cláusulas de Horn.
Cláusula de Horn Lógica de Horn: subconjunto da lógica da 1 a ordem restrita a conjunções de cláusulas de Horn Cláusula de Horn: disjunção de literais com ao máximo um literal positivo representação de proposições na forma de uma sentença se p então q.
Cláusulas de Horn Cláusula incondicional (fato): não contém condições. Exemplo: 3 é um número inteiro. Cláusula positiva (regra): Contém uma ou mais conclusões. Exemplo: Todo número natural é um número inteiro.
Cláusulas de Horn Cláusula condicional (regra): contém uma ou mais condições. Exemplo: Para que um número seja natural, ele deve ser inteiro e positivo. natural(n) inteiro(n) ^ N>0. cabeça da cláusula (conseqüente): conclusão corpo da cláusula (antecedente): condições a serem satisfeitas
Cláusulas de Horn Cláusula negativa (consulta): não contém conclusões Exemplo: Será 3 um número inteiro? Processo de dedução: Se 3 é um número natural (fato) e todo número natural é um inteiro (regra), então prova-se que 3 é um número inteiro. Consulta?- natural(3). yes?- natural(-3). no Fatos e Regras inteiro(3). inteiro(5). inteiro(-3). natural(n):-inteiro(n), N>0.
Atividade Utilizar o swi-prolog, acompanhar o material do prof. João Meidanis. Dar continuidade à lista de exercícios ampliada