Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da...

33
Programação em Lógica Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Transcript of Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da...

Page 1: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Programação em Lógica

Prof. Dr. Silvio do Lago Pereira

Departamento de Tecnologia da Informação

Faculdade de Tecnologia de São Paulo

Page 2: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Contato

Sala: 623 – Bloco A

E-mail: [email protected]

Página: www.ime.usp.br/~slago

Material disponível

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 2

Material disponível

Ementa, bibliografia e critérios de avaliação

Compilador SWI-Prolog

Cronograma de aulas e provas

Slides das aulas

Exercícios e notas

Page 3: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Curso

Objetivos: Representação de conhecimento e raciocínio automatizado em

lógica simbólica, linguagem Prolog e aplicações em inteligência artificial.

Tópicos:

Lógica proposicional

Lógica de predicados

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 3

Lógica de predicados

Raciocínio automatizado

Linguagem Prolog (SWI-Prolog)

Solução de problemas por meio de busca

Processamento de linguagem natural

Page 4: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Avaliação

Provas

P1

P2

P3

SUB

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 4

SUB

Média = (P1 + P2 + P3) / 3

Aprovação requer média maior ou igual a 6,0.

Prova substitutiva

Apenas para quem não atingir a média

Substitui a menor nota entre P1, P2 e P3

Page 5: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Introdução

Inteligência artificial

O papel da lógica na IA

Programação em lógica

Linguagem Prolog

Page 6: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Inteligência Artificial

O que é?área da computação que estuda como simular comportamento

inteligente usando métodos computacionais

Qual seu objetivo?

criação de agentes inteligentes, isto é, entidades que se

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 6

criação de agentes inteligentes, isto é, entidades que se

comportam de modo condizente com suas metas e com as

circunstâncias com que se deparam

Como evitar discussões filosóficas sobre IA?

Teste de Turing

Page 7: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Teste de Turing

PROGRAMA

?

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 7

Argumento de TuringArgumento de TuringMesmo sem uma definição precisa de inteligência, podemos assumir que o

ser humano é inteligente

Portanto, se um programa consegue se passar por um ser humano,

podemos dizer que ele apresenta algum tipo de inteligência que, neste

caso, só pode ser artificial

Mesmo sem uma definição precisa de inteligência, podemos assumir que o

ser humano é inteligente

Portanto, se um programa consegue se passar por um ser humano,

podemos dizer que ele apresenta algum tipo de inteligência que, neste

caso, só pode ser artificial

Page 8: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Capacidades necessárias a um agente inteligente

processamento de linguagem natural

representação de conhecimento

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 8

aprendizagem de máquina

raciocínio automatizado

AGENTE

Page 9: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Capacidades necessárias a um agente

Processamento de linguagem naturalpara que o programa possa se comunicar com o entrevistador

Representação de conhecimentopara armazenar aquilo que ele sabe ou aprende na entrevista

Raciocínio automatizado

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 9

Raciocínio automatizadopara usar o conhecimento que ele tem armazenado, ao responder às

perguntas feitas pelo entrevistador

Aprendizado de máquinapara absorver novas informações que lhe são comunicadas, reconhecer

padrões e atualizar seu conhecimento

Page 10: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

O papel da lógica na IA: conhecimento

Mas, o que é conhecimento?

Quando ouvimos uma frase do tipo “Ana sabe que ...” , em geral, espera-

A experiência mostra que:A experiência mostra que:

um aspecto fundamental do comportamento inteligente é que ele é

condicionado pelo conhecimento que um agente tem acerca de seu mundo

um aspecto fundamental do comportamento inteligente é que ele é

condicionado pelo conhecimento que um agente tem acerca de seu mundo

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 10

Quando ouvimos uma frase do tipo “Ana sabe que ...” , em geral, espera-

mos que ela seja completada com uma sentença como, por exemplo:

“está chovendo”

“se está chovendo, então a rua está molhada”

Isto sugere que, entre outras coisas, conhecimento é uma relação entre um agente ( “Ana”) e uma sentença declarativa ( “está chovendo”).

Page 11: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

O papel da lógica na IA: raciocínio

Por exemplo, a partir do conhecimento representado pelas sentenças:

Está chovendo.

Se está chovendo, então a rua está molhada.

