Confactor Splitting

## Confactor Splitting

In order to satisfy the prerequisites to be able to multiply confactors and sum out variables, sometimes we need to split confactors.

If we have a confactor


we can replace it by the result of splitting it on a non-eliminated variable Y, with domain {v1,...,vk}. If Y doesn't appear in t, splitting t on T results in the set of confactors:
 ...
If Y does appear in t, the result is the set of confactors:
 ...
where set was defined in Definition *.

#### Correctness:

The program invariant is maintained as one of the new confactors is used for any complete context instead of the original confactor. They both give the same contribution.

Example. Splitting the first confactor for P(E|A,B,C,D) in Figure * on Y gives two confactors:

a &y,
 B E Value true true 0.55 true false 0.45 false true 0.3 false false 0.7

a &`~`y,
 B E Value true true 0.55 true false 0.45 false true 0.3 false false 0.7

Example. Splitting the first confactor for P(B|Y,Z) in Figure * on A gives two confactors:

a &y,
 B Z Value true true 0.77 true false 0.17 false true 0.23 false false 0.83

`~`a &y,
 B Z Value true true 0.77 true false 0.17 false true 0.23 false false 0.83

The reason that we may want to do these two splits is that now we can multiply confactors (*) and (*).

David Poole and Nevin Lianwen Zhang,Exploiting Contextual Independence In Probabilistic Inference, Journal of Artificial Intelligence Research, 18, 2003, 263-313.

 Confactor Splitting