Programação em Lógica

Documentos relacionados
Introdução. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Mecanismos de Controle

Introdução. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

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

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

Prof. A. G. Silva. 09 de março de Prof. A. G. Silva Programação em Lógica 09 de março de / 35

Mecanismos de Controle

Lógica Proposicional (Consequência lógica / Dedução formal)

Paradigma de Programação Lógico. Marco A L Barbosa

Lógica Proposicional Parte 2

INF 1771 Inteligência Artificial

Sistemas Inteligentes

Representação de Conhecimento

Cálculo proposicional

Fundamentos da Computação 1. Aula 03

Programação Lógica. A Linguagem Prolog. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia

Figura: Capa do Livro Russell, S., Norvig, P. Artificial Intelligence A Modern Approach, Prentice-Hall.

Paradigma Simbólico. Sistemas de Informação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. (Apostila 2)

Representação do Conhecimento

Lógica Computacional

Inteligência Artificial

Sistemas Especialistas

Linguagens Lógicas. Aluno: Victor Rocha

INF 1771 Inteligência Artificial

Cálculo proposicional

Inteligência Artificial. Sistemas Baseados em Conhecimento. Representação de Conhecimento (continuação)

Sistemas Especialistas (SE)

Conhecimento e Raciocínio Agente Lógicos Capítulo 7. Leliane Nunes de Barros

Inteligência Artificial. Categorias de Conhecimento

UNIDADE ACADÊMICA: Faculdade de

MAC425/5739 Inteligência Artificial 6. Agentes lógicos

Raciocínio Automatizado

Disciplina de Algoritmos e Programação

Inteligência Artificial. Conceitos Gerais

Técnicas de Inteligência Artificial

Inteligência Artificial Introdução

Fundamentos de Lógica Matemática

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 15 Agentes que Raciocinam Logicamente

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

Programação: Vetores

Introdução à Programação

Fabrício Jailson Barth BandTec

INTELIGÊNCIA ARTIFICIAL. Prof. Cedric Luiz de Carvalho

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Matemática discreta e Lógica Matemática

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke

Agentes Baseados em Conhecimento

Gramáticas Livres de Contexto

Aula 2 Programação Lógica Sintaxe Prolog. Profa. Elaine Faria UFU -2014

INF 1771 Inteligência Artificial

Lógica Proposicional e Dedução Natural 1/48. Douglas O. Cardoso docardoso.github.io

INF 1005 Programação I

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação

Paradigmas de Programação

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Linguagens de Domínio Específico

Introdução a Inteligência Artificial

Matemática discreta e Lógica Matemática

Fundamentos da Computação 1. Carmen Cecilia Centeno

Fundamentos de Lógica Matemática

FACULDADE LEÃO SAMPAIO

Interação Humano-Computador Apresentação e Visualização das Informações PROFESSORA CINTIA CAETANO

GRAFOS Aula 03 Representações de Grafos Max Pereira

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Introdução a Programação de Jogos

Lógica Proposicional. LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08. c Inês Lynce c Luísa Coheur

Victor Hugo Andrade Soares monitor João Vitor dos Santos Tristão Primeiro Trabalho Prático

Redes Neurais (Inteligência Artificial)

SISTEMAS ESPECIALISTAS

INF 1771 Inteligência Artificial

Introdução à Lógica Proposicional Sintaxe

Introdução aos Algoritmos

Organização e Arquitetura de Computadores I

teoria satisfaz, mas que ao mesmo tempo não apresentasse as limitações que ela possui, uma direção na qual um trabalho como o que realizamos poderia

Processamento de Linguagem Natural

CURRÍCULO DO CURSO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO (noturno) [Campus Araranguá] 20171

Introdução aos Algoritmos

Introdução a computação

Tópicos Especiais em Informática Fatec Indaiatuba

Processamento de Linguagem Natural

Lógica para Computação Introdução. José Gustavo de Souza Paiva

Programação Estruturada Aula - Introdução a Linguagem de Programação

Conceitos Básicos de Algoritmos

Fundamentos de Programação Introdução

INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

Inteligência Artificial. Sistemas Inteligentes. Síntese baseada no cap.2 Sistemas Inteligentes da Solange Rezende

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

3. Linguagem de Programação C

Paradigmas de Programação

Inteligência Artificial

Programação Estruturada

Transcrição:

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

Contato Sala: 623 Bloco A E-mail: slago@ime.usp.br Página: www.ime.usp.br/~slago 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 2

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 Raciocínio automatizado Linguagem Prolog (SWI-Prolog) Solução de problemas por meio de busca Processamento de linguagem natural Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 3

Avaliação Provas P1: 09/09 P2: 28/10 P3: 02/12 SUB: 09/12 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 4

Introdução Inteligência artificial O papel da lógica na IA Programação em lógica Linguagem Prolog

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 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 6

Teste de Turing? PROGRAMA Argumento de Turing 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 7

Capacidades necessárias a um agente inteligente processamento de linguagem natural representação de conhecimento AGENTE raciocínio automatizado aprendizagem de máquina Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 8