Outro aspecto fundamental do comportamento inteligente é que:Outro aspecto fundamental do comportamento inteligente é que:

ele resulta de raciocínio correto sobre o conhecimento que se tem disponívelele resulta de raciocínio correto sobre o conhecimento que se tem disponível

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 11

Se está chovendo, então a rua está molhada.

Se a rua está molhada, então a rua está escorregadia.

Se a rua está escorregadia, devemos usar calçado que não escorrega.

Se a rua não está escorregadia, então podemos usar qualquer calçado.

Concluímos que a melhor coisa a fazer é:

usar um calçado que não escorrega.

conhecimentoimplícito!!!

Page 12: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

O papel da lógica na IA

Segundo [Shanahan, 1997]:

Assim, o principal papel da lógica na IA é...

garantir que novas informações possam ser corretamente extraídas do

conhecimento explicitamente armazenado por um agente.

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 12

Segundo [Shanahan, 1997]:

A melhor maneira de entender o comportamento inteligente é

considerá-lo como resultado de um raciocínio correto sobre uma

representação correta.

A lógica simbólica é o melhor formalismo para explicar as noções

de representação correta e raciocínio correto.

Page 13: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

O papel da lógica na IA

Assim, embora existam outras abordagens computacionais

interessantes para simulação de comportamento

inteligente (conexionista e evolucionista), neste curso,

adotaremos a abordagem simbolista.

Mais precisamente, adotaremos a programação em

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 13

Mais precisamente, adotaremos a programação em lógica como paradigma para a construção de agentes

inteligentes.

Page 14: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Programação em lógica

Programação em lógica é...

um formalismo lógico-computacional fundamentado em três princípios básicos:

uso de linguagem formal para representação de conhecimento

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 14

uso de linguagem formal para representação de conhecimento

uso de regras de inferência para manipulação de conhecimento

uso de uma estratégia de busca para controle de inferências

Page 15: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Programação em lógica: linguagem formal

Uma linguagem natural é ambígua“Ana viu um homem numa montanha usando um binóculo”

Quem usava o binóculo?

“Ana, usando um binóculo, viu um homem numa montanha”

“Ana, estando numa montanha, viu um homem que usava um binóculo”

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 15

Uma linguagem formal é precisasuas sentenças

são objetos (fórmulas) com significado único

têm sintaxe e semântica bem definidas

mas também pode ser menos expressiva

Page 16: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Regra de inferência é um padrão de manipulação sintática que:

permite criar novas fórmulas a partir de outras existentes

em geral, simulam formas de raciocínio válidas

Exemplo (modus ponens):

Programação em lógica: regra de inferência

αβ→α

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 16

Se neva, faz frio. Está nevando. Logo, está frio.

Se vejo TV, fico com sono. Estou vendo TV. Logo, estou com sono.

β

αβ→α

Page 17: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Programação em lógica: estratégia de busca

Um agente pode ter uma enorme quantidade de conhecimento

armazenado

Assim como nós, ele precisa usar apenas parte de seu

conhecimento para resolver um problema

Estratégia de busca serve para decidir que parte do conheci-

mento armazenado deve ser explorada em busca da solução

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 17

mento armazenado deve ser explorada em busca da solução

Page 18: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Programação em lógica: idéia básica

inferência

natural

formal

fórmulas fórmula

premissas conclusãoraciocínio

semântica semântica

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 18

inferênciafórmulas fórmula

A idéia básica da programação em lógica é...oferecer um arcabouço que permita inferir conclusões desejadas, a partir

de premissas representando o conhecimento disponível, de uma forma que

seja computacionalmente viável

Page 19: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

O sistema Prolog

Prolog é o sistema de programação em lógica mais popular que existe!

interface motor de inferência

base de conhecimento

premissas

conclusões

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 19

Interface: permite que o usuário entre com premissas codificadas em uma linguagem lógica e faça consultas para extrair conclusões destas premissas

Motor de inferência: atualiza a base de conhecimento com premissas forneci-

das pelo usuário e faz inferências para extrair informações implícitas

Base de conhecimento: armazena as premissas fornecidas pelo usuário

usuário

conclusões

Page 20: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

O sistema Prolog: vantagens

Prolog permite representar o conhecimento que um agente tem sobre

