Curso Inteligência Artificial - Parte 2 -

1.708 visualizações

Publicada em

Curso de Inteligência Artificial Parte 2

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.708
No SlideShare
0
A partir de incorporações
0
Número de incorporações
988
Ações
Compartilhamentos
0
Downloads
503
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Curso Inteligência Artificial - Parte 2 -

  1. 1. 1 Inteligência Artificial (parte II) Ronaldo F. Ramos, Dr ronaldo@cefet-ce.br Adaptado de : aima.cs.berkeley.edu
  2. 2. Agentes Lógicos
  3. 3. 3 Roteiro ! Agentes Baseados em Conhecimento ! O mundo de Wumpus ! Lógica em Geral – Modelos e implicações ! Lógica proposicional (booleana). ! Equivalência, validade e satisfatibilidade ! Regras de Inferência e prova de teoremas ! Encadeamento para frente ! Encadeamento para trás ! Resolução
  4. 4. 4 Bases de conhecimento. Máquina de Inferência Base de conhecimento (KB) Algoritmo independente de domínio Conteúdo dependente do domínio ! Base de conhecimento = conjunto de sentenças em uma linguagem formal. ! Abordagem declarativa para construção de agentes (ou outra coisa) ! Informar ao mesmo apenas o que ele precisa saber ! Então ele pode perguntar sozinho o que ele fazer. As respostas virão da base de conhecimento ! Agentes podem ser visualizados ao nível do conhecimento i. e., o que eles sabem não importando como foram implementados, ou ao nivel de implementação, i. e., estruturas de dados na KB e os algoritmos que os manipulam.
  5. 5. 5 Um agente baseado em conhecimento função KB-AGENT (percepção) retorna uma ação variáveis estáticas: KB, a base de conhecimento t, um contador inicialmente 0 indicando tempo TELL(KB,CRIAR-SENTENÇA-DE-PERCEPÇÃO(percepção,t)) ação <-- ASK(KB, CRIAR-CONSULTA-DE-AÇÃO(t)) TELL(KB,CRIAR-SENTENÇA-DE-AÇÃO(ação,t)) t <-- t + 1 retorna ação ! O agente deve ser capaz de: ! Representar estados, ações, etc ! Incorporar novas percepções ! Atualizar a representação interna do mundo ! Deduzir propriedades ocultas do mundo ! Deduzir ações apropriadas.
  6. 6. 6 Mundo de Wumpus - Descrição PEAS ! Medida de desempenho ! +1000 se pegar ouro, -1000 se cair no poço ou for devorado pelo wumpus ! -1 ação executada, -10 uso da flecha ! Ambiente ! Malha de 4 x 4 o começa em 1,1 ! Quadrados adjacentes ao wumpus fedem ! Quadrados adjacentes a um poço têm brisa ! Brilho sse tem o ouro ! Um tiro pode matar o wumpus se vc está lutando com ele. ! O agente só possui uma flecha ! Agente pode AGARRAR o ouro se estiver no mesmo quadrado ! Agente pode SOLTAR o ouro no quadrado atual ! Sensores: Fedor, Brisa, Brilho, Impacto, Grito de Morte ! Efetuadores: Esquerda, Direita, Em frente, Baixo, Agarra, Solta, Atira
  7. 7. 7 Caracterização do mundo ! Completamente observável: Não – somente percepção local. ! Determinístico: Sim – As conseqüências são perfeitamente especificadas. ! Episódico: Não – Seqüencial ao nível das ações. ! Estático: Sim – Wumpus e os poços não movem. ! Discreto: Sim ! Único Agente: Sim – Wumpus é essencialmente uma criatura natural
  8. 8. 8 Explorando o mundo de Wumpus
  9. 9. 9 Explorando o mundo de Wumpus
  10. 10. 10 Explorando o mundo de Wumpus
  11. 11. 11 Explorando o mundo de Wumpus
  12. 12. 12 Explorando o mundo de Wumpus
  13. 13. 13 Explorando o mundo de Wumpus
  14. 14. 14 Explorando o mundo de Wumpus
  15. 15. 15 Explorando o mundo de Wumpus
  16. 16. 16 Lógica em geral ! Lógica é uma linguagem formal para representar informações a partir das quais podem ser retiradas conclusões. ! Regras de sintaxe definem as sentenças na linguagem ! A Semântica define o significado das sentenças ! i. e., define a verdade de uma sentença em um mundo. ! E.g., a linguagem da aritmética ! x+2 ≥ y é uma sentença; x2+y > {} não é uma sentença ! x+2 ≥ y é verdade sse o número x+2 não é menor que o número y ! x+2 ≥ y é verdade em um mundo onde x = 7, y = 1 ! x+2 ≥ y é falso em um mundo onde x = 0, y = 6
  17. 17. 17 Consequência Lógica ! Consequência lógica significa que uma coisa segue, decorre logicamente de outra. KB ╞ α ! Uma base de conhecimento KB tem como consequência lógica uma sentença α sse α é verdade em todos os mundos onde KB é verdade ! E.g., A base de conhecimento KB contendo “Os gigantes ganharam” e “Os Vermelhos Ganharam” tem como conseqüência lógica “Ou os gigantes ganharam ou os Vermelhos Ganharam” ! E.g., x+y = 4 tem como conseqüência 4 = x+y ! Conseqüência lógica é um relacionamento entre sentenças (sintaxe) baseada na semântica.
  18. 18. Modelos ! Lógicos normalmente raciocinam em termos de modelos, os quais são mundos formalmente estruturados com relação a qual verdade pode ser avaliada. ! Dizemos que m é um modelo de α se α é verdade em m 18 ! M(α) é o conjunto de todos os modelos de α ! Consequentemente KB ╞ α sse M(KB) ⊆ M(α) ! E.g. KB = Gigantes ganharam e Vermelhos ganharam α = Gigantes ganharam
  19. 19. 19 Conseqüência lógica no mundo de wumpus Situação depois de detectar nada em [1,1], mover para direita, brisa em [2,1] Considerar possíveis modelos para a KB assumindo somente a existência de poços. 3 escolhas booleanas ⇒ 8 modelos possíveis
  20. 20. 20 Modelos Wumpus
  21. 21. 21 Modelos Wumpus ! KB = Regras do mundo wumpus + observações
  22. 22. 22 Modelos Wumpus ! KB = Regras do Mundo Wumpus + observações ! α1 = "[1,2] é seguro", KB ╞ α1, provado por checagem do modelo
  23. 23. 23 Modelos Wumpus ! KB = Regras do Mundo Wumpus + observações
  24. 24. 24 Modelos Wumpus ! KB = Regras do Mundo Wumpus + observações ! α2 = "[2,2] é seguro", KB ╞ α2
  25. 25. 25 Inferência ! KB ├i α = Sentença α pode ser derivada de KB pelo procedimento i ! Consistência: i é consistente se sempre que KB ├i α, é também verdade que KB╞ α ! Completeza: i é completo se sempre que KB╞ α, também é verdade que KB ├i α ! A “Lógica de Primeira Ordem” é expressiva o suficiente para expressar o que for de interesse e para isto sempre existe um procedimento consistente e completo. ! Ou seja, o procedimento reponderá qualquer questão cuja resposta decorre do que é conhecido pela KB.
  26. 26. Lógica proposicional : Sintaxe ! A lógica proposicional é a “lógica” mais simples – Ilustra idéias básicas 26 ! Símbolos proposicionais P1, P2 etc são sentenças ! Se S é uma setença , ¬S é uma sentença (negação) ! Se S1 e S2 são sentenças, S1 ∧ S2 é uma sentença(conjunção) ! Se S1 e S2 são sentenças, S1 ∨ S2 é uma sentença(disjunção) ! Se S1 e S2 são sentenças, S1 ⇒ S2 é uma sentença(implicação) ! Se S1 e S2 são sentenças, S1 ⇔ S2 é uma sentença(bicondicional)
  27. 27. 27 Lógica Proposicional: Semântica Cada modelo especifica a verdade ou falsidade para cada proposição. Ex. P1,2 P2,2 P3,1 falso verdade falso Com estes símbolos podem ser enumerados automaticamente 8 modelos possíveis. Regras para a avaliação de verdade com relação a um modelo m: ¬S é verdade sse S is falso S1 ∧ S2 é verdade sse S1 é verdade e S2 é verdade S1 ∨ S2 é verdade sse S1 é verdade ou S2 é verdade S1 ⇒ S2 é verdade sse S1 é falso ou S2 é verdade i.e., é falso sse S1 is verdade e S2 is falso S1 ⇔ S2 é verdade sse S1⇒S2 é verdade e S2⇒S1 é verdade Um processo recursivo simples avalia uma sentença: ¬P1,2 ∧ (P2,2 ∨ P3,1) = verdade ∧ (verdade ∨ falso) = verdade ∧ verdade = verdade
  28. 28. Tabela de Verdade para Conectivos P Q ~P P ^ Q P v Q P" Q P#Q Falso Falso Verdade Falso Falso Verdade Verdade Falso Verdade Verdade Falso Verdade Verdade Falso Verdade Falso Falso Falso Verdade Falso Falso Verdade Verdade Falso Verdade Verdade Verdade Verdade 28
  29. 29. 29 Sentenças no mundo Wumpus Seja Pi,j verdade se existir um poço em [i, j]. Seja Bi,j verdade se existir uma brisa em [i, j]. - Não existe poço em [1,1] R1: ¬ P1,1 - Poços ocasionam brisa em quadros adjacentes R2: B1,1 ⇔ (P1,2 ∨ P2,1) R3: B2,1 ⇔ (P1,1 ∨ P2,2 ∨ P3,1) - Não existe brisa em [1,1] porém existe em [2,1] R4: ¬B1,1 R5: B2,1
  30. 30. 30 Tabela de Verdade p/ Inferência B1,1 B2,1 P1,1 P1,2 P2,1 P2,2 P3,1 KB α1 F F F F F F F F V F F F F F F V F V ... ... ... ... ... ... ... ... ... F V F F F F F F V F V F F F F V V V F V F F F V F V V F V F F F V V V V F V F F V F F F V ... ... ... ... ... ... ... ... ... V V V V F V V F F Lembrete: KB = R1 ^ R2 ^ R3 ^ R4 ^ R5
  31. 31. 31 Inferência por enumeração ! Enumeração em profundidade preserva verdade e é completa Função CONSEQUENCIA-LOGICA-TV?(KB,A) retorna V ou F entradas : KB, a base de conhecimento, sentença em lógica proposicional α, a consulta, uma sentença em lógica proposicional simbolos <- uma lista de simbolos em Logica Proposicional retornar VERIFICAR-TODOS-TV(KB,α,simbolos,[]) --------------------------------------------------------------------------------- Função VERIFICAR-TODOS-TV(KB, α,simbolos, modelo) retorna V ou F se VAZIO(simbolos) então se VERDADE-LP(BC,modelo) então retornar VERDADEIRO-LP(α,modelo) senão retornar V senão faça P <- PRIMEIRO(simbolos); restante <- RESTO(simbolos) retornar VERIFICAR-TODOS-TV(KB,α,restante,ESTENDER(P,V,modelo)) e VERIFICAR-TODOS-TV(KB,α,restante,ESTENDER(P,F,modelo)) ! Para n símbolos, complexidade de tempo é O(2n), complexidade de espaço O(n)
  32. 32. 32 Equivalência Lógica • Duas sentenças são logicamente equivalentes sse elas são verdade nos mesmos modelos α ≡ ß sse α╞ β e β╞ α
  33. 33. 33 Validade e satisfatibilidade Uma senteça é válida se ela é verdade em todos os modelos, ex., Verdade, A ∨¬A, A ⇒ A, (A ∧ (A ⇒ B)) ⇒ B Validade é ligada a inferência via Teorema da dedução: KB ╞ α sse (KB ⇒ α) é válida Uma sentença é satisfatível se ela é verdade em algum modelo ex, A ∨ B, C Uma sentença é não satisfatível se ela não é verdade em nenhum modelo e.g., A∧¬A Satisfatibilidade é conectada a inferência pelo seguinte: KB ╞ α sse (KB ∧¬α) é não satisfatível
  34. 34. 34 Métodos de prova ! Grosso modo, métodos de prova são divididos em dois tipos: ! Aplicação de regras de inferência ! Legitimar a geração de novas sentenças a partir das velhas ! Prova = uma sequência de aplicações de regras de inferência. Pode usar regras de inferência como operadores em um algoritmo padrão de busca ! Normalmente requer a transformação de sentenças em uma forma normal ! Checagem de modelo ! Enumeração de tabelas de Verdade (exponencial em n) ! Backtraking aperfeiçoado ! Busca heurística no espaço de modelos (Preserva a verdade porém é incompleto)
  35. 35. 35 Resolução Forma Normal Conjuntiva (FNC) Conjunção de Disjunções de cláusulas literais Ex (A ∨ ¬B) ∧ (B ∨ ¬C ∨ ¬D) ! Regra de Inferência da Resolução(para FNC): li ∨… ∨ lk, m1 ∨ … ∨ mn li ∨ … ∨ li-1 ∨ li+1 ∨ … ∨ lk ∨ m1 ∨ … ∨ mj-1 ∨ mj+1 ∨... ∨ mn onde li e mj são literais complementares. Ex., P1,1 ∨ P3,1, ¬P1,1 ∨ P2,2 P3,1 ∨ P2,2 ! A resolução preserva a verdade (consistente) e é completa para lógica proposicional
  36. 36. 36 Conversão para FNC (Forma normal conjuntiva) B1,1 ⇔ (P1,2 ∨ P2,1) 1.Eliminar ⇔, substituindo α ⇔ β por (α ⇒ β)∧(β ⇒ α). (B1,1 ⇒ (P1,2 ∨ P2,1)) ∧ ((P1,2 ∨ P2,1) ⇒ B1,1) 2. Eliminar ⇒, Substituindo α ⇒ β por ¬α∨ β. (¬B1,1 ∨ P1,2 ∨ P2,1) ∧ (¬(P1,2 ∨ P2,1) ∨ B1,1) 3. Mover ¬ para dentro usando a lei De Morgan: (¬B1,1 ∨ P1,2 ∨ P2,1) ∧ ((¬P1,2 ∧ ¬P2,1) ∨ B1,1) 4. Aplicando a regra da distributividade de ∧ sobre ∨: (¬B1,1 ∨ P1,2 ∨ P2,1) ∧ (¬P1,2 ∨ B1,1) ∧ (¬P2,1 ∨ B1,1)
  37. 37. 37 Algoritmo de Resolução ! Prova por contradição, i.e., mostra-se que KB∧¬α é não-satisfatível Função Resolução-LP(KB,α) retorna V ou F entradas: KB, a base de conhecimento (setença LP) α, a consulta, uma consulta em LP cláusulas <- conjunto de cláusulas FNC (KB ^ ~α) nova <- {} repita para cada ci,cj em cláusulas faça resolventes <- RESOLVER-LP(ci,cj) se resolventes contém cláusula vazia então retornar V nova <- nova U resolventes se nova ⊆ cláusulas então retornar F clausulas <- cláusulas U nova
  38. 38. 38 Exemplo KB = (B1,1 ⇔ (P1,2∨ P2,1)) ∧¬ B1,1 α = ¬P1,2
  39. 39. 39 Encadeamento pra frente e pra trás (Forward and backward chaining) ! Forma de Horn (restrita) KB = conjunção de cláusulas de Horn ! Cláusula de Horn = ! Símbolo de proposição; ou ! (conjunção de simbolos ⇒ simbolo) ! De outra forma seria uma disjunção onde um dos disjuntos é positivo(cabeça) ! Ex., C ∧ (B ⇒ A) ∧ (C ∧ D ⇒ B) ! Modus Ponens (para Forma de Horn): completo para Horn KBs α1, … ,αn, α1 ∧ … ∧ αn ⇒ β β ! Pode ser utilizada com encadeamento pra frente ou prá trás. ! Algoritmos naturais e rodam em tempo linear
  40. 40. 40 Encadeamento pra frente ! Idéia básica: executar todas as regras cujas premissas são satisfeitas pela KB, ! Adicionar as conclusões à KB, até que a questão seja encontrada
  41. 41. função PL-FC-CONSEQUENCIA-LOG(KB,q) retornar V ou F variáveis locais: cont, tabela, indexada por cláusula, inicialmente o número de premissas inferido, tabela, indexada por simbolo, todos inicialmente falsos agenda, lista de simbolos, inicialmente todos verdade 41 Algoritmo de encadeamento pra frente Enquanto agenda é não vazia faça p $ POP(agenda) a menos que inferido[p] faça inferido[p] $ V para cada cláusula c em cuja premisa p aparece faça decremente cont[c] se cont[c] == 0 então faça se cabeça[c] == q então retornar V push(cabeça[c],agenda) retornar F ! Encadeamento pra frente é consistente e completo para bases de conhecimento de Horn
  42. 42. 42 Exemplo
  43. 43. 43 Exemplo
  44. 44. 44 Exemplo
  45. 45. 45 Exemplo
  46. 46. 46 Exemplo
  47. 47. 47 Exemplo
  48. 48. 48 Exemplo
  49. 49. 49 Exemplo
  50. 50. 50 Encadeamento pra frente Completo e consistente
  51. 51. 51 Encadeamento pra Trás(ET) (Backward chaining) Idéia: como a análise a partir de uma questão (q) colocada sobre a KB a fim de prová-la. ! Checa se q ja é conhecida, ou ! Prova por ET todas as premissas de qualquer regra concluindo q Para Evitar Loops: Checar se a nova sub-meta já se encontra na pilha de metas Evitar Trabalho Repetido: checa se cada nova sub-meta 1. Já foi provada verdadeira, ou 2. Já foi provada falsa (sem sucesso)
  52. 52. 52 Exemplo
  53. 53. 53 Exemplo
  54. 54. 54 Exemplo
  55. 55. 55 Exemplo
  56. 56. 56 Exemplo
  57. 57. 57 Exemplo
  58. 58. 58 Exemplo
  59. 59. 59 Exemplo
  60. 60. 60 Exemplo
  61. 61. 61 Exemplo
  62. 62. 62 Comparação Inicial ! EF é orientado a dados, automático e “cego”. ! e.g., reconhecimento de objetos, decisões de rotina ! Pode acabar fazendo muito processamento irrelevante para os objetivos. ! ET é orientado a meta, mais apropriado para solução de problemas. ! e.g., Onde estão as chaves? Como se tornar um PhD? ! Complexidade da ET pode ser bem menor que linear em relação ao tamanho da base de conhecimento
  63. 63. 63 Inferência proposicional efetiva - Duas famílias de algoritmos para inferência proposicional ! Algoritmos completo com retrocesso ! Algoritmo DPLL (Davis, Putnam, Logemann, Loveland) ! Algoritmo de busca local incompleta ! WalkSAT algorithm OBS: Usam checagem de modelo
  64. 64. O algoritmo DPLL Determina se uma sentença em lógica proposicional (FNC) é satisfatível. Melhorias em relação à enumeração de tabelas de verdade. 64 1. Termino Prematuro Uma cláusula é V se algum literal é V. Uma senteça é F se alguma cláusula é F. 2. Heurística do Símbolo Puro Símbolo Puro: Aparece sempre com o mesmo sinal em todas as cláusulas. ex. Nas seguintes cláusulas (A ∨ ¬B), (¬B ∨ ¬C), (C ∨ A), A e B são puros, C é impuro. Fazer um símbolo literal puro V. 3. Cláusula Heurística Unitária 1. Apenas um literal na cláusula 2. Este literal deve ser verdadeiro
  65. 65. 65 O Algoritmo DPLL função DPLL-Satisfatível?(s) retorna V ou F entrada: s, uma sentença em LP clausulas $ o conjunto de cláusulas na FNC de s símbolos $ lista dos símbolos proposicionais em s retornar DPLL(clausulas,símbolos,[]) ------------------------------------------------------------------------ função DPLL(clausulas, simbolos, modelo) retorna V ou F se toda cláusula em cláusulas é V no modelo então retornar V se alguma cláusula em cláusulas é F no modelo então retornar F P,valor $SIMBOLO-PURO(símbolos,cláusulas,modelo) se P é não nulo então retorne DPLL(cláusulas,simbolos-P,[P=valor|modelo]) P,valor $ CLÁUSULA-UNITÁRIA(cláusula,modelo) se P é não nulo então retorne DPLL(cláusulas, símbolos-P,[P=valor|modelo]) P $ PRIMEIRO(símbolos); resto $ RESTO(símbolos) retornar DPLL(clásulas, resto, [P= V|modelo] ou DPLL(cláusulas, resto, [P= falso|modelo]
  66. 66. O Algoritmo WalkSAT ! Algoritmo de busca local incompleto. Subida da encosta no espaço de atribuições completas ! Em cada iteração o o algoritmo escolhe uma cláusula não satisfeita e um símbolo dessa cláusula para trocar. A forma de escolha do símbolo a trocar de valor é ela própria aleatória, podendo ser: ! ⇒ Utilizando a heurística “min-conflitos” minimizando o número de cláusulas insatisfeitas no passo seguinte ! ⇒Escolha aleatória do símbolo a trocar na cláusula 66
  67. 67. 67 O algortimo WalkSAT função WALKSAT( cláusulas,p,inversoes_max) retorna modelo ou falha .... entradas: cláusulas, um conjunto de cláusulas p, probabilidade de optar por realizar um movimento aleatório inversoes_max, número máximo de inversões permitidos antes de desistir modelo $ atribuição aleatória de V/F aos símbolos nas cláusulas para i= 1 to inversoes_max do se modelo satisfaz cláusulas então retornar modelo cláusula $ a uma cláusula falsa no modelo selecionada aleatoriamente com probabilidade p inverter o valor de um símbolo selecionado aleatoriamente da cláusula senão inverter qualquer símbolo que maximize o número de cláusulas satisfeitas retornar falha
  68. 68. 68 Propriedades do WalkSAT ♦ Incompleto ♦ Se uma proposição é insatisfazível então o algoritmo não termina: limita-se max flips... ♦ Algoritmos locais como o WalkSAT são mais eficazes quando se espera que uma solução exista ♦ Logo, pesquisa local não serve em geral para resolver o problema da conseqüência lógica ♦ Muito eficiente na prática...
  69. 69. 69 Problema de difícil satisfatibilidade ! Considere as seguintes sentenças aleatórias na 3a FNC: (¬D ∨ ¬B ∨ C) ∧ (B ∨ ¬A ∨ ¬C) ∧ (¬C ∨ ¬B ∨ E) ∧ (E ∨ ¬D ∨ B) ∧ (B ∨ E ∨ ¬C) m = número de cláusulas n = número de símbolos ! Problemas difíceis a partir de m/n = 4.3 (ponto crítico)
  70. 70. 70 Problemas de difícil satisfazibilidade
  71. 71. 71 Problemas de difícil satisfazibilidade ! Tempo mediano para 100 sentenças satisfatíveis aleatórias na 3a FNC, n = 50
  72. 72. 72 Agentes de inferência no mundo Wumpus Usando a lógica proposicional ¬P1,1 ¬W1,1 Bx,y ⇔ (Px,y+1 ∨ Px,y-1 ∨ Px+1,y ∨ Px-1,y) Sx,y ⇔ (Wx,y+1 ∨ Wx,y-1 ∨ Wx+1,y ∨ Wx-1,y) W1,1 ∨ W1,2 ∨ … ∨ W4,4 ¬W1,1 ∨ ¬W1,2 // o Wumpus não pode estar em dois quadrados ao mesmo tempo ¬W1,1 ∨ ¬W1,3 … ⇒ 64 símbolos distintos % 155 sentenças
  73. 73. 73 Inferência usando LP no mundo de Wumpus função LP-Wumpus-Agent(percepções) retorna ação entradas: percepções, uma lista, [fedor, brisa, resplendor] variáveis estáticas : BC, base de conhecimento contendo a física do mundo de Wumpus x,y,orientação, posição do agente (inic [1,1] e orient (direita)) visitado, uma matriz indicando que quadrados foram visitados, inicialmente falso ação, a ação mais recente do agente, inicialmente nula plano, uma seqüência de ações, inicialmente vazia atualizar x, y orientação, visitado com base em ação se fedor então TELL(BC, Sx,y) senão TELL(BC, ¬Sx,y) se brisa então TELL(BC, Bx,y) senão TELL(BC, ¬Bx,y) se resplendor então ação $ agarrar senão se plano é não-vazio então ação $ DESEMPILHA(plano) senão se para algum quadrado de borda[i,j], ASK(BC,(¬PIJ ٧۷ ¬WIJ)) é V ou para algum quadrado de borda[i,j], ASK(BC,(Pij٧۷Wij)) é falsa então faça plano $ BUSCA-GRAFO-A*(PROB-ROTEAMENTO[x,y], orientação, [i,j],visitados)) ação $ DESEMPILHA(plano) senão ação $ um movimento escolhido aleatoriamente retornar ação
  74. 74. 74 Limitações da Lógica Proposicional ! KB deve conter sentenças sobre a situação física de todas as posições. ! Para cada tempo t e cada posição [x,y], Lx,t y ∧ OlhandoDireitat ∧ PraFrentet ⇒ Lx+1,y ! Proliferação de cláusulas t t + 1
  75. 75. 75 Sumário ! Agentes Lógicos realizam inferência em uma base de conhecimento para derivar novas sentenças e tomar decisões. ! Conceitos básicos de lógica: ! sintaxe: estrutura formal das sentenças declarativas ! semântica: valor de verdade relativamente aos modelos ! Conclusão: verdade necessária de uma sentença dado outra ! inferência: derivação de sentenças a partir de outras sentenças ! Consistência: derivações produzem apenas frases que são consequência lógica ! completude/completeza: derivações conseguem produzir todas as frases que são consequências lógicas da KB ! O mundo do Wumpus requer a capacidade de lidar com informação parcial e negativa, raciocínio por casos, etc. ! Encadeamento para a frente e para trás têm complexidade temporal linear na dimensão da KB, são completos para cláusulas de Horn. ! Resolução é completa para a lógica proposicional
  76. 76. Lógica de Primeira Ordem
  77. 77. 77 Roteiro ! Porque LPO? ! Sintaxe e semântica ! Usando LPO ! O mundo de Wumpus em LPO ! Engenharia do Conhecimento em LPO
  78. 78. 78 Pros e cons da lógica proposicional ☺ Lógica Propositional é declarativa ☺ Lógica Proposicional permite informação parcial/disjuntiva/negada ! (contrariamente as bases de dados e estruturas de dados) ☺ Lógica Proposicional é composicional: ! Significado de B1,1 ∧ P1,2 é derivado do significado de B1,1 e deP1,2 ☺ Significado em LP é independente de contexto ! (Na linguagem natural o significado depende do contexto) ' A lógica proposicional tem poder de expressão muito limitado ! (contrariamente à linguagem natural) ! Ex.., Não se pode dizer “Poços ocasionam brisas em quadrados adjacentes” sem ter que escrever uma setença pra cada quadrado.
  79. 79. 79 Lógica de primeira ordem ! Enquanto a lógica proposicional assume que o mundo contém apenas fatos, ! a lógica de primeira ordem (como a linguagem natural) assume que o mundo contém: ! Objetos: pessoa, casa, números, cores, jogos, guerras, … ! Relações: vermelho, redondo, primo, irmão de , maior do que, parte de , vem entre …. ! Funções: Pai de , melhor amigo , um mais que, mais, …
  80. 80. 80 Lógicas em geral
  81. 81. 81 Sintaxe da LPO ! Constantes KingJohn, 2, NUS,... ! Predicados Brother, >,... ! Funções Sqrt, LeftLegOf,... ! Variáveis x, y, a, b,... ! Conectivos ¬, ⇒, ∧, ∨, ⇔ ! Igualdade = ! Quantificadores ∀, ∃
  82. 82. 82 Sentenças atômicas Sentença atômica = predicado (termo1,...,termon) ou termo1 = termo2 Termo = função (termo1,...,termon) ou constante ou variável ! Ex., Brother(KingJohn,RichardTheLionheart) ! >(Length(LeftLegOf(Richard)), Length(LeftLegOf(KingJohn))) ( A perna esquerda de Richard é maior do que a de King John)
  83. 83. 83 Sentenças complexas ! Sentenças complexas são feitas a partir de sentenças atômicas usando conectivos ¬S, S1 ∧ S2, S1 ∨ S2, S1 ⇒ S2, S1 ⇔ S2, Ex. Irmão(KingJohn,Richard) ⇒ Irmão(Richard,KingJohn) >(1,2) ∨ ≤ (1,2) >(1,2) ∧ ¬ >(1,2)
  84. 84. Verdade em Lógica de 1a Ordem 84 ! Setenças são verdadeiras em relação a um modelo e uma interpretação. ! Modelos contêm objetos (elementos do domínio) e relações entre eles ! Uma interpretação especifica referentes para: Símbolos de constantes → objetos Símbolo de Predicados → relações Símbolos de funções → relações funcionais ! Uma sentença atômica predicate(termo1,...,termon) é verdade sse os objetos referenciados por termo1,...,termon estão na relação referenciada por predicate
  85. 85. 85 Modelos para a LPO: Exemplo Como representar esse modelo em sentenças???
  86. 86. 86 Modelos para a LPO: Exemplo Para alguns casos restritos, podemos tentar enumerar os modelos para um dado vocabulário de uma KB: Para cada número de elementos no domínio n de 1 até ∞ Para cada predicado k-ário Pk no vocabulário Para cada relação k-ária possível com n objetos Para cada símbolo de constante C no vocabulário Para cada escolha de referente para C em n objetos A obtenção das conclusões lógicas por enumeração não vai ser nada fácil!
  87. 87. 87 Quantificação Universal ! ∀<variáveis> <sentenças> Todo mundo no CEFET é inteligente ∀x Em(x,CEFET) ⇒ Inteligente(x) ! ∀x P é verdade em um modelo m sse P é verdade com x sendo cada possível objeto no modelo ! Grosso modo, equivale a uma conjunção de instanciações de P Em(Petrônio,CEFET) ⇒ Inteligente(Petrônio) ∧ Em(Marcília, CEFET) ⇒ Inteligente(Marcília) ∧ Em(Assunção, CEFET) ⇒ Inteligente(Assunção) ∧ ...
  88. 88. 88 Um erro comum a evitar ! Normalmente, ⇒ é o principal conectivo com ∀ ! Erro comum: usar ∧ como o principal conectivo com ∀: ∀x Em(x,CEFET) ∧ Inteligente(x) significa: “Todo mundo está no CEFET e todo mundo é inteligente”
  89. 89. 89 Quantificação Existencial ! ∃<variáveis> <sentenças> ! Alguém no CEFET é inteligente: ! ∃x Em(x,CEFET) ∧ Inteligente(x) ! ∃x P é verdade em um modelo m sse P é verdade sendo x algum objeto possível no modelo ! Grosso modo, equivale a uma disjunção de instanciações de P Em(Petrônio, CEFET) ∧ Inteligente(Petrônio) ∨ Em(Marcília, CEFET) ∧ Inteligente(Marcília) ∨ Em(Assunção, CEFET) ∧ Inteligente(Assunção) ∨ ...
  90. 90. 90 Outro erro comum a evitar ! Normalmente, ∧ é o principal conectivo com ∃ ! Erro comum: usar ⇒ como o principal conectivo com ∃: ∃x Em(x,CEFET) ⇒ Inteligente(x) é verdade se existe alguém que não está no CEFET.
  91. 91. 91 Propriedades dos Quantificadores ! ∀x ∀y é o mesmo que ∀y ∀x ! ∃x ∃y é o mesmo que ∃y ∃x ! ∃x ∀y não é o mesmo que ∀y ∃x ! ∃x ∀y Ama(x,y) ! “Existe uma pessoa que ama todo mundo” ! ∀y ∃x Ama(x,y) ! “Todo mundo é amado por pelo menos uma pessoa” ! Dualidade dos quantificadores: cada um pode ser expressado usando o outro ! ∀x Gosta(x,IceCream) ¬∃x ¬Gosta(x,IceCream) (Τοdos gostam de sorvete) (não existe ninguém que não goste de sorvete) ! ∃x Gosta(x,Brócolis) ¬∀x ¬Gosta(x,Brócolis) (Alguém gosta de brócolis) (Não é o caso que ninguém goste de brócolis)
  92. 92. 92 Igualdade ! termo1 = termo2 é verdade sob uma dada interpretação sse termo1 and termo2 referem-se ao mesmo objeto ! Ex., irmão a partir de Progenitor: ∀x,y Irmão(x,y) ⇔ [¬(x = y) ∧ ∃m Progenitor(m,x) ∧ Progenitor(m,y) ]
  93. 93. 93 Alguns exemplos ! Irmãos são amigos ∀ x,y Irmão(x,y) "Amigo(x,y). ! A Amizade é simétrica ! ∀ x,y Amigo(x,y) ↔ Amigo(y,x). ! A mãe de alguém é o seu progenitor feminino ! ∀ x,y Mãe(x,y) ↔ (Feminino(x) ^ Progenitor(x,y)). ! Um primo é um filho de um dos irmãos dos pais ! ∀ x,y Primo(x,y) ↔ ∃ p,ps Progenitor(p,x) ^ Irmão(ps,p)^ Progenitor(ps,y)
  94. 94. 94 Usando a LPO Domínio dos conjuntos: ! ∀s Conjunto(s) ⇔ (s = {} ) ∨ (∃x,s2 Conjunto(s2) ∧ s = {x|s2}) ! ¬∃x,s {x|s} = {} ! ∀x,s x ∈ s ⇔ s = {x|s} ! ∀x,s x ∈ s ⇔ [ ∃y,s2} (s = {y|s2} ∧ (x = y ∨ x ∈ s2))] ! ∀s1,s2 s1 ⊆ s2 ⇔ (∀x x ∈ s1 ⇒ x ∈ s2) ! ∀s1,s2 (s1 = s2) ⇔ (s1 ⊆ s2 ∧ s2 ⊆ s1) ! ∀x,s1,s2 x ∈ (s1 ∩ s2) ⇔ (x ∈ s1 ∧ x ∈ s2) ! ∀x,s1,s2 x ∈ (s1 ∪ s2) ⇔ (x ∈ s1 ∨ x ∈ s2)
  95. 95. 95 Interagindo com KBs em LPO ! Suponhamos um agente no mundo de Wumpus usando uma KB em LPO que percebe um cheiro e uma brisa mas não cintilação em t=5 Tell(KB,Percepção([Cheiro, Brisa,Nada],5)) Ask(KB,∃a MelhorAção(a,5)) ! I.e., a KB conclui a melhor ação particular para t=5? Resposta: Sim, {a/Atirar} ← substituição (binding list) ! Dada uma sentença S e uma substituição σ ! Given a sentence S and a substitution σ, ! Sσ denota o resultado da substituição de σ em S. Ex. S = MaisInteligente(x,y) σ = {x/Marcília,y/Petrônio} Sσ = MaisInteligente(Marcília,Petrônio) ! Ask(KB,S) retorna algum ou todas σ tais que KB╞ Sσ
  96. 96. 96 Base de Conhecimento para o Mundo Wumpus ! Percepção ! ∀t,s,b Percebe([s,b,Cintilação],t) ⇒ Cintilação(t) ! Reflexo ! ∀t Cintilação(t) ⇒ MelhorAção(Segurar,t) ! Reflexo com estado interno ! ∀t EmOuro(t) ^ ~Segurando(Ouro,t) " MelhorAção(Segurar,t)
  97. 97. 97 Deduzindo propriedades Ocultas ! ∀x,y,a,b Adjacente([x,y],[a,b]) ⇔ [a,b] ∈ {[x+1,y], [x-1,y],[x,y+1],[x,y-1]} Propriedades dos Quadrados: ! ∀s,t At(Agente,s,t) ∧ Brisa(t) ⇒ Brisa(s) Quadrados próximos a poços possuem brisa: ! Regra de Diagnóstico --- infere causa a partir de efeito ∀s Brisa(s) ⇒ ∃{r} Adjacente(r,s) ∧ Poço(r) ! Regra Causal --- infere efeito a partir da causa ∀r Poço(r) ⇒ [∀s Adjacente(r,s) ⇒ Brisa(s) ]
  98. 98. 98 Engenharia do conhecimento 1. Identifique a tarefa 2. Reuna o conhecimento relevante 3. Decida sobre o vocabulário dos predicados funções e constantes 4. Codifique o conhecimento geral sobre o domínio 5. Codifique a descrição de uma instância específica do problema 6. Coloque algumas questões para a máquina de inferência e pegue as respostas 7. Debug a base de conhecimento
  99. 99. 99 Domínio dos circuitos eletrônicos Somador de 1 bit
  100. 100. 100 Domínio dos circuitos eletrônicos 1. Identifique a tarefa ! O circuito soma corretamente? (verificação do circuito) 2. Reunir o conhecimento relevante ! Composto de fios e portas; Tipos de portas(AND, OR, XOR, NOT) ! Irrelevante: tamanho, desenho, cor e custo das portas 3. Definir o vocabulário ! Alternativas: Type(X1) = XOR Type(X1, XOR) XOR(X1)
  101. 101. 101 Domínio dos circuitos eletrônicos 1. Codificar o conhecimento geral do problema ! ∀t1,t2 Connectados(t1, t2) ⇒ Sinal(t1) = Sinal(t2) ! ∀t Sinal(t) = 1 ∨ Sinal(t) = 0 ! 1 ≠ 0 ! ∀t1,t2 Conectados(t1, t2) ⇒ Conectados(t2, t1) ! ∀g Tipo(g) = OR ⇒ Sinal(Saida(1,g)) = 1 ⇔ ∃n Sinal(Entrada(n,g)) = 1 ! ∀g Tipo(g) = AND ⇒ Sinal(Saida(1,g)) = 0 ⇔ ∃n Sinal(Entrada(n,g)) = 0 ! ∀g Tipo(g) = XOR ⇒ Sinal(Saida(1,g)) = 1 ⇔ Sinal(Entrada(1,g)) ≠ Sinal(Entrada(2,g)) ! ∀g Tipo(g) = NOT ⇒ Sinal(Saida(1,g)) ≠ Sinal(Entrada(1,g))
  102. 102. 102 Domínio dos circuitos eletrônicos 1. Codificar uma instância específica do problema Tipo(X1) = XOR Tipo(X2) = XOR Tipo(A1) = AND Tipo(A2) = AND Tipo(O1) = OR Conectados(Saída(1,X1),Entrada(1,X2)) Conectados(Entrada(1,C1), Entrada(1,X1)) Conectados(Saída(1,X1), Entrada(2,A2)) Conectados(Entrada(1,C1), Entrada(1,A1)) Conectados(Saída(1,A2), Entrada(1,O1)) Conectados(Entrada(2,C1), Entrada(2,X1)) Conectados(Saída(1,A1), Entrada(2,O1)) Conectados(Entrada(2,C1), Entrada(2,A1)) Conectados(Saída(1,X2),Saída(1,C1)) Conectados(Entrada(3,C1), Entrada(2,X2)) Conectados(Saída(1,O1),Saída(2,C1)) Conectados(Entrada(3,C1),Entrada(1,A2))
  103. 103. 103 Domínio dos circuitos eletrônicos 1. Coloque questões para o procedimento de inferência Quais são os possíveis conjuntos de valores para todos os terminais no circuito somador? ∃i1,i2,i3,o1,o2 Sinal(Entrada(1,C1)) = i1 ∧ Sinal(Entrada(2,C1)) = i2 ∧ Sinal(Entrada(3,C1)) = i3 ∧ Sinal(Saída(1,C1)) = o1 ∧ Sinal(Saída(2,C1)) = o2 1. Debug a base de conhecimento Poderíamos ter omitido assertivas como 1 ≠ 0
  104. 104. 104 Sumário ! Lógica de Primeira Ordem ! Objetos e relação são primitivos semânticos ! syntaxe: constantes, funções, predicados, igualdade, quantificadores ! Aumenta o poder de expressão: suficiente para definir o mundo wumpus
  105. 105. Inferência em LPO Chapter 9
  106. 106. 106 Roteiro ! Reduzindo inferência em LPO para inferência em LP ! Unificação ! Modus Ponens Generalizado ! Encadeamento Pra Frente ! Encadeamento pra Trás ! Resolução
  107. 107. 107 Instanciação Universal (UI) ! Toda instância de uma senteça universalmente quantificada é consequência lógica da mesma. ∀v α Subst({v/g}, α) Para toda variável v e termo básico g ! Ex., ∀x Rei(x) ∧ Guloso(x) ⇒ Mau(x) leva a: Rei(John) ∧ Guloso(John) ⇒ Mau(John) Rei(Richard) ∧ Guloso(Richard) ⇒ Mau(Richard) Rei(Pai(John)) ∧ Guloso(Pai(John)) ⇒ Mau(Pai(John)) .
  108. 108. 108 Instanciação Existencial ! Para toda senteça α, variável v e símbolo de constante k que não apareça em outro lugar na based de conhecimento: ∃v α Subst({v/k}, α) ! Ex., ∃x Coroa(x) ∧ NaCabeça(x,John) leva a: Coroa(C1) ∧ NaCabeça(C1,John) C1 is uma nova constante chamada constante de Skolem
  109. 109. 109 Redução à inferência Proposicional Suponha que a KB contenha o seguinte: ∀x Rei(x) ∧ Guloso(x) ⇒ Mau(x) Rei(John) Guloso(John) Irmao(Richard,John) ! Instanciando a setença universal em todas as formas possíveis teremos: Rei(John) ∧ Guloso(John) ⇒ Mau(John) Rei(Richard) ∧ Guloso(Richard) ⇒ Mau(Richard) Rei(John) Guloso(John) Irmao(Richard,John) ! A nova base de conhecimento “proposicionalizada” será: Rei(John), Guloso(John), Mau(John), etc.
  110. 110. 110 Redução cont. ! Toda KB em LPO pode ser “proposicionalizada” de forma a preservar a conseqüência lógica. ! (Uma sentença básica (ground) é conseqüência lógica da nova KB sse ela é conseqüência da KB original) ! Idéia: “proposicionalizar” a KB e aplicar as perguntas, aplicar a resolução e retornar os resultados ! Problema: com funções existem infinitos termos básicos. ! Ex., Father(Father(Father(John)))
  111. 111. 111 Redução cont. Teorema de Herbrand (1930). Se uma setença α é conseqüência de uma KB em LPO, ela é conseqüência de um subconjunto finito da KB proposicionalizada. Idéia: For n = 0 to ∞ do Criar uma KB proposicional instanciando com profundidade de “n” termos verificar se α is conseqüência desta KB Problema: Funciona se α is conseqüência, fica em loop se α não é conseqüência Teorema de Turing (1936), Church (1936) Conseqüência lógica para a LPO é semidecidível (Existem algoritmos que dizem sim para toda sentença dedutível, mas nenhum algoritmo existe que diga não para toda sentença não dedutível)
  112. 112. 112 Problemas com proposicionalização ! Geração de sentenças irrelevantes ! Ex. A partir de : ∀x Rei(x) ∧ Guloso(x) ⇒ Mau(x) Rei(John) ∀y Guloso(y) Irmao(Richard,John) ! É óbvio que Mau(john), mas proposicionalização produz fatos como Guloso(Ricardo) que são irrelevantes ! Com p predicados de aridade k e n constants, teremos p·nk instâncias.
  113. 113. 113 Unificação ! Podemos obter uma inferência imediata se podemos encontrar uma substituição θ tal que Rei(x) e Guloso(x) casa com Rei(John) e Guloso(y) θ = {x/John,y/John} funciona ! Unifica(α,β) = θ if αθ = βθ p q θ Conhece(John,x) Conhece(John,Jane) {x/jane} Conhece(John,x) Conhece(y,Bill) {x/Bill, y/John} Conhece(John,x) Conhece(y,Mae(y)) {y/John,x/Mae(John)} Conhece(John,x) Conhece(x,OJ) = falha ! Padronização separada elimina sobreposição de variáveis, e.g., Conhece(z17,Bill)
  114. 114. Unificação ! Para unificar Conhece(John,x) e Conhece(y,z), 114 θ = {y/John, x/z } or θ = {y/John, x/John, z/John} ! O primeiro unificador é mais geral que o segundo. ! Existe um único Unificador Mais Geral (UMG) que é exclusivo para renomear variáveis. UMG = { y/John, x/z }
  115. 115. 115 O algoritmo de unificação
  116. 116. 116 O algoritmo de unificação
  117. 117. 117 Modus Ponens Generalizado(GMP) p1', p2', … , pn', ( p1 ∧ p2 ∧ … ∧ pn ⇒q) qθ p1' é Rei(John) p1 é Rei(x) p2' é Guloso(y) p2 é Guloso(x) θ é {x/John,y/John} q é Mau(x) q θ é Mau(John) where pi'θ = pi θ for all i ! GMP é utilizado com KB de cláusulas definidas (exatamente um literal positivo) ! Todas as variáveis são universalmente quantificadas
  118. 118. 118 Exemplo de base de conhecimento ! A lei americana estabelece que é crime um americano vender armas para nações hostis. O país Nono, um inimigo dos EUA, tem alguns mísseis, e todos estes mísseis foram vendidos pelo coronel West, que é americano. ! Prove que o coronel West é um criminoso.
  119. 119. 119 Exemplo de base de conhecimento. Cont. ... é um crime para um americano vender armar a nações hostis: Americano(x) ∧ Arma(y) ∧ Vendeu(x,y,z) ∧ Hostil(z) ⇒ Criminoso(x) Nono … tem alguns mísseis, i.e., ∃x Possui(Nono,x) ∧ Missil(x): Possui(Nono,M1) ^ Missil(M1) … todos os mísseis foram vendidos pelo coronel West Missil(x) ∧ Possui(Nono,x) ⇒ Vendeu(West,x,Nono) Misseis são armas: Missil(x) ⇒ Arma(x) Um inimigo dos EUA é "hostil“: Inimigo(x,EUA) ⇒ Hostil(x) West, que é um americano … Americano(West) O país Nono, um inimigo da America … Inimigo(Nono,EUA)
  120. 120. 120 Algoritmo de encadeamento pra frente
  121. 121. 121 Prova de encadeamento pra frente
  122. 122. 122 Prova de encadeamento pra frente
  123. 123. 123 Prova de encadeamento pra frente
  124. 124. 124 Propriedades do EF ! Consistente e completo para LPO com cláusulas definidas ! Datalog = Cláusulas definidas em LPO + nenhuma função ! EF conclui um Datalog em um número finito de iterações ! Em geral não termina se α não é conseqüência lógica ! Isto é inevitável : conseqüência lógica com cláusulas definidas é semidecidível
  125. 125. 125 Eficiência do EF EF Incremental: não há necessidade de “casar” uma regra na iteração k se uma premissa não foi adicionada na iteração k-1 ⇒ Casa-se cada regra cuja premissa contém um literal positivo recentemente adicionado. Casamento próprio pode ser expressivo: Indexação de bases de dados permite O(1) recuperação de fatos conhecidos ! e.x., a questão Missil(x) retorna Missil(M1) EF é amplamente utilizada em bancos de dados dedutivos.
  126. 126. Dif(wa,nt) ∧ Dif(wa,sa) ∧ Dif(nt,q) ∧ Dif(nt,sa) ∧ Dif(q,nsw) ∧ Dif(q,sa) ∧ Dif(nsw,v) ∧ Dif(nsw,sa) ∧ Dif(v,sa) ⇒ Coloravel() Dif(Red,Blue) Dif (Red,Green) Dif(Green,Red) Dif(Green,Blue) Dif(Blue,Red) Dif(Blue,Green) 126 Exemplo de casamento difícil ! Coloravel() é inferido sse o PSR tem uma solução ! O casamento é NP-Difícil
  127. 127. 127 Algoritmo com encadeamento pra trás SUBST(COMPOSE(θ1, θ2), p) = SUBST(θ2, SUBST(θ1, p))
  128. 128. 128 Exemplo de ET
  129. 129. 129 Exemplo de ET
  130. 130. 130 Exemplo de ET
  131. 131. 131 Exemplo de ET
  132. 132. 132 Exemplo de ET
  133. 133. 133 Exemplo de ET
  134. 134. 134 Exemplo de ET
  135. 135. 135 Exemplo de ET
  136. 136. 136 Propriedade do ET ! Busca recursiva em profundidade: espaço linear no tamanho da prova ! Incompleta (loops infinitos) ! ⇒ corrige-se checando a meta atual em relação com todas as metas na pilha ! Ineficiente devido a sub metas repetidas ! ⇒ Corrige-se colocando os resultados prévios em uma cache (espaço extra) ! Muito usada em programação lógica
  137. 137. 137 Programação Lógica: Prolog ! Algoritmo = Lógica + Controle ! Base: backward chaining (ET) com cláusulas de Horn Muito usado na Europe e no japão (base do project 5ª geração) ! Programa = conjunto de cláusulas = head (cabeça) :- literal1, … literaln. Criminoso(X) :- americano(X), arma(Y), vendeu(X,Y,Z), hostil(Z). ! Busca em profundidade ET esquerda pra direita ! Predicados pre-prontos para aritmética:, ex, X is Y*Z+3 ! Predicados pré-prontos possuem efeitos colaterais (ex. Entradas e saidas) ! Predicados do tipo assert/retract ! Pressuposto de um mundo fechado (negação como falha) ! ex., dada alive(X) :- not dead(X). ! alive(joe) obtém sucesso se dead(joe) falha
  138. 138. 138 Prolog ! Acrescentando uma lista à outra append([],Y,Y). append([X|L],Y,[X|Z]) :- append(L,Y,Z). ! Pergunta (meta): append(A,B,[1,2]) ? ! resposta: A=[] B=[1,2] A=[1] B=[2] A=[1,2] B=[]
  139. 139. 139 Resolução: breve sumário ! Versão em primeira ordem l1 ∨ ··· ∨ lk, m1 ∨ ··· ∨ mn (l1 ∨ ··· ∨ li-1 ∨ li+1 ∨ ··· ∨ lk ∨ m1 ∨ ··· ∨ mj-1 ∨ mj+1 ∨ ··· ∨ mn)θ onde Unificar (li, ¬mj) = θ. ! Considera-se que as duas cláusulas foram padronizadas em separado de forma que elas não compartilham variáveis ! Por exemplo, ¬Rico(x) ∨ Infeliz(x) Rico(Ken) Unhappy(Ken) with θ = {x/Ken} ! Aplicar passos de resolução a FNC(KB ∧ ¬α); completo para LPO
  140. 140. Conversão para FNC ! Todo mundo que ama todos os animais é amado por alguém: 140 ∀x [∀y Animal(y) ⇒ Loves(x,y)] ⇒ [∃y Loves(y,x)] ! 1.Elimina-se bicondicionais e implicações ∀x [¬∀y ¬Animal(y) ∨ Loves(x,y)] ∨ [∃y Loves(y,x)] ! 2. Mover ¬ pra dentro: ¬∀x p ≡ ∃x ¬p, ¬ ∃x p ≡ ∀x ¬p ∀x [∃y ¬(¬Animal(y) ∨ Loves(x,y))] ∨ [∃y Loves(y,x)] ∀x [∃y ¬¬Animal(y) ∧ ¬Loves(x,y)] ∨ [∃y Loves(y,x)] ∀x [∃y Animal(y) ∧ ¬Loves(x,y)] ∨ [∃y Loves(y,x)]
  141. 141. 141 Conversão para FNC cont. 1. Padronização de variáveis : cada quantificador usa uma diferente ∀x [∃y Animal(y) ∧ ¬Loves(x,y)] ∨ [∃z Loves(z,x)] 2. Skolemizar: uma forma mais geral de instanciação existencial. Cada variável existential é substituída por uma função de Skolem of das variáveis quantificadas universalmente. ∀x [Animal(F(x)) ∧ ¬Loves(x,F(x))] ∨ Loves(G(x),x) 3. Desprezar quantificadores Universais: [Animal(F(x)) ∧ ¬Loves(x,F(x))] ∨ Loves(G(x),x) 4. Distribuir ∨ sobre ∧ : [Animal(F(x)) ∨ Loves(G(x),x)] ∧ [¬Loves(x,F(x)) ∨ Loves(G(x),x)]
  142. 142. 142 Prova por resolução de cláusulas definidas

×