Maintaining Arc Consistency (MAC)
MAC runs arc-consistency propagation after every search assignment, continuing beyond immediate peers until the queue is stable.
| r1c15 | r1c23 | r1c3 | r1c4 | r1c57 | r1c6 | r1c7 | r1c8 | r1c9 |
| r2c16 | r2c2 | r2c3 | r2c41 | r2c59 | r2c65 | r2c7 | r2c8 | r2c9 |
| r3c1 | r3c29 | r3c38 | r3c4 | r3c5 | r3c6 | r3c7 | r3c86 | r3c9 |
| r4c18 | r4c2 | r4c3 | r4c4 | r4c56 | r4c6 | r4c7 | r4c8 | r4c93 |
| r5c14 | r5c22 | r5c3 | r5c48 | r5c55 | r5c63 | r5c7 | r5c8 | r5c91 |
| r6c17 | r6c2 | r6c3 | r6c4 | r6c52 | r6c6 | r6c7 | r6c8 | r6c96 |
| r7c1 | r7c26 | r7c3 | r7c4 | r7c53 | r7c6 | r7c72 | r7c88 | r7c9 |
| r8c1 | r8c2 | r8c3 | r8c44 | r8c51 | r8c69 | r8c7 | r8c8 | r8c95 |
| r9c1 | r9c2 | r9c3 | r9c4 | r9c58 | r9c6 | r9c7 | r9c87 | r9c99 |
Cascade from r5c5=5
- Assign r5c5=5.
- Forward effects produce r5c2={2} and r7c5={3}.
- MAC treats those singletons as new information.
- It removes 2 from all peers of r5c2 and 3 from all peers of r7c5.
- Any further domain change re-enters the arc queue.
Tradeoff
| Forward checking | MAC |
|---|---|
| Checks direct peers | Propagates through the network |
| Less work per node | More work per node |
| May discover failure later | Often discovers failure earlier |
Question: Why must a backtracking implementation restore every domain deletion made by MAC, not only the original trial assignment?