• Aucun résultat trouvé

Enumeration for set circuits

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

Theorem

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 Theorem

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

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 Theorem

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

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

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,

Documents relatifs