Transcript
Page 1: Curso Inteligência Artificial - Parte 2 -

1

Inteligência Artificial (parte II) Ronaldo F. Ramos, Dr [email protected]

Adaptado de : aima.cs.berkeley.edu

Page 2: Curso Inteligência Artificial - Parte 2 -

Agentes Lógicos

Page 3: Curso Inteligência Artificial - Parte 2 -

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

Page 4: Curso Inteligência Artificial - Parte 2 -

4

Bases de conhecimento.

!  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.

Máquina de Inferência

Base de conhecimento (KB)

Algoritmo independente de domínio Conteúdo dependente do domínio

Page 5: Curso Inteligência Artificial - Parte 2 -

5

Um agente baseado em conhecimento

!  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.

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

Page 6: Curso Inteligência Artificial - Parte 2 -

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

Page 7: Curso Inteligência Artificial - Parte 2 -

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

Page 8: Curso Inteligência Artificial - Parte 2 -

8

Explorando o mundo de Wumpus

Page 9: Curso Inteligência Artificial - Parte 2 -

9

Explorando o mundo de Wumpus

Page 10: Curso Inteligência Artificial - Parte 2 -

10

Explorando o mundo de Wumpus

Page 11: Curso Inteligência Artificial - Parte 2 -

11

Explorando o mundo de Wumpus

Page 12: Curso Inteligência Artificial - Parte 2 -

12

Explorando o mundo de Wumpus

Page 13: Curso Inteligência Artificial - Parte 2 -

13

Explorando o mundo de Wumpus

Page 14: Curso Inteligência Artificial - Parte 2 -

14

Explorando o mundo de Wumpus

Page 15: Curso Inteligência Artificial - Parte 2 -

15

Explorando o mundo de Wumpus

Page 16: Curso Inteligência Artificial - Parte 2 -

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

Page 17: Curso Inteligência Artificial - Parte 2 -

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.

Page 18: Curso Inteligência Artificial - Parte 2 -

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 !  M(α) é o conjunto de todos os modelos de α !  Consequentemente KB ╞ α sse M(KB) ⊆ M(α)

!  E.g. KB = Gigantes ganharam e Vermelhos ganharam

α = Gigantes ganharam

Page 19: Curso Inteligência Artificial - Parte 2 -

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

Page 20: Curso Inteligência Artificial - Parte 2 -

20

Modelos Wumpus

Page 21: Curso Inteligência Artificial - Parte 2 -

21

Modelos Wumpus

! KB = Regras do mundo wumpus + observações

Page 22: Curso Inteligência Artificial - Parte 2 -

22

Modelos Wumpus

!  KB = Regras do Mundo Wumpus + observações !  α1 = "[1,2] é seguro", KB ╞ α1, provado por checagem do

modelo

Page 23: Curso Inteligência Artificial - Parte 2 -

23

Modelos Wumpus

! KB = Regras do Mundo Wumpus + observações

Page 24: Curso Inteligência Artificial - Parte 2 -

24

Modelos Wumpus

! KB = Regras do Mundo Wumpus + observações

! α2 = "[2,2] é seguro", KB ╞ α2

Page 25: Curso Inteligência Artificial - Parte 2 -

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.

Page 26: Curso Inteligência Artificial - Parte 2 -

26

Lógica proposicional : Sintaxe

!  A lógica proposicional é a “lógica” mais simples – Ilustra idéias básicas

!  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)

Page 27: Curso Inteligência Artificial - Parte 2 -

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

Page 28: Curso Inteligência Artificial - Parte 2 -

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

Page 29: Curso Inteligência Artificial - Parte 2 -

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

Page 30: Curso Inteligência Artificial - Parte 2 -

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

Page 31: Curso Inteligência Artificial - Parte 2 -

31

Inferência por enumeração !  Enumeração em profundidade preserva verdade e é completa !  Para n símbolos, complexidade de tempo é O(2n),

complexidade de espaço O(n)

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))

Page 32: Curso Inteligência Artificial - Parte 2 -

32

Equivalência Lógica •  Duas sentenças são logicamente equivalentes sse elas são

verdade nos mesmos modelos α ≡ ß sse α╞ β e β╞ α

Page 33: Curso Inteligência Artificial - Parte 2 -

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

Page 34: Curso Inteligência Artificial - Parte 2 -

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)

Page 35: Curso Inteligência Artificial - Parte 2 -

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

Page 36: Curso Inteligência Artificial - Parte 2 -

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)

Page 37: Curso Inteligência Artificial - Parte 2 -

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

Page 38: Curso Inteligência Artificial - Parte 2 -

38

Exemplo

KB = (B1,1 ⇔ (P1,2∨ P2,1)) ∧¬ B1,1 α = ¬P1,2

Page 39: Curso Inteligência Artificial - Parte 2 -

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

Page 40: Curso Inteligência Artificial - Parte 2 -

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

Page 41: Curso Inteligência Artificial - Parte 2 -

41

Algoritmo de encadeamento pra frente

