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

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

Datalog Recursivo AULA 6 PGC Sistemas de Banco de Dados

Apresentações semelhantes


Apresentação em tema: "Datalog Recursivo AULA 6 PGC Sistemas de Banco de Dados"— Transcrição da apresentação:

1 Datalog Recursivo AULA 6 PGC 107 - Sistemas de Banco de Dados
Profa. Sandra de Amo Pós-graduação em Ciência da Computação – UFU 2012-2

2 Estratificação P(x) :- ...., P1(x),.... P(x) :- ...., not(P2(x)), ...
Predicados do estrato 1 P(x) :- ...., P1(x),.... P(x) :- ...., not(P2(x)), ... Predicados do estrato 2 Q(x):- ...not( P(x) ),... Q(x) :- ..., not(P2(x)), .... Predicados do estrato 3 ... ....

3 Estratificação Seja P um programa (consulta) Datalog
Seja idb(P) = predicados intensionais de P Uma estratificação de P é uma partição das regras de P em subprogramas P1,...,Pn juntamente com uma aplicação F : idb(P)  {1,...,n} Para cada predicado R, todas as regras que definem R estão no mesmo subprograma, Se R(x) :- ...., R’(y), então F(R’) ≤ F(R) Se R(x) :- ...., not(R’(y)), ... então F(R’) < F(R)

4 Exemplo r1 S(x) :- R1(x), not(R(x)) Possíveis estratificações
r2 T(x) :- R2(x), not(R(x)) r3 U(x) :- R3(x), not(T(x)) r4 V(x):- R4(x), not(S(x)), not(U(x)) Possíveis estratificações {r1}, {r2}, {r3}, {r4} {r2}, {r1}, {r3}, {r4} {r2}, {r3}, {r1}, {r4} {r1,r2}, {r3}, {r4} {r2}, {r1, r3}, {r4}

5 Grafo de precedência com sinal
r1 S(x) :- R1’(x), not(R(x)) r2 T(x) :- R2’(x), not(R(x)) r3 U(x) :- R3’(x), not(T(x)) r4 V(x):- R4’(x), not(S(x)), not(U(x)) V U S T

6 Teorema Seja P um programa com estratificação F
Se existe um caminho de R para S então F(R) ≤ F(S) Se existe um caminho de R para S contendo arco negativo, então F(R) < F(S)

7 Teste: P é estratificável ?
Um programa é estratificável se e somente se não existe ciclo no grafo de dependência com sinal contendo uma aresta negativa

