A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 11 Programação Lógica Sintaxe da Programação Lógica Definição 11.1 (cláusula de programa) Uma cláusula de programa, na Lógica de Predicados,

Apresentações semelhantes


Apresentação em tema: "Capítulo 11 Programação Lógica Sintaxe da Programação Lógica Definição 11.1 (cláusula de programa) Uma cláusula de programa, na Lógica de Predicados,"— Transcrição da apresentação:

1

2 Capítulo 11 Programação Lógica

3 Sintaxe da Programação Lógica Definição 11.1 (cláusula de programa) Uma cláusula de programa, na Lógica de Predicados, é uma cláusula do tipo C =( ∀ x 1 )... ( ∀ x n )G, onde G é uma disjunção de literais, que contém exatamente um literal positivo.

4 Notação. Uma cláusula de programa ( ∀∗ )(B ∨ ¬A 1 ∨... ∨ ¬A n ) é denotada por B ← A 1,...,A n. Nesse caso, B é a cabeça da cláusula e A 1,...,A n é a cauda.

5 Definição 11.2 (cláusula unitária) Uma cláusula de programa unitária é uma cláusula do tipo B ←. Nesse caso, a cláusula não contém literais negativos. Definição 11.3 (programa lógico) Um programa lógico é um conjunto de cláusulas de programa.

6 Definição 11.4 (cláusula objetivo) Uma cláusula objetivo é uma cláusula do tipo ← A 1,...,A n. Nesse caso a cláusula não contém literal positivo e não é uma cláusula de programa. Definição 11.5 (cláusula vazia) Uma cláusula vazia é uma cláusula que não contém nenhum literal. Uma cláusula vazia C é denotada por C = . Observe que a cláusula vazia não é uma cláusula de programa.

7 Algoritmo da Unificação Definição 11.6 (substituição) Uma substituição na Lógica de Predicados é um conjunto θ = {x˘ 1 ← t 1,..., x˘ n ← t n }, onde para todo i, x˘ i é variável e t i é termo tal que x˘ i  ti. Além disso, para todo i, j, tem-se que x˘ i  x j se i = j. O conjunto vazio {} é a substituição vazia.

8 Notação. Se o conjunto S é unitário, isto é, S = {E}, então a aplicação de θ a S é igual à aplicação de θ a E, sendo denotada por: Sθ = Eθ.

9 Definição 11.7 (composição de substituições) Considere as substituições θ 1 = {x 1 ← t 1,..., x n ← t n } e θ 2 = {y 1 ← s 1,..., y m ← s m }. A composição de θ 1 e θ 2, denotada por θ 1 θ 2, é calculada como se segue:

10 Definição 11.7 (composição de substituições) 1. Construa o conjunto φ 1 = {x 1 ←t 1 θ 2,..., x n ← t n θ 2,y 1 ← s 1,..., y m ← s m }. 2. Retire de φ 1 as ligações y i ← s i tal que y i = x i para algum j; 1 ≤ j ≤ n. Faça φ 2 igual ao novo conjunto.

11 Definição 11.7 (composição de substituições) 3. Retire de φ 2 as ligações x i ← t i θ 2 tal que x i = t i θ 2. Faça θ 1 θ 2 igual ao conjunto obtido.

12 Proposição 11.1 (composição de substituições) Considere as substituições θ1,θ2 e θ3 e uma expressão C. Tem-se que a) θ 1 {} = {}θ 1 = θ 1. b) ( Cθ 1 ) θ 2 = C ( θ 1 θ 2 ). c) θ 1 (θ 2 θ 3 )=(θ 1 θ 2 ) θ 3.

13 Definição 11.8 (conjunto de diferenças) Seja S = {A1,..., An} um conjunto finito de expressões. O conjunto de diferenças de S é determinado pelos procedimentos a seguir. 1. Aponte para o símbolo mais à esquerda em cada expressão Ai, 1 ≤ i ≤ m. 2. Enquanto todos os símbolos apontados coincidirem, desloque simultaneamente o apontador para o próximo símbolo, à direita, em cada expressão Ai.

14 Definição 11.8 (conjunto de diferenças) 3. Se forem encontrados símbolos apontados que não coincidem, então retire a subexpressão Ei de cada expressão Ai, que inicia no símbolo de diferença. 4. Faça o conjunto de diferenças de S igual a D = {E1,..., Em}. Caso contrário, faça D = {}.

15 Definição 11.9 (expressões unificáveis) Um conjunto de expressões S é unificável se existe uma substituição θ tal que |Sθ| =1. Nesse caso, θ é denominada unificador de S.

16 Definição (unificador mais geral) Seja θ um unificador do conjunto de expressões S. θ é um unificador mais geral de S, umg, se para qualquer unificador ϕ de S, existe uma substituição φ tal que ϕ = θφ.

17 Definição (algoritmo da unificação) Seja S um conjunto de expressões da Lógica de Predicados. Se S é unificável, então o algoritmo a seguir determina um umg de S, caso contrário, ele indica que S não é unificável.

18 Definição (algoritmo da unificação) 1. Faça k = 0 e θ 0 = {}. 2. Se |Sθk| =1, então pare! θ k é um umg de S. Caso contrário, determine o conjunto de diferenças D K de Sθ K.

19 Definição (algoritmo da unificação) 3. Se existe uma variável x e um termo t em D k tal que x não ocorre em t, então faça θ k+1 = θ k {x ← t}, k = k +1, vá para o passo 2. Caso contrário, pare! S não é unificável.

20 Resolução-SLD

21 Definição (regra de computação) Uma regra de computação é uma função que seleciona um literal a partir de uma lista de literais de uma cláusula objetivo.