!  Encadeamento pra frente é consistente e completo para bases de conhecimento de Horn

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

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

Page 42: Curso Inteligência Artificial - Parte 2 -

42

Exemplo

Page 43: Curso Inteligência Artificial - Parte 2 -

43

Exemplo

Page 44: Curso Inteligência Artificial - Parte 2 -

44

Exemplo

Page 45: Curso Inteligência Artificial - Parte 2 -

45

Exemplo

Page 46: Curso Inteligência Artificial - Parte 2 -

46

Exemplo

Page 47: Curso Inteligência Artificial - Parte 2 -

47

Exemplo

Page 48: Curso Inteligência Artificial - Parte 2 -

48

Exemplo

Page 49: Curso Inteligência Artificial - Parte 2 -

49

Exemplo

Page 50: Curso Inteligência Artificial - Parte 2 -

50

Encadeamento pra frente

Completo e consistente

Page 51: Curso Inteligência Artificial - Parte 2 -

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)

Page 52: Curso Inteligência Artificial - Parte 2 -

52

Exemplo

Page 53: Curso Inteligência Artificial - Parte 2 -

53

Exemplo

Page 54: Curso Inteligência Artificial - Parte 2 -

54

Exemplo

Page 55: Curso Inteligência Artificial - Parte 2 -

55

Exemplo

Page 56: Curso Inteligência Artificial - Parte 2 -

56

Exemplo

Page 57: Curso Inteligência Artificial - Parte 2 -

57

Exemplo

Page 58: Curso Inteligência Artificial - Parte 2 -

58

Exemplo

Page 59: Curso Inteligência Artificial - Parte 2 -

59

Exemplo

Page 60: Curso Inteligência Artificial - Parte 2 -

60

Exemplo

Page 61: Curso Inteligência Artificial - Parte 2 -

61

Exemplo

Page 62: Curso Inteligência Artificial - Parte 2 -

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

Page 63: Curso Inteligência Artificial - Parte 2 -

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

Page 64: Curso Inteligência Artificial - Parte 2 -

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.

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

Page 65: Curso Inteligência Artificial - Parte 2 -

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]

Page 66: Curso Inteligência Artificial - Parte 2 -

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

Page 67: Curso Inteligência Artificial - Parte 2 -

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

Page 68: Curso Inteligência Artificial - Parte 2 -

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...

Page 69: Curso Inteligência Artificial - Parte 2 -

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)

Page 70: Curso Inteligência Artificial - Parte 2 -

70

Problemas de difícil satisfazibilidade

Page 71: Curso Inteligência Artificial - Parte 2 -

71

Problemas de difícil satisfazibilidade

! Tempo mediano para 100 sentenças satisfatíveis aleatórias na 3a FNC, n = 50

Page 72: Curso Inteligência Artificial - Parte 2 -

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

Page 73: Curso Inteligência Artificial - Parte 2 -

73

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

Inferência usando LP no mundo de Wumpus

Page 74: Curso Inteligência Artificial - Parte 2 -

74

! 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,y ∧ OlhandoDireitat ∧ PraFrentet ⇒ Lx+1,y ! Proliferação de cláusulas

Limitações da Lógica Proposicional

t

t

t + 1

Page 75: Curso Inteligência Artificial - Parte 2 -

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

Page 76: Curso Inteligência Artificial - Parte 2 -

Lógica de Primeira Ordem

Page 77: Curso Inteligência Artificial - Parte 2 -

77

Roteiro

! Porque LPO? ! Sintaxe e semântica ! Usando LPO ! O mundo de Wumpus em LPO ! Engenharia do Conhecimento em LPO

Page 78: Curso Inteligência Artificial - Parte 2 -

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.

Page 79: Curso Inteligência Artificial - Parte 2 -

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, …

Page 80: Curso Inteligência Artificial - Parte 2 -

80

Lógicas em geral

Page 81: Curso Inteligência Artificial - Parte 2 -

81

Sintaxe da LPO

! Constantes KingJohn, 2, NUS,... ! Predicados Brother, >,... ! Funções Sqrt, LeftLegOf,... ! Variáveis x, y, a, b,... ! Conectivos ¬, ⇒, ∧, ∨, ⇔

! Igualdade = ! Quantificadores ∀, ∃

Page 82: Curso Inteligência Artificial - Parte 2 -

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)

Page 83: Curso Inteligência Artificial - Parte 2 -

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)

Page 84: Curso Inteligência Artificial - Parte 2 -

84

Verdade em Lógica de 1a Ordem !  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

Page 85: Curso Inteligência Artificial - Parte 2 -

85

Modelos para a LPO: Exemplo

Como representar esse modelo em sentenças???

Page 86: Curso Inteligência Artificial - Parte 2 -

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!

Page 87: Curso Inteligência Artificial - Parte 2 -

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) ∧ ...

Page 88: Curso Inteligência Artificial - Parte 2 -

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”

Page 89: Curso Inteligência Artificial - Parte 2 -

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) ∨ ...