8 Exemplo p(x) :- q(x,y), s(y), ¬ r(x) r(x):- q(x,y), ¬(p(x)
Não é estratificável

9 Como encontrar uma estratificação
Início: para toda relação R do programa, estrato(R) = 1 Se uma regra com R na cabeça possui uma relação negada Q em seu corpo, e estrato(Q) ≥ estrato(P), então incrementa estrato(P). Se uma regra com R na cabeça possui uma relação não-negada Q em seu corpo, e estrato(Q) > estrato(P), então redefina estrato(P) := estrato(Q). Se os estratos de cada relação se estabilizam, então o algoritmo pára e retorna a estratificação produzida. Se os estratos não se estabilizam e atingem um valor maior do que o número de predicados, o algoritmo pára e responde: “Programa não estratificável”.

10 Algoritmo Para cada relação p faça estrato(p):= 1; Repita
Para cada regra r com cabeça p faça Para cada relação negada q no corpo de r faça estrato(p) := max(estrato(p), 1+estrato(q)); Para cada relação não-negada q no corpo de r faça estrato(p) := max(estrato(p), estrato(q)); Até que não exista mais mudanças dos estratos de nenhuma relação ou algum estrato excede o número total de relações

11 Exemplo P(x):- R(x), ¬ Q(x) Q(x):- R(x), P(x) Início Estrato(P) = 1
Estrato(R) = 1 Iteração 1 Estrato(P) = 2 Estrato(Q) = 2 Iteração 2 Estrato(P) = 3 Estrato(Q) = 3 Iteração 3 Estrato(P) = 4 Estrato(Q) = 4 Como o número de relações do programa é 3 e estrato(P) = 4 então o algoritmo pára e retorna “Não estratificável”.

12 Exemplo S(x) :- R1(x), not(R(x)) T(x) :- R2(x), not(R(x))
U(x) :- R(x), not(T(x)) V(x):- R(x), not(S(x)), not(U(x)) Início Estrato(S) = 1 Estrato(R) = 1 Estrato(R1) = 1 Estrato(R2) = 1 Estrato(T) = 1 Estrato(U) = 1 Estrato(V) = 1 Iteração 1 Estrato(S) = 2 Estrato(R)=Estrato(R1)=1 Estrato(R2) = 1 Estrato(T) = 2 Estrato(U) = 3 Estrato(V) = 4 Iteração 2 Estrato(S) = 2 Estrato(R)=Estrato(R1)=1 Estrato(R2) = 1 Estrato(T) = 2 Estrato(U) = 3 Estrato(V) = 4 Como não há mais modificações no estrato de nenhuma relação, o programa é estratificável e uma estratificação é: Estrato 1 = {R, R1, R2} Estrato 2 = {S,T} Estrato 3 = {U} Estrato 4 ={V}

13 Programas semi-positivos
Um programa é semi-positivo se as negações no corpo de suas regras só aparecem em predicados extensionais Programas semi-positivos têm modelo minimal único Resposta ao programa = modelo minimal do programa = calculado através do método da resolução

14 Programas semi-positivos – Como calcular a resposta
Exemplo s(x) :- p(x), ¬ r(x) t(x) :- s(x), ¬ r(x) Extensionais = {p, r} Intensionais = {s,t} Relação resposta = t R = {a, b} P = {b, c} T0 = {r(a), r(b), p(b), p(c)} T1 = T0 U {s(c)} T2 = T1 U {t(c)} T3 = T2 Portanto T2 é o ponto fixo do programa = modelo minimal Resposta: {t(c)}

15 Resposta – Método Negação por Falha
s(x) :- p(x), ¬ r(x) t(x) :- s(x), ¬ r(x) r(a) :- r(b) :- p(b) :- p(c) :- t(x) x  x1 s(x1), ¬ r(x1) x1  x2 p(x2), ¬ r(x2), ¬ r(x2) x2  c x2  b p(c), ¬ r(c), ¬ r(c) p(b), ¬ r(b), ¬ r(b) ¬ r(c), ¬ r(c) ¬ r(b), ¬ r(b) ¬ r(c) falha Resposta = {x  x1, x1  x2 , x2  c} = { x  c }

16 Estratos podem ser vistos como programas positivos
Cada estrato em um programa estratifiável pode ser visto como programa semi-positivo Resposta de um programa estratificável = composição das respostas de seus estratos.

17 Exemplo Quais as cidades que não estão conectadas a São Paulo por rotas aéreas ? conecta(x,y) :- voo(x,y) conecta(x,y) :- voo(x,z), conecta(z,y) Query(x) :- ¬ conecta(x, SP) (regra não é segura !) Transformando em regras seguras : Query(x) :- voo(x,z), ¬ conecta(x, SP) Query(x) :- voo(z,x), ¬ conecta(x, SP)

18 Exemplo - continuação (r1) conecta(x,y) :- voo(x,y)
(r2) conecta(x,y) :- voo(x,z), conecta(z,y) (r3) Query(x) :- voo(x,z), ¬ conecta(x, SP) (r4) Query(x) :- voo(z,x), ¬ conecta(x, SP) Estrato 0 = { voo(a,b), voo(b,c), voo(c,SP), voo(b,d) } Estrato 1 = { r1, r2} Estrato 2 = {r3, r4}

19 Exemplo - Continuação Resolvendo Estrato 1 : programa positivo
conecta = {(a,b), (b,c), (b,d), (a,c), (a,d), (b,d), (b,SP), (a,SP), (c,SP)} Resolvendo Estrato 2 = programa semi-positivo Query = {d}

20 Exercício r1 S(x) :- R1(x), not(R(x)) R1 = {a, b, c}
r2 T(x) :- R2(x), not(R(x)) r3 U(x) :- R3(x), not(T(x)) r4 V(x):- R4 (x), not(S(x)), not(U(x)) R1 = {a, b, c} R = {a} R2 = {a, d} R3 = {a, c} R4 = {a,d}


Carregar ppt "Datalog Recursivo AULA 6 PGC Sistemas de Banco de Dados"

Apresentações semelhantes


Anúncios Google