22 Definição (resolvente-SLD) Considere uma cláusula objetivo G i =(← A 1,...A m,...,A k ), uma cláusula de programa C i+1 = ( A ← B 1,...,B q ), e R c uma regra de computação. A cláusula objetivo G i+1 é o resolvente-SLD de G i e C i+1 utilizando um unificador mais geral θ i+1 via R c se as condições são satisfeitas.

23 Definição (resolvente-SLD) ão satisfeitas. 1. R c (G i ) = A m, 2. A m θ i+1 = Aθ i+1 onde θ i+1 é um umg de {A m, A}. 3. G i+1 é a cláusula objetivo {G i+1 } = = {(← A 1,...,A m-1, B 1,..., B q, A m+1,...,A k )} θ i+1. Nesse caso, G i+1 é denotada por: G i+1 = Res(G i,C i+1, θ i+1, R c ).

24 Notação. Dada uma cláusula objetivo G i = (← A 1,...,A m,..., A k ), uma cláusula de programa C i+1 =(A ← B 1,..., B q ) e R c uma regra de computação. Se G i+1 = Res( G i,C i+1,θ i+1, R c ), então a notação da Figura 11.1 é utilizada.

25 Definição (variações) Duas cláusulas de programa C 1 e C 2 são variações se existem substituições θ e ϕ tais que C 1 = C 2 θ e C 2 = C 1 ϕ. Além disso, as substituições θ e ϕ só possuem ligações do tipo x ← y, que renomeiam uma variável por outra.

26 Definição (derivação-SLD) Sejam: Pl um programa lógico, G uma cláusula objetivo e Rc uma regra de computação. Uma derivação-SLD de Pl ∪ {G} via Rc é uma seqüência G 0,G 1,G 2,..., tal que G = G 0 e G i+1 = Res(G i, C i+1, θ i+1, R c ). Cada cláusula C i é uma variação de uma cláusula de Pl, sendo denominada cláusula de entrada. Veja Figura 11.2.

27 Definição (refutação-SLD) Sejam Pl um programa lógico, G uma cláusula objetivo e R c uma regra de computação. Uma derivação-SLD de Pl ∪ {G} via R c é fechada se é finita e a última cláusula é vazia; caso contrário, ela é aberta.

28 Definição (refutação-SLD) Uma refutação-SLD de Pl ∪ {G} de comprimento n é uma derivação-SLD de Pl ∪ {G} via R c dada pela seqüência G 0 = G, G 1,...,G n onde G n = {}. Como G n = {}, a derivação é fechada.

29 Definição (substituição resposta associada a uma refutação-SLD) Sejam: Pl um pro­grama lógico, G uma cláusula objetivo e R c uma regra de computação tais que existe uma refutação-SLD de Pl ∪ {G} via Rc. Se a seqüência de substituições utilizadas na refutação-SLD é θ 1,...,θ n, então a composição θ 1...θ n é a substituição resposta associada a refutação-SLD via Rc.

30 Definição (prova por refutação- SLD) Seja G uma cláusula objetivo e Pl um programa lógico. Uma prova de G, por resolução-SLD a partir de Pl, é uma refutação-SLD de Pl ∪ {G}.

31 Definição (conseqüência lógica por resolução-SLD) Seja G uma cláusula objetivo e Pl um programa lógico. G é uma conseqüência lógica por resolução-SLD de Pl se existe uma refutação-SLD de Pl ∪ {G}.

32 Teorema 11.1 (teorema da completude) Sejam Pl um programa lógico e G =(← A 1,...,A n ) uma cláusula objetivo. Se Pl → (A 1 ∧... ∧ A n ) é válida, então existe uma refutação-SLD de Pl ∪ {G}.

33 Teorema 11.2 (teorema da correção) Sejam Pl um programa lógico e G =(← A 1,...,A n ) uma cláusula objetivo. Se existe uma refutação-SLD de Pl ∪ {G}, então Pl → (A 1 ∧... ∧ A n ) é válida

34 Procedimentos de Refutação-SLD Definição (árvore-SLD) Sejam Pl um programa lógico, G uma cláusula objetivo e Rc uma regra de computação. A árvore-SLD associada a Pl ∪ {G}, via Rc, é definida por:

35 Definição (árvore-SLD) Cada nó da árvore é rotulado por uma cláusula objetivo (pode-se ter a cláusula vazia); a raiz da árvore é rotulada pela cláusula G 0 = G;

36 suponha um nó rotulado pela cláusula G i =(← A 1,...,A m,...,A n ) e pela regra de computação R c tal que R c (A 1,...,A m,...,A n )= A m.

37 Para cada cláusula de entrada C i+1 =(A ← B 1,...,B q ), pertencente a Pl, tal que A m e A são unificáveis por θ i+1, considere G i+1 = Res(G i,C i+1,θ i+1, R c ). Nesse caso, o nó rotulado por G i tem um nó descendente rotulado pela cláusula G i+1. A aresta que liga o nó G i ao nó G i+1 é rotulada pela cláusula de entrada C i+1 e pela substituição θ i+1.

38 Observações. Nós rotulados pela cláusula vazia {} não possuem descendentes. Os ramos da árvore com folhas rotulados pela cláusula vazia são denominados ramos fechados. Os outros tipos de ramos são abertos. A composição das substituições associadas a cada ramo da árvore forma a substituição resposta associada ao ramo.


Carregar ppt "Capítulo 11 Programação Lógica Sintaxe da Programação Lógica Definição 11.1 (cláusula de programa) Uma cláusula de programa, na Lógica de Predicados,"

Apresentações semelhantes


Anúncios Google