seu mundo de uma forma simples e direta, em uma linguagem de alto

nível, tornando os programas mais compactos, flexíveis e inteligíveis

Prolog permite programação declarativa; em vez de especificar como

o computador deve proceder para resolver um problema, precisamos

apenas declarar o conhecimento que temos acerca do problema e, em

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 20

apenas declarar o conhecimento que temos acerca do problema e, em

seguida, consultar o sistema para que ele encontre a solução desejada

Em outras palavras, em Prolog, basta especificar corretamente o

problema que o motor de inferência se encarrega de descobrir como

obter sua solução

Page 21: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exemplo 1 – Coloração de mapas

Problema: como colorir um mapa, usando no máximo

quatro cores, de modo que regiões adjacentes tenham

cores distintas?

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 21

B

C

D

AE

Page 22: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exemplo 1 – Coloração de mapas

Solução:

Primeiramente, declaramos as cores que podem ser usadas na

coloração; isto é feito por meio de sentenças denominadas fatos.

Por exemplo, o fato cor(azul)cor(azul)cor(azul)cor(azul) estabelece que azul é uma

das cores disponíveis.

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 22

Em seguida, declaramos que a tupla (A,B,C,D,E)(A,B,C,D,E)(A,B,C,D,E)(A,B,C,D,E), cujos

componentes correspondem às regiões do mapa, é uma

coloração válida se cada um de seus componentes é uma cor e

se componentes representando regiões adjacentes no mapa têm

valores distintos; isto é feito por meio de uma sentença

denominada regra.

Page 23: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exemplo 1 – Coloração de mapas

Implementação:

%%%% colorircolorircolorircolorir....plplplpl ---- colorecolorecolorecolore umumumum mapamapamapamapa usandousandousandousando nononono máximomáximomáximomáximo quatroquatroquatroquatro corescorescorescores

%%%% corescorescorescores disponíveisdisponíveisdisponíveisdisponíveis

cor(azul)cor(azul)cor(azul)cor(azul)....

cor(verde)cor(verde)cor(verde)cor(verde)....

cor(amarelo)cor(amarelo)cor(amarelo)cor(amarelo)....

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 23

cor(amarelo)cor(amarelo)cor(amarelo)cor(amarelo)....

cor(vermelho)cor(vermelho)cor(vermelho)cor(vermelho)....

%%%% restriçõesrestriçõesrestriçõesrestrições paraparaparapara aaaa soluçãosoluçãosoluçãosolução

coloração(A,B,C,D,E)coloração(A,B,C,D,E)coloração(A,B,C,D,E)coloração(A,B,C,D,E) ::::----

cor(A),cor(A),cor(A),cor(A), cor(B),cor(B),cor(B),cor(B), cor(C),cor(C),cor(C),cor(C), cor(D),cor(D),cor(D),cor(D), cor(E),cor(E),cor(E),cor(E),

AAAA\\\\=B,=B,=B,=B, AAAA\\\\=C,=C,=C,=C, AAAA\\\\=D,=D,=D,=D, BBBB\\\\=C,=C,=C,=C, BBBB\\\\=E,=E,=E,=E, CCCC\\\\=D,=D,=D,=D, CCCC\\\\=E,=E,=E,=E, DDDD\\\\=E=E=E=E....

Page 24: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exemplo 1 – Coloração de mapas

Teste:

????---- coloração(A,B,C,D,E)coloração(A,B,C,D,E)coloração(A,B,C,D,E)coloração(A,B,C,D,E)....

AAAA ==== azul,azul,azul,azul,BBBB ==== verde,verde,verde,verde,CCCC ==== amarelo,amarelo,amarelo,amarelo,DDDD ==== verde,verde,verde,verde,

consulta

resposta

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 24

DDDD ==== verde,verde,verde,verde,EEEE ==== azulazulazulazul ....

Vamos usar o compilador SWI-Prolog para testar o programa!

Page 25: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exemplo 1 – Coloração de mapas

Inicie a execução do compilador SWI-Prolog

Você terá acesso à tela de consultas/comandos

Digite o comando para ativação do editor de textos:

????---- emacs('colorir.pl').emacs('colorir.pl').emacs('colorir.pl').emacs('colorir.pl').

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 25

Digite o programa e compile com a opção

