The situation so far
× X1(1) ∪
X2(2) X2(3)
•
We started from our input treeT and queryQ•
We have built acircuitCdescribing the results•
We know it is ad-DNNF•
We want toenumeratethese results efficientlyTheorem
Given ad-DNNF set circuitC, we can enumerate itscaptured sets with preprocessinglinear in|C|and delaylinear in each set
→ This is ageneric result(does not talk about MSO or trees)
→ Any problems whose solutions can be coded as a d-DNNF can be efficiently enumerated via this method
The situation so far
× X1(1) ∪
X2(2) X2(3)
•
We started from our input treeT and queryQ•
We have built acircuitCdescribing the results•
We know it is ad-DNNF•
We want toenumeratethese results efficiently TheoremGiven ad-DNNF set circuitC, we can enumerate itscaptured sets with preprocessinglinear in|C|and delaylinear in each set
→ This is ageneric result(does not talk about MSO or trees)
→ Any problems whose solutions can be coded as a d-DNNF can be efficiently enumerated via this method
22/35
The situation so far
× X1(1) ∪
X2(2) X2(3)
•
We started from our input treeT and queryQ•
We have built acircuitCdescribing the results•
We know it is ad-DNNF•
We want toenumeratethese results efficiently TheoremGiven ad-DNNF set circuitC, we can enumerate itscaptured sets with preprocessinglinear in|C|and delaylinear in each set
→ This is ageneric result(does not talk about MSO or trees)
→ Any problems whose solutions can be coded as a d-DNNF
Enumeration proof overview in each result)
A B C a b c a b’ c
Results
23/35
Enumeration proof overview in each result)
A B C a b c a b’ c
Results
Enumeration proof overview in each result)
A B C a b c a b’ c
Results
23/35
Enumeration proof overview in each result)
A B C a b c a b’ c
Results
Enumeration proof overview in each result)
A B C a b c a b’ c
Results
23/35
Enumerating captured sets of d-DNNF set circuits
Task: Enumerate the elements of the setS(g)captured by a gateg
→ E.g., forS(g) ={{x},{x,y}}, enumerate{x}and then{x,y}
Base case: variable x : enumerate{x}and stop
∪-gate
∪
g g0
Concatenation:enumerateS(g) and then enumerateS(g0) Determinism:no duplicates
×-gate
×
g g0
Lexicographic product: enumerateS(g) and for each resulttenumerateS(g0) and concatenatetwith each result Decomposability:no duplicates
Enumerating captured sets of d-DNNF set circuits
Task: Enumerate the elements of the setS(g)captured by a gateg
→ E.g., forS(g) ={{x},{x,y}}, enumerate{x}and then{x,y}
Base case: variable x :
enumerate{x}and stop
∪-gate
∪
g g0
Concatenation:enumerateS(g) and then enumerateS(g0) Determinism:no duplicates
×-gate
×
g g0
Lexicographic product: enumerateS(g) and for each resulttenumerateS(g0) and concatenatetwith each result Decomposability:no duplicates
24/35
Enumerating captured sets of d-DNNF set circuits
Task: Enumerate the elements of the setS(g)captured by a gateg
→ E.g., forS(g) ={{x},{x,y}}, enumerate{x}and then{x,y}
Base case: variable x : enumerate{x}and stop
∪-gate
∪
g g0
Concatenation:enumerateS(g) and then enumerateS(g0) Determinism:no duplicates
×-gate
×
g g0
Lexicographic product: enumerateS(g) and for each resulttenumerateS(g0) and concatenatetwith each result Decomposability:no duplicates
Enumerating captured sets of d-DNNF set circuits
Task: Enumerate the elements of the setS(g)captured by a gateg
→ E.g., forS(g) ={{x},{x,y}}, enumerate{x}and then{x,y}
Base case: variable x : enumerate{x}and stop
∪-gate
∪
g g0
Concatenation:enumerateS(g) and then enumerateS(g0)
Determinism:no duplicates
×-gate
×
g g0
Lexicographic product: enumerateS(g) and for each resulttenumerateS(g0) and concatenatetwith each result Decomposability:no duplicates
24/35
Enumerating captured sets of d-DNNF set circuits
Task: Enumerate the elements of the setS(g)captured by a gateg
→ E.g., forS(g) ={{x},{x,y}}, enumerate{x}and then{x,y}
Base case: variable x : enumerate{x}and stop
∪-gate
∪
g g0
Concatenation:enumerateS(g) and then enumerateS(g0)
×-gate
×
g g0
Lexicographic product: enumerateS(g) and for each resulttenumerateS(g0) and concatenatetwith each result Decomposability:no duplicates
Enumerating captured sets of d-DNNF set circuits
Task: Enumerate the elements of the setS(g)captured by a gateg
→ E.g., forS(g) ={{x},{x,y}}, enumerate{x}and then{x,y}
Base case: variable x : enumerate{x}and stop
∪-gate
∪
g g0
Concatenation:enumerateS(g) and then enumerateS(g0) Determinism:no duplicates
×-gate
×
g g0
Lexicographic product: enumerateS(g) and for each resulttenumerateS(g0) and concatenatetwith each result
Decomposability:no duplicates
24/35
Enumerating captured sets of d-DNNF set circuits
Task: Enumerate the elements of the setS(g)captured by a gateg
→ E.g., forS(g) ={{x},{x,y}}, enumerate{x}and then{x,y}
Base case: variable x : enumerate{x}and stop
∪-gate
∪
g g0
Concatenation:enumerateS(g) and then enumerateS(g0)
×-gate
×
g g0
Lexicographic product: enumerateS(g) and for each resulttenumerateS(g0) and concatenatetwith each result
Normalization: handling∅
×
×
x ⊥
y
{{x}} ∅
{{y}}
∅
∅
•
Problem:ifS(g) =∅we waste time•
Solution: in preprocessing• computebottom-upifS(g) =∅
• then get rid of the gate
25/35
Normalization: handling∅
×
×
x ⊥
y {{x}} ∅
{{y}}
∅
∅
•
Problem:ifS(g) =∅we waste time•
Solution: in preprocessing• computebottom-upifS(g) =∅
• then get rid of the gate
Normalization: handling∅
×
×
x ⊥
y {{x}} ∅
{{y}}
∅
∅
•
Problem:ifS(g) =∅we waste time•
Solution: in preprocessing• computebottom-upifS(g) =∅
• then get rid of the gate
25/35
Normalization: handling∅
×
×
x ⊥
y {{x}} ∅
{{y}}
∅
∅
•
Problem:ifS(g) =∅we waste time•
Solution: in preprocessing• computebottom-upifS(g) =∅
• then get rid of the gate
Normalization: handling∅
×
×
x ⊥
y {{x}} ∅
{{y}}
∅
∅
•
Problem:ifS(g) =∅we waste time•
Solution: in preprocessing• computebottom-upifS(g) =∅
• then get rid of the gate
25/35
Normalization: handling∅
×
×
x ⊥
y {{x}} ∅
{{y}}
∅
∅
•
Problem:ifS(g) =∅we waste time•
Solution: in preprocessing• computebottom-upifS(g) =∅
• then get rid of the gate
Normalization: handling∅
×
×
x ⊥
y {{x}} ∅
{{y}}
∅
∅
•
Problem:ifS(g) =∅we waste time•
Solution: in preprocessing• computebottom-upifS(g) =∅
• then get rid of the gate
25/35
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}} andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}} andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
26/35
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}} andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}} andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
26/35
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}} andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}} andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
26/35
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}} andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}}
andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
26/35
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}}
andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}}
andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
26/35
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}}
andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}}
andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress: itsplitsthe sets non-trivially
26/35
Normalization: handling empty sets
•
Problem:ifS(g)contains{}we waste time in chains of×-gates•
Solution:• splitgbetweenS(g)∩ {{}}
andS(g)\ {{}}(homogenization)
• removeinputs withS(g) ={{}}for×-gates
• collapse×-chains with fan-in 1
→ Now, traversing a×-gateensures that we make progress:
itsplitsthe sets non-trivially
Indexing: handling∪-hierarchies
∪ g1 ∪
∪
g2 g3 g4
∪
•
Problem:we waste time in∪-hierarchies to find areachable exit(non-∪gate)•
Solution: computereachability index•
Problem:must be done inlinear time•
Solution:Determinism ensures we have amultitree (we cannot have the pattern at the right)•
Customconstant-delay reachability index for multitrees•
ForMSO query evaluation: upwards-deterministiccircuit so we have atree: simpler constant-memory index∪
g
27/35
Indexing: handling∪-hierarchies
∪ g1 ∪
∪
g2 g3 g4
∪
•
Problem:we waste time in∪-hierarchies to find areachable exit(non-∪gate)•
Solution: computereachability index•
Problem:must be done inlinear time•
Solution:Determinism ensures we have amultitree (we cannot have the pattern at the right)•
Customconstant-delay reachability index for multitrees•
ForMSO query evaluation: upwards-deterministiccircuit so we have atree: simpler constant-memory index∪
g
Indexing: handling∪-hierarchies
∪ g1 ∪
∪
g2 g3 g4
∪
•
Problem:we waste time in∪-hierarchies to find areachable exit(non-∪gate)•
Solution: computereachability index•
Problem:must be done inlinear time•
Solution:Determinism ensures we have amultitree (we cannot have the pattern at the right)•
Customconstant-delay reachability index for multitrees•
ForMSO query evaluation: upwards-deterministiccircuit so we have atree: simpler constant-memory index∪
g
27/35
Indexing: handling∪-hierarchies
∪ g1 ∪
∪
g2 g3 g4
∪
•
Problem:we waste time in∪-hierarchies to find areachable exit(non-∪gate)•
Solution: computereachability index•
Problem:must be done inlinear time•
Solution:Determinism ensures we have amultitree (we cannot have the pattern at the right)•
Customconstant-delay reachability index for multitrees•
ForMSO query evaluation: upwards-deterministiccircuit so we have atree: simpler constant-memory index∪
g
Indexing: handling∪-hierarchies
∪ g1 ∪
∪
g2 g3 g4
∪
•
Problem:we waste time in∪-hierarchies to find areachable exit(non-∪gate)•
Solution: computereachability index•
Problem:must be done inlinear time•
Solution:Determinism ensures we have amultitree (we cannot have the pattern at the right)•
Customconstant-delay reachability index for multitrees•
ForMSO query evaluation: upwards-deterministiccircuit so we have atree: simpler constant-memory index∪
g
27/35
Indexing: handling∪-hierarchies
∪ g1 ∪
∪
g2 g3 g4
∪
•
Problem:we waste time in∪-hierarchies to find areachable exit(non-∪gate)•
Solution: computereachability index•
Problem:must be done inlinear time•
Solution:Determinism ensures we have amultitree (we cannot have the pattern at the right)•
Customconstant-delay reachability index for multitrees•
ForMSO query evaluation: upwards-deterministiccircuit so we have atree: simpler constant-memory index∪
Indexing: handling∪-hierarchies
∪ g1 ∪
∪
g2 g3 g4
∪
•
Problem:we waste time in∪-hierarchies to find areachable exit(non-∪gate)•
Solution: computereachability index•
Problem:must be done inlinear time•
Solution:Determinism ensures we have amultitree (we cannot have the pattern at the right)•
Customconstant-delay reachability index for multitrees•
ForMSO query evaluation: upwards-deterministiccircuit so we have atree: simpler constant-memory index∪
g
27/35
Summary of results
We have shown:
Theorem
Given ad-DNNF set circuitC, we can enumerate itscaptured sets with preprocessinglinear in|C|and delaylinear in each set
And for anyfixedMSO queryQ, given a treeT, we can...
•
Constructa d-DNNFCrepresenting the results inO(T)•
ApplytoCthe scheme above So we havere-proved:Theorem [Bagan, 2006, Kazana and Segoufin, 2013] For anyfixedMSO queryQ, given a treeT,
we can preprocessT inlinear time in Tand then enumerate each result inlinear time in the result
Summary of results
We have shown:
Theorem
Given ad-DNNF set circuitC, we can enumerate itscaptured sets with preprocessinglinear in|C|and delaylinear in each set And for anyfixedMSO queryQ, given a treeT, we can...
•
Constructa d-DNNFCrepresenting the results inO(T)•
ApplytoCthe scheme aboveSo we havere-proved:
Theorem [Bagan, 2006, Kazana and Segoufin, 2013] For anyfixedMSO queryQ, given a treeT,
we can preprocessT inlinear time in Tand then enumerate each result inlinear time in the result
28/35
Summary of results
We have shown:
Theorem
Given ad-DNNF set circuitC, we can enumerate itscaptured sets with preprocessinglinear in|C|and delaylinear in each set And for anyfixedMSO queryQ, given a treeT, we can...
•
Constructa d-DNNFCrepresenting the results inO(T)•
ApplytoCthe scheme above So we havere-proved:Theorem [Bagan, 2006, Kazana and Segoufin, 2013]
For anyfixedMSO queryQ, given a treeT,