Page 90: Curso Inteligência Artificial - Parte 2 -

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.

Page 91: Curso Inteligência Artificial - Parte 2 -

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)

Page 92: Curso Inteligência Artificial - Parte 2 -

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) ]

Page 93: Curso Inteligência Artificial - Parte 2 -

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)

Page 94: Curso Inteligência Artificial - Parte 2 -

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)

Page 95: Curso Inteligência Artificial - Parte 2 -

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σ

Page 96: Curso Inteligência Artificial - Parte 2 -

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)

Page 97: Curso Inteligência Artificial - Parte 2 -

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) ]

Page 98: Curso Inteligência Artificial - Parte 2 -

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

Page 99: Curso Inteligência Artificial - Parte 2 -

99

Domínio dos circuitos eletrônicos

Somador de 1 bit

Page 100: Curso Inteligência Artificial - Parte 2 -

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)

Page 101: Curso Inteligência Artificial - Parte 2 -

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))

Page 102: Curso Inteligência Artificial - Parte 2 -

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))

Page 103: Curso Inteligência Artificial - Parte 2 -

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

Page 104: Curso Inteligência Artificial - Parte 2 -

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

Page 105: Curso Inteligência Artificial - Parte 2 -

Inferência em LPO

Chapter 9

Page 106: Curso Inteligência Artificial - Parte 2 -

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

Page 107: Curso Inteligência Artificial - Parte 2 -

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)) .

Page 108: Curso Inteligência Artificial - Parte 2 -

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

Page 109: Curso Inteligência Artificial - Parte 2 -

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.

Page 110: Curso Inteligência Artificial - Parte 2 -

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)))

Page 111: Curso Inteligência Artificial - Parte 2 -

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)

Page 112: Curso Inteligência Artificial - Parte 2 -

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.

Page 113: Curso Inteligência Artificial - Parte 2 -

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)

Page 114: Curso Inteligência Artificial - Parte 2 -

114

Unificação ! Para unificar Conhece(John,x) e Conhece(y,z),

θ = {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 }

Page 115: Curso Inteligência Artificial - Parte 2 -

115

O algoritmo de unificação

Page 116: Curso Inteligência Artificial - Parte 2 -

116

O algoritmo de unificação

Page 117: Curso Inteligência Artificial - Parte 2 -

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)

!  GMP é utilizado com KB de cláusulas definidas (exatamente um

literal positivo) !  Todas as variáveis são universalmente quantificadas

where pi'θ = pi θ for all i

Page 118: Curso Inteligência Artificial - Parte 2 -

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.

Page 119: Curso Inteligência Artificial - Parte 2 -

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)

Page 120: Curso Inteligência Artificial - Parte 2 -

120

Algoritmo de encadeamento pra frente

Page 121: Curso Inteligência Artificial - Parte 2 -

121

Prova de encadeamento pra frente

Page 122: Curso Inteligência Artificial - Parte 2 -

122

Prova de encadeamento pra frente

Page 123: Curso Inteligência Artificial - Parte 2 -

123

Prova de encadeamento pra frente

Page 124: Curso Inteligência Artificial - Parte 2 -

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

Page 125: Curso Inteligência Artificial - Parte 2 -

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.

Page 126: Curso Inteligência Artificial - Parte 2 -

126

Exemplo de casamento difícil

! Coloravel() é inferido sse o PSR tem uma solução

! O casamento é NP-Difícil

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)

Page 127: Curso Inteligência Artificial - Parte 2 -

127

Algoritmo com encadeamento pra trás

SUBST(COMPOSE(θ1, θ2), p) = SUBST(θ2, SUBST(θ1, p))

Page 128: Curso Inteligência Artificial - Parte 2 -

128

Exemplo de ET

Page 129: Curso Inteligência Artificial - Parte 2 -

129

Exemplo de ET

Page 130: Curso Inteligência Artificial - Parte 2 -

130

Exemplo de ET

Page 131: Curso Inteligência Artificial - Parte 2 -

131

Exemplo de ET

Page 132: Curso Inteligência Artificial - Parte 2 -

132

Exemplo de ET

Page 133: Curso Inteligência Artificial - Parte 2 -

133

Exemplo de ET

Page 134: Curso Inteligência Artificial - Parte 2 -

134

Exemplo de ET

Page 135: Curso Inteligência Artificial - Parte 2 -

135

Exemplo de ET

Page 136: Curso Inteligência Artificial - Parte 2 -

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

Page 137: Curso Inteligência Artificial - Parte 2 -

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

Page 138: Curso Inteligência Artificial - Parte 2 -

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=[]

Page 139: Curso Inteligência Artificial - Parte 2 -

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

Page 140: Curso Inteligência Artificial - Parte 2 -

140

Conversão para FNC !  Todo mundo que ama todos os animais é amado por

alguém: ∀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)]

Page 141: Curso Inteligência Artificial - Parte 2 -

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)]

Page 142: Curso Inteligência Artificial - Parte 2 -

142

Prova por resolução de cláusulas definidas


Top Related