An
algorithm that splits
choices into two
groups, enumerates partial results for each
group, and matches compatible results. For
n binary
choices, the two lists each have about
2n/2 entries instead of enumerating
2n complete
choices; the matching cost and memory requirements depend on the problem.