aula prática 1 introdução a prolog - wordpress.com€¦ · aula prática 1 introdução a prolog...

39
Aula Prática 1 Introdução a Prolog O Docente: MSc. David Batard Lorenzo Inteligência Artificial

Upload: others

Post on 03-Aug-2020

7 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Conclução