Compile/Compile Buffer, no menu do editor emacs

Volte à tela de consultas e digite:

????---- coloração(A,B,C,D,E).coloração(A,B,C,D,E).coloração(A,B,C,D,E).coloração(A,B,C,D,E).

Page 26: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exemplo 2 – Geração de binários

Problema: gerar todos os números

binários compostos por três dígitos

Solução:

Declarar que dígitos podem ser

usados na composição de um

número binário

Definir restrições sobre

%%%% bináriobináriobináriobinário....plplplpl

%%%% dígitosdígitosdígitosdígitos bináriosbináriosbináriosbinários

dígito(dígito(dígito(dígito(0000))))....

dígito(dígito(dígito(dígito(1111))))....

%%%% restriçõesrestriçõesrestriçõesrestrições paraparaparapara aaaa soluçãosoluçãosoluçãosolução

binário(N)binário(N)binário(N)binário(N) ::::----

NNNN ==== (A,B,C),(A,B,C),(A,B,C),(A,B,C),

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 26

Definir restrições sobre

componentes de uma estrutura

representando um número binário

de três dígitos

Teste: ????---- binário(N).binário(N).binário(N).binário(N).

N = (0,0,0) ;N = (0,0,0) ;N = (0,0,0) ;N = (0,0,0) ;

N = (0,0,1) ;N = (0,0,1) ;N = (0,0,1) ;N = (0,0,1) ;

N = (0,1,0) ;N = (0,1,0) ;N = (0,1,0) ;N = (0,1,0) ;

............

NNNN ==== (A,B,C),(A,B,C),(A,B,C),(A,B,C),

dígito(A),dígito(A),dígito(A),dígito(A),

dígito(B),dígito(B),dígito(B),dígito(B),

dígito(C)dígito(C)dígito(C)dígito(C)....

digite ponto-e-vírgula para ver as respostas

Page 27: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exibição de todas as soluções

Digitando ponto-e-vígula, podemos ver uma solução de cada vez

Para ver todas de uma vez, podemos usar os predicados predefinidos:

forall(C,A)forall(C,A)forall(C,A)forall(C,A) : que, para todo caso em que a condição CCCC é satisfeita, executa a ação AAAA

writeln(T)writeln(T)writeln(T)writeln(T) : que exibe o termo TTTT no vídeo

Por exemplo, veja o resultado da consulta a seguir:

????---- forall( binário(N), writeln(N) ).forall( binário(N), writeln(N) ).forall( binário(N), writeln(N) ).forall( binário(N), writeln(N) ).

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 27

????---- forall( binário(N), writeln(N) ).forall( binário(N), writeln(N) ).forall( binário(N), writeln(N) ).forall( binário(N), writeln(N) ).0, 0, 00, 0, 00, 0, 00, 0, 00, 0, 10, 0, 10, 0, 10, 0, 10, 1, 00, 1, 00, 1, 00, 1, 00, 1, 10, 1, 10, 1, 10, 1, 11, 0, 01, 0, 01, 0, 01, 0, 01, 0, 11, 0, 11, 0, 11, 0, 11, 1, 01, 1, 01, 1, 01, 1, 01, 1, 11, 1, 11, 1, 11, 1, 1

Page 28: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exemplo 3 – Geração de rotas aéreas

%%%% rotasrotasrotasrotas....plplplpl

%%%% vôosvôosvôosvôos

vôo(vôo(vôo(vôo(1111,a,b),a,b),a,b),a,b).... vôo(vôo(vôo(vôo(2222,b,c),b,c),b,c),b,c)....

vôo(vôo(vôo(vôo(3333,b,d),b,d),b,d),b,d).... vôo(vôo(vôo(vôo(4444,b,e),b,e),b,e),b,e)....

vôo(vôo(vôo(vôo(5555,c,a),c,a),c,a),c,a).... vôo(vôo(vôo(vôo(6666,d,c),d,c),d,c),d,c)....

vôo(vôo(vôo(vôo(7777,d,e),d,e),d,e),d,e).... vôo(vôo(vôo(vôo(8888,e,b),e,b),e,b),e,b)....

%%%% rotarotarotarota

B

C

D

A

E

1

23

4

5

6

7

8

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 28

rota(X,X,[])rota(X,X,[])rota(X,X,[])rota(X,X,[])....