Capacidades necessárias a um agente Processamento de linguagem natural para que o programa possa se comunicar com o entrevistador Representação de conhecimento para armazenar aquilo que ele sabe ou aprende na entrevista Raciocínio automatizado para usar o conhecimento que ele tem armazenado, ao responder às perguntas feitas pelo entrevistador Aprendizado de máquina para absorver novas informações que lhe são comunicadas, reconhecer padrões e atualizar seu conhecimento Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 9

O papel da lógica na IA: conhecimento A experiência mostra que: um aspecto fundamental do comportamento inteligente é que ele é condicionado pelo conhecimento que um agente tem acerca de seu mundo Mas, o que é conhecimento? Quando ouvimos uma frase do tipo Ana sabe que..., em geral, esperamos 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 ). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 10

O papel da lógica na IA: raciocínio Outro aspecto fundamental do comportamento inteligente é que: ele resulta de raciocínio correto sobre o conhecimento que se tem disponível Por exemplo, a partir do conhecimento representado pelas sentenças: Está chovendo. 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. conhecimento implícito!!! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 11

O papel da lógica na IA 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. 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. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 12

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 lógica como paradigma para a construção de agentes inteligentes. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 13

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 uso de regras de inferência para manipulação de conhecimento uso de uma estratégia de busca para controle de inferências Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 14

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 Uma linguagem formal é precisa suas 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 15

Programação em lógica: regra de inferência 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): α β β α Se neva, faz frio. Está nevando. Logo, está frio. Se vejo TV, fico com sono. Estou vendo TV. Logo, estou com sono. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 16

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 conhecimento armazenado deve ser explorada em busca da solução Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 17

Programação em lógica: idéia básica natural formal premissas semântica fórmulas raciocínio inferência conclusão semântica 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 18

O sistema Prolog Prolog é o sistema de programação em lógica mais popular que existe! usuário premissas conclusões interface motor de inferência base de conhecimento 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 fornecidas pelo usuário e faz inferências para extrair informações implícitas Base de conhecimento: armazena as premissas fornecidas pelo usuário Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 19

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 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 20

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? A B C E D Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 21

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) estabelece que azul é uma das cores disponíveis. Em seguida, declaramos que a tupla (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. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 22

Exemplo 1 Coloração de mapas Implementação: % colorir.pl - colore um mapa usando no máximo quatro cores % cores disponíveis cor(azul). cor(verde). cor(amarelo). cor(vermelho). % restrições para a solução coloração(a,b,c,d,e) :- cor(a), cor(b), cor(c), cor(d), cor(e), A\=B, A\=C, A\=D, B\=C, B\=E, C\=D, C\=E, D\=E =E. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 23

Exemplo 1 Coloração de mapas Teste:?- coloração(a,b,c,d,e). A = azul, B = verde, C = amarelo, D = verde, E = azul. consulta resposta Vamos usar o compilador SWI-Prolog para testar o programa! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 24

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'). 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). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 25

Exemplo 2 Geração de binários Problema: gerar todos os números binários compostos por três dígitos Solução: Teste: Declarar que dígitos podem ser usados na composição de um número binário Definir restrições sobre componentes de uma estrutura representando um número binário de três dígitos?- binário(n). N = (0,0,0) ; N = (0,0,1) ; N = (0,1,0) ;... % binário.pl % dígitos binários dígito(0). dígito(1). % restrições para a solução binário(n) :- N = (A,B,C), dígito(a), dígito(b), dígito(c). digite ponto-e-vírgula para ver as respostas Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 26

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) : que, para todo caso em que a condição C é satisfeita, executa a ação A writeln(t) : que exibe o termo T no vídeo Por exemplo, veja o resultado da consulta a seguir:?- forall( binário(n), writeln(n) ). 0, 0, 0 0, 0, 1 0, 1, 0 0, 1, 1 1, 0, 0 1, 0, 1 1, 1, 0 1, 1, 1 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 27

Exemplo 3 Geração de rotas aéreas A 5 1 2 B C 6 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 3 D 4 8 7 E % rotas.pl % vôos vôo(1,a,b),a,b). vôo(2,b,c),b,c). vôo(3,b,d),b,d). vôo(4,b,e),b,e). vôo(5,c,a),c,a). vôo(6,d,c),d,c). vôo(7,d,e),d,e). vôo(8,e,b),e,b). % rota rota(x,x,[]). rota(x,y,[n R]) :- vôo(n,x,z), rota(z,y,r). % rotas rotas(x,y,m) :- length(r,n), rota(x,y,r), writeln(r), N=M,!. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 28

Digite: Outros exemplos de programas?- manpce. E escolha a opção File / Demo Programs Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 29

Exercício 1 Interface gráfica Veja o que fazem o comandos a seguir:?- new(d,dialog), send(d,open).?- new(d,dialog('teste')), send(d,open).?- new(d,dialog('teste')), new(b,button(ok)), send(d,append,b), send(d,open).?- new(d,dialog('teste')), new(b,button(ok,message(@prolog,writeln,olá))), send(d,append,b), send(d,open). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 30

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? entrada(salada). entrada(pão). prato(peixe). prato(carne). prato(massa). sobremesa(sorvete). sobremesa(pudim). refeição(r) :-... % complete esta regra! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 31

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 avô Y pai Z pai 3.3. Declare a regra correspondente ao grafo a seguir, teste e corrija: X pai irmão Z pai Y Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 32

Fim