cs345-8

cs345-8 - Searching for Solutions Careful Analysis of...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Searching for Solutions Careful Analysis of Expansions The Bucket Algorithm 1 Solutions and Expansions For every subgoal p(X,Y) of a query, each solution must have a subgoal (view) whose expansion allows a containment mapping to p(X,Y). “Bucket” for a subgoal = set of views that “cover” the subgoal. A solution must include > 1 view from each bucket. 2 But … There’s much more to the story. A careful examination of how variables from the view definitions, query, solution, and expansion relate will eventually reveal additional constraints on the structure of the solutions. 3 (Non)Distinguished Variables A variable that appears in the head of a CQ is said to be distinguished ; otherwise nondistinguished. p(X,Y) :- q(X,Z) & r(Z,Y) Distinguished Nondistinguished 4 Local Variables of Expansions When we expand a view subgoal of a solution, the nondistinguished variables of the view definition become local. A local variable may not appear anywhere else in the expansion. Variables of the solution substitute for the distinguished variables of a view definition. 5 Picture Correspond to distinguished of the view v(X,Y) :- p(X,Z) & q(Z,Y) sol(U,V) :… & v(U,W) & … exp(U,V) :- … & p(U,Z1) & q(Z1,W) … Distinguished in solution; may appear elsewhere Local from view; may not appear except as shown Exposed variables Nondistinguished in solution; may appear elsewhere 6 Exposed Variables Variables of the expansion that have substituted for distinguished variables of a view. These are the only variables that may appear in subgoals belonging to the expansion of two different solution subgoals. 7 The Variables of the Query A query variable is shared if it appears more than once; otherwise it is unique. A distinguished query variable can only map to the corresponding distinguished variable of the expansion/solution. A nondistinguished, unique variable of the query maps to any variable of the expansion. 8 Mapping Shared Variables There are two options for shared variables: 1. Map to a local variable of one expansion. 2. Map to an exposed variable. Only in case (2) can the query subgoals with a shared variable map to expansion subgoals that come from more than one solution subgoal. 9 Picture --- Map to Exposed v(X,Y) :- p(X,Z) & q(Z,Y) sol(U,V) :- … v(U,W) … W duplicated so D can be handled u(W,V) … exp(U,V) :- p(U,Z1) & q(Z1,W) … r(W,T) … que(A,B) :- … q(C,D) … r(D,E) … Shared variable D maps to exposed variable W. We can map another occurrence of D to a copy of W that comes from another view. 10 Picture v(X,Y) :- p(X,Z) & q(Z,Y) sol(U,V) :… & v(U,W) & … exp(U,V) :- … & p(U,Z1) & q(Z1,W) … que(U,V) :- … p(U,A) & q(A,D) … All occurrences of shared variable A map to local variable Z1. 11 Buckets To help search for solutions, we create buckets: 1. One bucket for each subgoal of the query. 2. One bucket for each shared variable in the query. 12 Buckets for Subgoals Members of the bucket for a subgoal p(A,B) are pairs consisting of: 1. A view v. 2. A particular p -subgoal in the body of v. There are conditions on p(A,B) and the target subgoal p(X,Y) described on the next slide. 13 Buckets for Subgoals --- (2) 1. p(A,B) must be mappable to p(X,Y). That is, if A=B, then X=Y. 2. If (say) A is a distinguished variable of the query, then X is distinguished in the view. 3. If (say) A is a shared variable, then X is distinguished in the view. Obvious extension to > 2 arguments. 14 Buckets for Shared Variables Members of the bucket for a shared variable A consist of: 1. A view v, and 2. A set of subgoals S of v such that there is a CM from all the query subgoals containing A to S. In this mapping, distinguished variables of the query map to distinguished variables of the view. 15 Example v(X,Y) :- p(X,Z) & p(Z,Y) w(U,V) :- p(U,S) & p(S,T) & p(T,V) q(A,B) :- p(A,C) & p(C,D) & p(D,E) & p(E,F) & p(F,G) & p(G,B) v = “grandparent”; w = “greatgrandparent”; query q = “sixth-generation ancestors.” 16 Example --- p(A,C) v(X,Y) :- p(X,Z) & p(Z,Y) w(U,V) :- p(U,S) & p(S,T) & p(T,V) q(A,B) :- p(A,C) & p(C,D) & p(D,E) & p(E,F) & p(F,G) & p(G,B) The bucket for p(A,C) is empty. A is distinguished; C is shared. No view subgoal has distinguished variables in both positions. 17 Example --- p(C,D) v(X,Y) :- p(X,Z) & p(Z,Y) w(U,V) :- p(U,S) & p(S,T) & p(T,V) q(A,B) :- p(A,C) & p(C,D) & p(D,E) & p(E,F) & p(F,G) & p(G,B) The bucket for p(C,D) is empty. Both C and D are shared. No view subgoal has distinguished variables in both positions. Likewise, all subgoals of q have empty buckets. 18 Example --- Shared Variable C v(X,Y) :- p(X,Z) & p(Z,Y) w(U,V) :- p(U,S) & p(S,T) & p(T,V) q(A,B) :- p(A,C) & p(C,D) & p(D,E) & p(E,F) & p(F,G) & p(G,B) The bucket for C : 1. {p(X,Z), p(Z,Y)} from v. Important: X is distinguished (since A maps to X ). 2. {p(U,S), p(S,T)} from w. Important: U is distinguished (since A maps to U ). 19 Shared Variable C --- Continued v(X,Y) :- p(X,Z) & p(Z,Y) w(U,V) :- p(U,S) & p(S,T) & p(T,V) q(A,B) :- p(A,C) & p(C,D) & p(D,E) & p(E,F) & p(F,G) & p(G,B) The bucket for C does not contain {p(S,T), p(T,V)} from w. Because distinguished variable A of the query would have to map to S, which is local in the view definition. 20 Example --- Shared Variable D v(X,Y) :- p(X,Z) & p(Z,Y) w(U,V) :- p(U,S) & p(S,T) & p(T,V) q(A,B) :- p(A,C) & p(C,D) & p(D,E) & p(E,F) & p(F,G) & p(G,B) The bucket for D : 1. {p(X,Z), p(Z,Y)} from v. 2. {p(U,S), p(S,T)} and {p(S,T), p(T,V)} from w. Either is OK, since neither C nor E is distinguished. E, F like D ; G like A. 21 Example --- Continued Each of the six query subgoals must be covered by at least one member of a bucket. Since the subgoals themselves have empty buckets, we must group them according to their shared variables and cover them, in groups, from the buckets for the variables. 22 Example --- Continued One possibility: use the members from v in the buckets for C, E, and G. Since shared variables D and F map to distinguished variables of the view definition, we can use v three times in the solution, and equate the corresponding variables. 23 First Solution v(X,Y):w(U,V):q(A,B):& s(A,B):e(A,B):& p(X,Z) & p(Z,Y) p(U,S) & p(S,T) & p(A,C) & p(C,D) & p(E,F) & p(F,G) & v(A,J) & v(J,K) & p(A,Z1) & p(Z1,J) p(Z2,K) & p(K,Z3) p(T,V) p(D,E) p(G,B) v(K,B) & p(J,Z2) & p(Z3,B) 24 Example --- Continued Another possibility is to use one copy of w to cover the first three query subgoals and another copy of w to cover the last three. The first copy covers shared variables C and D ; the second covers F and G. Shared variable E maps to distinguished variables of w. 25 Second Solution v(X,Y) :- p(X,Z) & p(Z,Y) w(U,V) :- p(U,S) & p(S,T) & p(T,V) q(A,B) :- p(A,C) & p(C,D) & p(D,E)& p(E,F) & p(F,G) & p(G,B) s(A,B) :- w(A,J) & w(J,B) e(A,B) :- p(A,S1) & p(S1,T1) & p(T1,J) & p(J,S2) & p(S2,T2) & p(T2,B) 26 Why There Are No More Solutions For instance, we cannot use one v subgoal v(A,J) in the solution to cover shared variable C and another v(K,L) to cover D. v(A,J) expands to p(A,Z1) & p(Z1,J), forcing D to map to J. But v(K,L) expands to p(K,Z2) & p(Z2,L), forcing D to map to Z2. 27 ...
View Full Document

This document was uploaded on 01/06/2012.

Ask a homework question - tutors are online