The PW-AC algorithm consists of two phases. In the initialization phase we set up the group counters, and in the main phase we delete unsupported tuples and propagate the deletions. We now analyze the time complexity of PW-AC. Note that in our complexity analysis we measure operations, such as incrementing or decrementing a counter, since PW-AC does not perform consistency checks in the usual sense.
Proof: We assume that for any constraint in the dual encoding, the non-binary constraints corresponding to the two dual variables and share at most original variables of domain size . This means that each piecewise decomposition consists of at most groups. Obviously, is equal to , where is the maximum arity of the constraints. In the initialization phase of lines 3-6 we iterate over all constraints, and for each constraint between variables and , we iterate over all the tuples in . This is done with asymptotic time complexity. Then, all empty groups are inserted in (lines 7-11). This requires operations in the worst case. After the initialization, function is called. A group is inserted to (and later removed) only when it becomes empty. This means that the while loop of is executed at most times for each constraint, and at most times in total. This is also the maximum number of times function is called (once in every iteration of the loop). The cost of function is computed as follows: Assuming is called for a group , we iterate over the (at most) tuples of group (line 20). In each iteration we remove a tuple (line 21) and we update the counters of the groups where belongs (lines 22-23). There are at most such groups (in case is constrained with all other dual variables). Therefore, each iteration costs , and as a result, each call to costs . Since is called at most times, the complexity of PW-AC, including the initialization step, is =.
Note that PW-AC can be easily used incrementally during search. In this case, the initialization phase will only be executed once. The asymptotic space complexity of PW-AC, and any AC algorithm on a binary encoding, is dominated by the space need to store the allowed tuples of the non-binary constraints. Algorithm PW-AC also requires space to store the counters for all the groups, space for the stack, and space for the fast implementation of function .
<994>>
Nikolaos Samaras 2005-11-09