rota(X,Y,[N|R])rota(X,Y,[N|R])rota(X,Y,[N|R])rota(X,Y,[N|R]) ::::----

vôo(N,X,Z),vôo(N,X,Z),vôo(N,X,Z),vôo(N,X,Z),

rota(Z,Y,R)rota(Z,Y,R)rota(Z,Y,R)rota(Z,Y,R)....

%%%% rotasrotasrotasrotas

rotas(X,Y,M)rotas(X,Y,M)rotas(X,Y,M)rotas(X,Y,M) ::::----

length(R,N),length(R,N),length(R,N),length(R,N),

rota(X,Y,R),rota(X,Y,R),rota(X,Y,R),rota(X,Y,R),

writeln(R),writeln(R),writeln(R),writeln(R),

N=M,N=M,N=M,N=M, !!!!....

Problema: gerar todas as rotas que

levam de um aeroporto X a outro Y,

até encontrar uma de comprimento M.

Solução:

Declarar vôos

Definir o conceito de rota

Impor restrições sobre comprimento

Page 29: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Outros exemplos de programas

Digite:

????---- manpce.manpce.manpce.manpce.

E escolha a opção File / Demo Programs

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 29

Page 30: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exercício 1 – Interface gráfica

Veja o que fazem o comandos a seguir:

????---- new(D,dialog), send(D,open).new(D,dialog), send(D,open).new(D,dialog), send(D,open).new(D,dialog), send(D,open).

????---- new(D,dialog('Teste')), send(D,open).new(D,dialog('Teste')), send(D,open).new(D,dialog('Teste')), send(D,open).new(D,dialog('Teste')), send(D,open).

????---- new(D,dialog('Teste')), new(D,dialog('Teste')), new(D,dialog('Teste')), new(D,dialog('Teste')),

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 30

new(B,button(ok)),new(B,button(ok)),new(B,button(ok)),new(B,button(ok)),

send(D,append,B),send(D,append,B),send(D,append,B),send(D,append,B),

send(D,open).send(D,open).send(D,open).send(D,open).

????---- new(D,dialog('Teste')),new(D,dialog('Teste')),new(D,dialog('Teste')),new(D,dialog('Teste')),

new(B,button(ok,message(@prolog,writeln,olá))),new(B,button(ok,message(@prolog,writeln,olá))),new(B,button(ok,message(@prolog,writeln,olá))),new(B,button(ok,message(@prolog,writeln,olá))),

send(D,append,B),send(D,append,B),send(D,append,B),send(D,append,B),

send(D,open).send(D,open).send(D,open).send(D,open).

Page 31: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exercício 2 – Restaurante

Sabendo-se que:

há duas opções de entrada (salada ou pão)

três opções de prato principal (peixe, carne ou massa)

duas opções de sobremesa (sorvete, pudim)

Quais são todas as possíveis refeições completas que podem ser formadas?

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 31

entrada(salada)entrada(salada)entrada(salada)entrada(salada)....

entrada(pão)entrada(pão)entrada(pão)entrada(pão)....

prato(peixe)prato(peixe)prato(peixe)prato(peixe)....

prato(carne)prato(carne)prato(carne)prato(carne)....

prato(massa)prato(massa)prato(massa)prato(massa)....

sobremesa(sorvete)sobremesa(sorvete)sobremesa(sorvete)sobremesa(sorvete)....

sobremesa(pudim)sobremesa(pudim)sobremesa(pudim)sobremesa(pudim)....

refeição(R)refeição(R)refeição(R)refeição(R) ::::---- ............ %%%% completecompletecompletecomplete estaestaestaesta regraregraregraregra !!!!

Page 32: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Exercício 3 – Árvore genealógica

3.1. Declare os seguintes fatos:

Adão é pai de Abel, Caim e Seth

Seth é pai de Enos

3.2. Declare uma regra para definir a relação “avô” e teste o sistema

X Yavô

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 32

3.3. Declare a regra correspondente ao grafo a seguir, teste e corrija:

Z

paipai

X Y

Z

irmão

paipai

Page 33: Prof. Dr. Silvio do Lago Pereira - ime.usp.brslago/pl-01.pdf · Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo. Contato Sala ... (conexionista e

Fim