aula prática 1 introdução a prolog - wordpress.com€¦ · aula prática 1 introdução a prolog...
TRANSCRIPT
Aula Prática 1
Introdução a Prolog
O Docente: MSc. David Batard Lorenzo
Inteligência Artificial
Objetivo
● Implementar pequenos programas onde pode-se
apreciar os elementos fundamentais da linguagem
Prolog.
Bibliografía
●Elaine Rich y Kevin Knight, Inteligencia Artificial.
●Stuart J. Russell and Peter Norvig, Artificial Intelligence A
Modern Approach.
●Ivan Bratko, PROLOG Programming for Artificial
Intelligence.
Prog. Imperativa vs Declarativa
Prog. Imperativa vs Declarativa
Enfoques
Procedimental
Descreve a forma
de execução de um
programa lógico
Declarativo
Descreve a
interpretação lógica
dos modelos
Teóricos da Lógica
de Predicados
Programação lógica
Programação lógica (Prolog)
Programação declarativa
Programação funcional
(LISP, Haskel)
Programação descritiva
●Só se especifica o que vai fazer seu programa sem preocupar-
se de como o exposto vai se obter.
●Estas linguagens e as habilidades necessárias para aprendê-los
são indispensáveis para enfrentar problemas complexos como
os que normalmente aparecem nos problemas de Inteligência
Artificial.
Programação descritiva vs prescriptiva
Descritiva ou
Declarativa
Prescriptiva ou
Procedural
O que fazer? Como fazer?
É suficiente com o
conhecimento descritivo
Necessita conhecimento
procedural ou algorítmico
Lisp e Prolog Prog. Estruturada e POO
Exemplo
public bool progenitor(T x, T y){for(int i = 0;
i< progenitores.Longitud(); i++){T temp = progenitores.Obtener(i);if( temp == x && temp.Hijo == y){
return true;}
}return false;}
Prescritiva(C#)
Declarativa (Prolog)?-progenitor(X,Y).
Programação lógica
Logic
Prolog
Programming
●Programming in logic
●Use a lógica como linguagen de programação
Prolog
Programa
no Prolog
BASE DE CONHECIMENTO
(Definição de objetos e suas relações)
PERGUNTAS
(Consultas sobre essas relações)
Prolog
Programa
no Prolog
BC
PERGUNTAS
Fatos
Regras Cláusulas
Conceitos Fundamentais do PROLOG
●Fatos
●Perguntas
●Regras
●Predicado (Functor/Arity)
●Tipos de Dados
●Operadores
●Recursividad
Conceitos Fundamentais do PROLOG
●Mecanismos
–Unificação
–Backtracking
–Árvores de Resolução
• Os nomes de objetos e relacionamentos devem começar com
uma letra minúscula.
• Primeiro, o relacionamento é gravado e, em seguida, os
objetos são separados por vírgulas e colocados entre
parênteses.
• No final de um fato deve ir um ponto (o caractere ".").
• A ordem dos objetos dentro do relacionamento é arbitrária,
mas devemos ser consistentes em toda a base factual.
Prolog. Fatos
Prolog. Fatos
●Relação entre objetos, itens de ação,
uma qualidade
●Incondicionalmente verdadeira
Sintaxe
id(term, …, term).
Exemplo: Relação de conexão
A B C
FD
H I
G
7
8
10
119
4
Prolog. Perguntas
●Verificação BC para certos
relacionamentos.
Sintaxe
? - meta1, …, metaN.
Prolog. Perguntas
●Existe uma conexão entre
'f' e 'a'?
? - conxion(f,a,_).
Base de conocimiento
conexion(a, b, 7).
conexion(f, a, 8).
conexion(f, g, 10).
conexion(i, f, 11 ).
conexion(h, f, 9).
conexion(d, h, 4).
Unificação
●Dois termos unificam quando:
–São idênticos (igual functor, aridad e termos).
–As variáveis em ambos termos podem ser instanciadas porobjetos de maneira que se façam idênticos.
Unificação
●Exemplo:
progenitor(pedro, maria).
progenitor(pedro, maria).
progenitor(Pedro, maria,1).
progenitor(pedro, maria).
Unificam
Não unificam
Prolog. Perguntas
Respostas
de
Prolog
yes
no
Var =
valor
(não unifica cláusula)
(unifica cláusula)
(unifica cláusula)
Conceitos Fundamentais do PROLOG
Tipos de dados
Variáveis Não variáveis
Atômicas Não atômicas
VariablesSequência ASCII que começa com uma letra maiúscula ou “_”
Ex:
Beta
X
_0039 (sintaxe interna)
_ (anônima, instância com qualquer coisa)
• p(a,b).
?- p(_,X).
X=b;
Conceitos Fundamentais do PROLOG
Atômicas
Átomos
Cadeias
Inteiros
Flutuante
Não atômicas
Listas
Estruturas
Não variáveis: Átomos
• entre ' '
Cadeias ASCII que não começam com
• maiúsculas
• dígitos
Ex:
juan, jUAN, '23', 'Maria'
Símbolos especiais: combinações especiais de sinais : "? _ - : + * / < > = . &”
Não variáveis: Cadeias
Entre ``
Ej:
`juan`<> 'juan'
p(a,_,X,X).
? p(_,b,c,`c`). ¿ Qual seria a resposta?
No.
Não variáveis : Inteiro ou flutuante
Similar a lo que conocen: 2, -4, 45, 3.78, 3.1416
Prolog. Regras
●Declarar relações que são verdadeiras em dependência do
cumprimento de uma sequência de condições.
●Relação mais geral.
●Incrementa capacidade de expressão e de representação de
ideias.
●Implicações lógicos.
As regras são usadas em PROLOG para significar que um fato depende de
um ou mais fatos. Eles são a representação das implicações lógicas do tipo
p => q (p implica q).
Uma regra consiste em uma cabeça e um corpo, unidos pelo sinal :-expressando a relação p => q, como segue q :- p
A cabeça é formada por um único predicado.
Prolog. Regras
Prolog. Regras
●Sintaxe:
id(term1, …, term2) :- meta1, …, metaN.
Cabeça Corpo
Prolog. Regras
●Existe um caminho entre dois nós?
camino(X, Y) :- conexion(X,Y,_).
camino(X, Y) :- conexion(X, Z, _), camino(Z, Y).
Conceitos Fundamentais do PROLOG
Operadores
Comparação Aritméticos Avaliação
Aritméticos
Operadores
Aritméticos
Ex:
?- X = 2+1. indica a relação entre 2 e 1
mas não avalia
X = 2+1
OperadoresComparación
X = Y , se X instancia com Y, se alguna não instanciada instancia-se
X == Y , se X instancia com Y
X \= Y se X não instancia com Y
Ej:
p(a,a).
p(a,b).
s(X,Y):- p(X,Y), X\=Y.
?- s(X,Y).
X=a Y=b
OperadoresAvaliação
X is E
E1 >= E2
E1< E2
E1 =:= E2
E1 > E2
E1 =\=E2
E1 =< E2
Ex:
? -X is 2+1.
X=3
Operadoreseval(E,R):- R is E.
?- E=2+1, eval(E,R) {argumentos não são avaliados
E=2+1 R is 2+1 na chamada}
R/R=3
?- X=2, X is X+1. Variáveis não alteram valor
no
Conclução