In the systematic pattern generation algorithm, we restrict attention to
"interesting patterns", i.e., those that might carry more information than the
combination of their subsets. We do this by first generating single goal
ancestor (SGA) patterns and then combine multiple SGA patterns to get the final
patterns. Two SGA may be connected if they share a variable that is a
"connection point" of one of the patterns. This is documented and implemented as
follows:
A variable is a connection point if it satisfies the following
criteria:
1. We can get from the pattern to the connection point via
an (eff, pre) or (eff, eff) arc in the causal graph.
2. It is not part of pattern.
3. We *cannot* get from the pattern to the connection point
via an (eff, pre) arc.
I believe the direction of the arcs in condition 1 is wrong and should be "(pre,
eff) or (eff, eff)" instead.
Malte also suggested a faster way to compute interesting patterns that does not
rely on SGA patterns as basic building blocks but on patterns that have exactly
one goal variable. This is currently in the repository for our follow-up work on
the PhO paper:
ai-repos/helmert/xxx-drafts/jair13-pattern-collection-heuristics
I suggest we fix this in two steps: let's first implement the direct fix, that
just reverses the arc direction in the existing implementation and then
implement Malte's algorithm as a second step.
We could do the first part in a subissue and merge it before we start improving
the algortihm.
|