INTRODUÇÃO A INTELIGÊNCIA ARTIFICIAL REPRESENTAÇÃO DO CONHECIMENTO As primeiras pesquisas em IA visavam a construções de resolvedores gerais de problemas, conhecidos como GPS (General Problem Solver). Alguns exemplos de problemas resolvidos pelos GPS eram quebra-cabeças, teoremas simples e integrais. Eles foram um marco na história da IA. Inclusive um pesquisador chamado Hebert Simon recebeu o prêmio Nobel de Economia em 1978 por conta de um. Por outro lado, apesar de serem conhecidos como “gerais”, havia muitos problemas que eles não conseguiam resolver. Surgiu então a grande dúvida: se o programa funciona corretamente, por que não consegue resolver certos tipos de problemas? Será que ele era incompleto? Deveria conter mais ou outros métodos gerais de raciocínio? Com o tempo os pesquisadores descobriram que a busca de tais métodos era praticamente impossível. Por outro lado, os sistemas poderiam substituir tais métodos por conhecimento. Começaram a surgir, então, os chamados sistemas baseados em conhecimento (SBC). Um dos primeiros sistemas foi o DENDRAL, um programa que fazia análises químicas. Esse programa tem uma grande importância, porque ele funcionou muito bem, foi um sucesso e mostrou a eficiência de sistemas baseados em conhecimento. A aquisição de conhecimento significa a capacidade de adicionar mais conhecimentos a uma base já estabelecida, ou utilizar as informações da base para inferir novos conhecimentos. Todo homem é mortal. João é um homem. João é mortal? Baseado nas duas frases acima, o computador deve conseguir responder se João é mortal. Mas como ele faz isso? O computador raciocina? Ele pensa? Ele entende o que é mortalidade? O computador conseguirá responder a pergunta conforme a metodologia utilizada para armazenar e acessar o conhecimento. Uma Representação do Conhecimento é um meio de expressão, i.e., uma linguagem na qual pode-se dizer coisas sobre o mundo. Como construir uma Base de Conhecimento??? O engenheiro do conhecimento determina quais conceitos são importantes no domínio escolhido e cria representações (em alguma linguagem de representação de conhecimento) desses objetos e suas relações no domínio dado. ESTRUTURAS PARA REPRESENTAÇÃO DE CONHECIMENTO Existem diversas formas de se representar conhecimento. Alguns exemplos são: • Lógica Proposicional, Lógica de predicados, Redes semânticas, Frames, Scripts, Ontologias, etc... Redes semânticas Estruturas em forma de grafo que codificam o conhecimento taxonômico dos objetos e suas propriedades Mais utilizadas para representar hierarquias Nodos e arcos Nodos: representam categorias ou objetos do domínio Arcos: representam relações: subconjuntos (é um tipo de ), elementos de conjuntos (é uma instância de), funções (ex. faz) Animal Ave Pomba Mamífero gato pêlo cachorro Exemplo 1: O exemplo acima permite responder à pergunta “Qual o relacionamento entre aves e mamíferos?” ou “qual a relação entre gatos e cachorros?”. Exemplo 2: cães comem? usar busca sobre a rede para provar a hipótese. Buscando a partir do nó cão temos: − Cão é-um mamífero − Mamífero é-um animal − Animal faz comer Ex. Linguagem LIFE (Logics, Inheritance, Functions and Equations) Exemplo 3: Para verificar se cães e pássaros estão relacionados: − Executar uma busca em largura a partir de ambos os nós − A interseção entre os nós visitados nos dá o relacionamento: são animais e comem Frames Frames são um conjunto de atributos (ou slots), onde apenas preenchem-se os valores. Evolução das redes semânticas, mais estruturados e, portanto, mais poderosos nós – frames arcos – atributos procedimentos podem ser anexados a um frame Os frames integram conhecimento: declarativo sobre objetos e eventos e procedimental sobre como recuperar informações ou calcular valores analogia com a orientação a objetos: Frames são classes e dados são instâncias. Procedimentos: podem inferir valores para atributos a partir de valores de outros atributos especificados anteriormente em qualquer frame do sistema. Facetas: descrevem conhecimento ou algum procedimento relativo ao atributo. Valor: especifica o valor Valor default: especifica o valor assumido caso não haja nenhuma informação Tipo: indica o tipo de dado do valor Domínio: descreve os valores possíveis para o atributo Procedimentos: como os triggers nos bancos de dados Ex. Linguagem F-Logic Scripts Um script é um esquema para uma sequência de eventos que compõem uma situação prototípica: Ir ao cinema; Ir ao médico; Viajar de trem; Ir ao restaurante É como um roteiro, descreve uma seqüência de passos ou eventos Pode descrever pessoas, objetos, cenários e condições Utilizados para descrever eventos seqüenciais EXEMPLO: Script: ir ao restaurante COMPONENTES Nome: Restaurante Objetos: mesas, menu, comida, conta, dinheiro Agentes: cliente, garçom, cozinheiro, caixa, dono Condições de entrada: o cliente tem fome, o cliente tem dinheiro Resultados: o cliente tem menos dinheiro, o dono tem mais dinheiro, cliente não tem fome Seqüência de cenas: Cena 1: Entrada 1. 2. 3. 4. 5. cliente entra no restaurante procura uma mesa decide onde sentar vai para a mesa Senta Cena 2: Pedido 6. O cliente pega o menu 7. olha o menu 8. decide o que comer 9. chama o garçom 10. vem até a mesa 11. pede a comida 12. ... Maria foi ao restaurante, comeu uma torta e saiu. Pode-se inferir sobre Maria que ela: Estava com fome Tinha algum dinheiro Pediu a torta antes de comer Um garçom a atendeu Pagou antes de sair CÁLCULO PROPOSICIONAL E CÁLCULO DOS PREDICADOS. A lógica moderna tem início em 1879, data em que Gottlob Freeg (1848-1925) publicou a primeira versão do que hoje é conhecido como cálculo dos predicados. Para analisar problemas e conceitos do conhecimento sistemático, a lógica precisa desenvolver um vocabulário preciso e adequado; isto é, através da linguagem quotidiana, vaga e ambígua, deve criar outra linguagem precisa. Uma característica importante da lógica é que, quando aplicamos regras de inferência a fatos que sabemos ser verdade, qualquer fato novo resultante será, com certeza, verdadeiro. São usados dois sistemas básicos em lógica para representar e deduzir conhecimento: cálculo proposicional e cálculo dos predicados. De uma maneira geral, um sistema lógico consiste em um conjunto de fórmulas e um conjunto de regras de inferência. As fórmulas são sentenças pertencentes a uma linguagem formal cuja sintaxe é dada. Cada fórmula pode ser associada a um valor verdade, isto é, ao valor verdadeiro (V) ou falso (F). Uma regra de inferência é uma regra sintática que, quando aplicada repetidamente a uma ou mais fórmulas verdadeiras, gera apenas novas fórmulas verdadeiras. As regras de inferência fornecem uma estrutura dedutiva à linguagem lógica. A seqüência de fórmulas geradas através da aplicação de regras de inferência sobre um conjunto inicial de fórmulas é chamada prova. − LÓGICA PROPOSICIONAL (ou Lógica Booleana) Uma ``proposição'' é um enunciado verbal, susceptível que tem um significado semântico e pode ser exclusivamente verdadeiro ou falso. Exemplos de proposições: A terra é azul. Manaus é a capital do Amazonas. Graciliano Ramos escreveu ``Memórias do Cárcere''. 2+2=5 5 Existe um conjunto de símbolos, que representam as proposições, a sintaxe consiste de um conjunto de conectivos lógicos que podem ser usados para construir expressões mais complexas. Os símbolos proposicionais são utilizados para denotar proposições, ou seja, declarações sobre o mundo que podem ser verdadeiras ou falsas, tais como ‘o carro é vermelho’. Assim, na lógica proposicional, em vez de escrevermos uma sentença inteira, apenas a representamos por um símbolo proposicional. Uma proposição simples, representada por uma letra, é uma fórmula atômica. Por exemplo, representamos toda a sentença “o céu é azul” pelo símbolo ‘p’. Combinando-se fórmulas atômicas com o emprego de conectivos tem-se fórmulas (sentenças) bem formadas – fbf. Por exemplo: “x+y=4” é uma sentença bem formada, enquanto “x2y=” não é. Sentenças complexas são construídas a partir de sentenças mais simples com a utilização de conectivos lógicos. Existem cinco conectivos de uso comum: • • • • • O símbolo ∧ significa ‘e’ ou conjunção. O símbolo ∨ significa ‘ou’, ou disjunção. O símbolo ¬ significa a negação. O símbolo ⇒ significa implicação. O símbolo = significa equivalência. As sentenças no cálculo proposicional são formadas por pelo menos um dos três elementos (símbolos proposicionais, símbolos de verdade e conectivos), de acordo com as seguintes regras: 1. Todo símbolo proposicional ou símbolo de verdade é uma sentença. Exemplos de sentenças: verdadeiro, p, q, r. 2. A negação de uma sentença é uma sentença. Exemplos de sentenças: ¬p, ¬false, ¬r 3. A conjunção de duas sentenças é uma sentença. Exemplos de sentenças: p ∧ ¬p, p ∧ q. 4. A disjunção de duas sentenças é uma sentença. Exemplo de sentenças: p ∨ ¬p, p ∨ q, ¬q ∨ r. 5. A implicação de uma sentença em outra sentença é uma sentença. Exemplos de sentenças: p ⇒ q, ¬q ⇒ r, p⇒ ¬r 6. A equivalência de duas sentenças é uma sentença. Exemplos de sentenças: p ∨ q = r, p⇒q=r∧s Em expressões da forma p ⇒ q, p é chamado de premissa ou antecedente, enquanto q é chamado de conclusão ou conseqüente. 6 Sentenças que obedecem a essas definições, ou regras, são chamadas de wellformed formulas, ou simplesmente formulas bem formadas - fbf. Os símbolos ( ) e [ ] são usados para agrupar símbolos em sub-expressões e, assim, controlar sua ordem de avaliação e significado. Por exemplo, as sentenças (1) e (2) abaixo são bem diferentes uma da outra: (p ∨ q) = r (1) p ∨ (q = r) (2) Uma expressão será uma sentença, ou uma fórmula bem formada, se ela for composta por símbolos legais obedecendo a alguma (ou um conjunto) das seis regras descritas anteriormente. Por exemplo, podemos provar que a expressão (3) é uma fórmula bem formada pois: ((p ∧q) ⇒ r) = ¬p ∨ ¬q ∨ r (3) • p, q e r são símbolos proposicionais e, portanto, são sentenças (regra 1). • p ∧q, a conjunção de duas sentenças é uma sentença (regra 3). • (p ∧q) ⇒ r, a implicação de uma sentença em outra é uma sentença (regra 5). • ¬p e ¬q, negações de sentenças, são sentenças (regra 2). • ¬p ∨ ¬q, a disjunção de duas sentenças é uma sentença (regra 4). • ¬p ∨ ¬q ∨ r, a disjunção de duas sentenças, é uma sentença (regra 4). • ((p ∧q) ⇒ r) = ¬p ∨ ¬q ∨ r, a equivalência de duas sentenças, é uma sentença (regra 6). Assim, provamos que a expressão (3) é uma fórmula bem formada. Semântica do Cálculo Proposicional Como já dito anteriormente, um símbolo proposicional corresponde a uma afirmação, ou proposição, sobre o mundo. Por exemplo, um símbolo p pode representar a frase “está chovendo” e o símbolo q pode representar a frase “eu moro numa casa amarela”. Uma proposição pode ser tanto verdadeira como falsa, dependendo do estado atual do mundo. O valor verdade associada a uma proposição é chamado de interpretação. Formalmente, uma interpretação é um mapeamento dos símbolos proposicionais no conjunto {v,f}. Os símbolos ‘v’ e ‘f’ são parte do conjunto de sentenças bem 7 formadas do cálculo proposicional, i.e., são distintos dos valores verdade associados a uma sentença. Ou seja, uma sentença pode conter, entre outros símbolos, o símbolo ‘v’ e, no final, o seu valor verdade ser falso. Para não confundir o símbolo de verdade com o símbolo da disjunção, vamos utilizar os símbolos de verdadeiro e falso com letra maiúscula, V e F. Cada mapeamento de um valor verdade em uma proposição corresponde a uma interpretação. Por exemplo, se ‘p’ denota a proposição “está chovendo” e ‘q’ denota a proposição “eu estou trabalhando”, então o conjunto de proposições {p,q} pode ter 4 interpretações possíveis: 1. p é verdade e q é verdade. Ou seja, “está chovendo” e “eu estou trabalhando”. 2. p é verdade e q é falso. Ou seja, “está chovendo” e “eu NÃO estou trabalhando”. 3. p é falso e q é verdade. Ou seja, “NÃO está chovendo” e “eu estou trabalhando”. 4. p é falso e q é falso. Ou seja, “NÃO está chovendo” e “eu NÃO estou trabalhando”. Regras para determinar o valor verdade de uma sentença Pela definição formal do cálculo proposicional, o valor verdade de uma sentença é determinado pelas seguintes regras: • Uma negação inverte o valor verdade de uma proposição. Portanto, o valor verdade de uma negação ¬p será F se o valor verdade de p for V. Do mesmo modo, o valor verdade de uma sentença ¬p será F se o valor verdade de p for F. • O valor verdade de uma conjunção será V apenas o valor de ambos os lados da sentença forem verdade. Por ex., a sentença (p ∧ q) terá valor verdade V apenas se p for V e q também for V. • O valor verdade de uma disjunção será F quando o valor de ambos os lados da sentença forem F. Caso contrário, o valor será V. • O valor verdade de uma implicação será F apenas quando a premissa (expressão que vem à esquerda do símbolo ⇒) for V e o conseqüente (expressão à direita do símbolo ⇒) for F. Em qualquer outro caso o valor será V. • O valor verdade de uma equivalência será V apenas quando as expressões dos dois lados tiverem o mesmo valor verdade para qualquer interpretação. Caso contrário, o valor verdade será F. As possíveis interpretações de proposições são descritas por meio de tabelas verdade. Uma tabela-verdade lista todos os possíveis valores que podem ser associadas a cada um dos símbolos de uma expressão e também o valor de cada expressão. Assim, 8 uma tabela-verdade lista todos os possíveis “estados do mundo”, ou seja, todas as possíveis interpretações. Por exemplo, a tabela verdade da expressão p ∧ q lista todos os possíveis valores de p, todos os possíveis valores de q e todas as possíveis combinações de valores. Conseqüentemente, lista todos os possíveis valores da expressão p ∧ q. Como podemos ver por essa tabela, uma conjunção apenas é verdadeira quando ambos os lados são verdadeiros, de acordo com a regra para conjunção descrita acima. p V V F F q V F V F p∧q V F F F Tabela-verdade para a expressão p ∧ q No cálculo proposicional, duas expressões são equivalentes se elas têm o mesmo valor para qualquer interpretação. Essa equivalência pode ser demonstrada usando tabelas-verdade. Por exemplo, a Tabela abaixo mostra a equivalência das expressões (p ⇒ q) e (¬p ∨ q). p V V F F q V F V F ¬p F F V V ¬p ∨q V F V V p⇒ ⇒q V F V V (¬ ¬p ∨q)=( p⇒ ⇒q) V V V V Tabela-verdade demonstrando a equivalência de expressões Mostrando-se que duas expressões são idênticas por meio de suas tabelasverdade, podemos provar outras equivalências do cálculo proposicional. • ¬(¬p) = p • (p ∨ q) = (¬p ⇒ q) • lei contrapositiva: (p ⇒ q) = (¬q ⇒ ¬p) • lei de ‘de Morgan’: ¬ (p ∨ q) = (¬p ∧ ¬q) ¬ (p ∧ q) = (¬p ∨ ¬q) • lei comutativa: (p ∧ q) = (q ∧ p) (p ∨ q) = (q ∨ p) • lei associativa: ((p ∧ q) ∧ r) = (p ∧ (q ∧ r)) ((p ∨ q) ∨ r) = (p ∨ (q ∨ r)) • lei distributiva: (p ∨ (q ∧ r)) = (p ∨ q) ∧ (p ∨ r) (p ∧ (q ∨ r)) = (p ∧ q) ∨ (p ∧ r) 9 LISTA EXERCÍCIOS – LÓGICA PROPOSICIONAL Ex: Gosto de viajar se e somente se visitei o chile Ex.: p: elefantes podem subir em árvores q: 3 é um número irracional pq 5) Considerando que a proposição “todos os pelicanos comem peixe” seja verdadeira, quais das proposições abaixo são verdadeiras? (a) Se uma ave é um pelicano, então ela come peixe. (b) Se uma ave não é um pelicano, então ela não come peixe. (c) Se uma ave come peixe, então ela é um pelicano. (d) Se uma ave não come peixe, então ela não é um pelicano. 10 − Lógica de Predicados (Representação declarativa) Ao invés de verificar as sentenças quanto ao seu valor verdade, o calculo de predicados é usado para representar objetos e relações entre eles. Um predicado é o que diz alguma coisa sobre o sujeito. Ex.: O livro é vermelho. Representação: vermelho (livro). Na lógica dos predicados, a suposição é que o mundo consiste de: • Objetos e suas propriedades Exemplos de objetos: pessoas, casas, números, cores Exemplos de propriedades: vermelho, redondo, primo • Relacionamentos entre objetos Exemplos: irmão_de, maior_que, parte_de • Funções (relações nas quais há apenas um valor para uma dada entrada) Exemplos: pai_de, melhor_amigo_de Nessa representação, existem duas entidades. Os fatos e o engenho de inferência. Os fatos representam o conhecimento do sistema. O engenho de inferência é responsável por processar esses fatos para responder perguntas, resolver problemas ou gerar novos fatos. Por exemplo, para representar as sentenças “Todo homem é mortal” e “Sócrates é um homem, eu simplesmente declaro Mortal(homem) e Homem(sócrates). O engenho de inferência, então, será responsável por acessar esses fatos e, assim, responder perguntas tais como:“Sócrates é um homem?” ou “Sócrates é mortal”. Ou seja, o conhecimento é apenas declarado. O uso que se fará dele cabe ao engenho de inferência. Conhecimento separado de processamento! Principais Componentes e Características Os principais elementos da lógica dos predicados são as sentenças e os termos. Termos: São construídos por símbolos de constantes, variáveis e símbolos de funções, que formam uma expressão lógica que se refere a um objeto. Constantes – letras do começo do alfabeto (a,b,c,...) ou palavras (gato, azul) Variáveis – letras do fim do alfabeto (x, y, ...) Funções – soma(x,y) equivale a “x+y” pai_de(x) equivale a “pai de x” Exemplos de termos: Mais(x,1) Mais(mais(x,1),x) mãe(jane) Sentenças: São construídas por quantificadores e símbolos de predicado. Predicados representam relações. Maior_que(x,3) “X é maior do que 3” 11 Gosta(Ana,vinho) Irmão(João, Pedro). Menor_que(Ana, Maria). Gosta(jorge,kate). Gosta(jorge,susie) Gosta(jorge,maria,joana). “Ana gosta de vinho” Os símbolos de predicados nesses exemplos são irmão, menor_que e gosta. Podemos observar que um símbolo de predicado pode ser utilizado com diferentes números de argumentos. Neste exemplo existem dois gosta diferentes, um com dois argumentos e outro com três. Quando um predicado é utilizado em sentenças com diferentes números de argumentos, considera-se que ele representa duas relações diferentes. Assim, um predicado é definido por seu nome e sua paridade. Nesse mesmo exemplo, os outros símbolos, tais como João e Jorge, são constantes e representam objetos no domínio do problema. Sentenças Complexas Pode-se usar os mesmos conectivos da lógica proposicional, com a mesma semântica. Irmão(João,Pedro) ∧ irmão(João, Paulo) Menor_que(x,y) ∨ menor_que(x,z) P(x) ⇒ Q(x) P(x,y) ⇒ (Q(x) ∨ R(y)) Quantificadores Permitem expressar propriedades de conjuntos de objetos. • Quantificador Universal (∀) Geralmente utilizado da forma (∀x). Leia-se: “para todo x”. Exemplo: representar a declaração “Todo número racional é um número real”. Vamos definir que Q(x) representa “x é um número racional” Vamos definir que R(x) representa “x é um número real”. Portanto: (∀x) (Q(x) ⇒ R(x)) • Quantificador Existencial (∃) Geralmente utilizado da forma (∃x). Leia-se: “existe x” ou “existe pelo menos um x”. Esse quantificador expressa a propriedade de um objeto, sem especificar qual. Exemplo: representar a declaração “Existe um número que é primo”. Vamos definir que P(x) representa “x é um número primo” Portanto: (∃x) P(x) • Quantificadores aninhados Pode-se utilizar quantificadores juntamente com duas variáveis, ou ainda um quantificador universal seguido de um existencial e vice-versa. Exemplos: ∀x,y (pai_de(x,y) ⇒ filho_de(y,x) ∀x ∃y maior_que(x,y) 12 Este último exemplo equivale a dizer que “para todo x existe pelo menos um y tal que x é mayor que y”. Conseqüentemente, equivale também a dizer que todo número tem um número maior do que ele. Variáveis As variáveis podem ser livres ou ligadas. Diz-se que uma variável é ligada quando está no escopo de um quantificador. Se pelo menos uma ocorrência da variável for ligada, então a variável é ligada. Uma variável é livre se não está no escopo de um quantificador. Exemplos: (∀x) P(x,y) x ligada (a primeira ocorrência está ligada ao quantificador universal) y livre (∀x) P(x,y) ∧ (∀y) Q(y) ligada livre ligada Como podemos ver pelo segundo exemplo, a primeira ocorrência da variável y é livre, pois até o momento não havia nenhuma ocorrência de y junto a um quantificador. No entanto, a segunda ocorrência de y é ligada, pois ela já havia aparecido junto a um quantificador universal (∀y). Precedência dos conectivos A precedência indica, numa fórmula, quais conectivos devem ser analisados primeiro, a não ser em caso de ordenação por meio de parênteses. A ordem na lógica dos predicados é a seguinte: 1) ∀, ∃ 4) ∨ 2) ¬ 5) ⇒ 6) ⇔ 3) ∧ Assim, a expressão (∃x) A(x) ∨ B(x) equivale a ((∃x) A(x)) ∨ B(x) Interpretação de Fórmulas Formalmente, uma interpretação de uma fórmula F consiste de um domínio D e uma atribuição de valores a cada constante, símbolo de funções e símbolo de predicado. Para cada interpretação de uma fórmula sobre um domínio D, a fórmula pode ser avaliada como V ou F. Uma fórmula que contém variáveis livres não pode ter seu valor verdade calculado. Exemplo 1: suponha as duas fórmulas seguintes, o domínio e as possíveis interpretações para P. 1. (∀x) P(x) P(1) P(2) 2. (∃x) ¬ P(x) V F Domínio: D = {1,2} A partir do domínio e das possíveis substituições para P, concluímos que : 1. O valor verdade de (∀x) P(x) é falso, pois P(x) não é verdade para todo x (já que quando x=2 o valor é F, como podemos ver pela tabela). 2. O valor verdade de (∃x) ¬ P(x) é verdadeiro, pois existe pelo menos um x (x=2) tal que a expressão é V. 13 LISTA EXERCÍCIOS – LÓGICA DE PREDICADOS 1. Represente em lógica de predicados as seguintes frases: a. João gosta de todo tipo de comida b. Maçãs são comida c. Frango é comida d. Qualquer coisa que alguém coma e que não cause sua morte é comida e. Paulo come amendoim e ainda está vivo f. Susana come tudo o que Paulo come 2. Representar o axioma “Para todo número, existe apenas um sucessor”. 3. Representar o axioma “Não existe número para o qual zero é o seu sucessor”. 4. Representar o axioma: “Para todo número diferente de zero, existe apenas um antecessor imediato”. 5. formalize em lógica de predicados as seguintes frases: a) Se não chover amanhã, Tom irá para as montanhas. b) Lisa é um doberman e também uma cadela meiga. c) Todos os jogadores de basquete são altos. d) Algumas pessoas gostam de beterraba. e) Ninguém gosta de impostos 14