aula prática 1 introdução a prolog - wordpress.com€¦ · aula prática 1 introdução a prolog...
TRANSCRIPT
![Page 1: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/1.jpg)
Aula Prática 1
Introdução a Prolog
O Docente: MSc. David Batard Lorenzo
Inteligência Artificial
![Page 2: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/2.jpg)
Objetivo
● Implementar pequenos programas onde pode-se
apreciar os elementos fundamentais da linguagem
Prolog.
![Page 3: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/3.jpg)
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.
![Page 4: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/4.jpg)
Prog. Imperativa vs Declarativa
![Page 5: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/5.jpg)
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
![Page 6: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/6.jpg)
Programação lógica
Programação lógica (Prolog)
Programação declarativa
Programação funcional
(LISP, Haskel)
![Page 7: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/7.jpg)
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.
![Page 8: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/8.jpg)
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
![Page 9: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/9.jpg)
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).
![Page 10: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/10.jpg)
Programação lógica
Logic
Prolog
Programming
●Programming in logic
●Use a lógica como linguagen de programação
![Page 11: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/11.jpg)
Prolog
Programa
no Prolog
BASE DE CONHECIMENTO
(Definição de objetos e suas relações)
PERGUNTAS
(Consultas sobre essas relações)
![Page 12: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/12.jpg)
Prolog
Programa
no Prolog
BC
PERGUNTAS
Fatos
Regras Cláusulas
![Page 13: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/13.jpg)
Conceitos Fundamentais do PROLOG
●Fatos
●Perguntas
●Regras
●Predicado (Functor/Arity)
●Tipos de Dados
●Operadores
●Recursividad
![Page 14: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/14.jpg)
Conceitos Fundamentais do PROLOG
●Mecanismos
–Unificação
–Backtracking
–Árvores de Resolução
![Page 15: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/15.jpg)
• 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
![Page 16: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/16.jpg)
Prolog. Fatos
●Relação entre objetos, itens de ação,
uma qualidade
●Incondicionalmente verdadeira
Sintaxe
id(term, …, term).
![Page 17: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/17.jpg)
Exemplo: Relação de conexão
A B C
FD
H I
G
7
8
10
119
4
![Page 18: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/18.jpg)
Prolog. Perguntas
●Verificação BC para certos
relacionamentos.
Sintaxe
? - meta1, …, metaN.
![Page 19: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/19.jpg)
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).
![Page 20: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/20.jpg)
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.
![Page 21: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/21.jpg)
Unificação
●Exemplo:
progenitor(pedro, maria).
progenitor(pedro, maria).
progenitor(Pedro, maria,1).
progenitor(pedro, maria).
Unificam
Não unificam
![Page 22: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/22.jpg)
Prolog. Perguntas
Respostas
de
Prolog
yes
no
Var =
valor
(não unifica cláusula)
(unifica cláusula)
(unifica cláusula)
![Page 23: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/23.jpg)
Conceitos Fundamentais do PROLOG
Tipos de dados
Variáveis Não variáveis
Atômicas Não atômicas
![Page 24: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/24.jpg)
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;
![Page 25: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/25.jpg)
Conceitos Fundamentais do PROLOG
Atômicas
Átomos
Cadeias
Inteiros
Flutuante
Não atômicas
Listas
Estruturas
![Page 26: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/26.jpg)
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 : "? _ - : + * / < > = . &”
![Page 27: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/27.jpg)
Não variáveis: Cadeias
Entre ``
Ej:
`juan`<> 'juan'
p(a,_,X,X).
? p(_,b,c,`c`). ¿ Qual seria a resposta?
No.
![Page 28: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/28.jpg)
Não variáveis : Inteiro ou flutuante
Similar a lo que conocen: 2, -4, 45, 3.78, 3.1416
![Page 29: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/29.jpg)
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.
![Page 30: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/30.jpg)
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
![Page 31: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/31.jpg)
Prolog. Regras
●Sintaxe:
id(term1, …, term2) :- meta1, …, metaN.
Cabeça Corpo
![Page 32: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/32.jpg)
Prolog. Regras
●Existe um caminho entre dois nós?
camino(X, Y) :- conexion(X,Y,_).
camino(X, Y) :- conexion(X, Z, _), camino(Z, Y).
![Page 33: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/33.jpg)
Conceitos Fundamentais do PROLOG
Operadores
Comparação Aritméticos Avaliação
![Page 34: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/34.jpg)
Aritméticos
![Page 35: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/35.jpg)
Operadores
Aritméticos
Ex:
?- X = 2+1. indica a relação entre 2 e 1
mas não avalia
X = 2+1
![Page 36: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/36.jpg)
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
![Page 37: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/37.jpg)
OperadoresAvaliação
X is E
E1 >= E2
E1< E2
E1 =:= E2
E1 > E2
E1 =\=E2
E1 =< E2
Ex:
? -X is 2+1.
X=3
![Page 38: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/38.jpg)
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
![Page 39: Aula Prática 1 Introdução a Prolog - WordPress.com€¦ · Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial. Objetivo Implementar](https://reader033.vdocuments.mx/reader033/viewer/2022050414/5f8b2e784e5b7b5a4877e3c2/html5/thumbnails/39.jpg)
Conclução