Cell Forcing Chain Sudoku Technique

Updated

A cell forcing chain is a case split on one cell: try each of its candidates in turn, follow the singles each choice forces, and keep any placement or elimination that every branch reaches, because one of those candidates has to be the cell’s real value.

When a cell forcing chain applies

A Nishio forcing chain needs its assumption to fail, and many assumptions never do. A cell forcing chain asks for something different. A cell has to hold one of its candidates, so if every candidate leads to the same consequence, that consequence is guaranteed, and it does not matter which candidate is the true one.

The method is the same branch-following used by every forcing chain. Assume the first candidate and apply naked and hidden singles until nothing more follows. Do the same, starting from a clean board, for each of the other candidates. Then compare the branches. If one cell received the same digit in every branch, place it. If one candidate disappeared from a cell in every branch — because that cell was filled with something else, or because a peer took the digit — erase it.

Bivalue cells are the natural starting point, because two branches are much easier to keep track of than four. Suuudokuuu’s solver only reports a cell forcing chain when every branch stays consistent and the branches touch at least four cells.

Worked example

r1c3 is either 3 or 4. If it is 3, r1c5 becomes 8; if it is 4, r2c4 becomes 4. Either way r2c4 cannot be 8, so the solver erases 8 from r2c4.
c1c2c3c4c5c6c7c8c9
r12347834538478619
r25678945646781258378
r33567836781367836892582574
r441368236923568568725123
r513695236923674671298123
r63893872382358124592456
r75679467456912568456832467278
r813562345646874568148918
r9167146782469312424675
Pattern cells
r1c3, r1c5, r2c4, r8c1
Eliminations
8 from r2c4

r1c3 holds only 3 and 4, so split on it. In the first branch r1c3 is 3. r1c5, which held 3 and 8, loses its 3 and becomes 8. The branch also forces r8c1 to 3, because with column 3 taken the bottom-left box has no other place for it. That placement plays no part in the conclusion, but the solver records every cell a branch fills, so r8c1 is highlighted too.

In the second branch r1c3 is 4. Row 2 can only take a 4 in r2c3 or r2c4, and r2c3 shares the top-left box with r1c3, so r2c4 must be 4. Now compare the two branches at r2c4. In the first it sits in the same box as the 8 in r1c5, so it cannot be 8. In the second it is filled with 4, so it is not 8 either. Both branches agree, and r2c4 loses the 8 for good, leaving 4, 6 and 7.

How to use a cell forcing chain

  1. Pick a cell with few candidatesStart with a bivalue cell, or a three-candidate cell if no pair gives a result. Fewer branches mean less to track.
  2. Follow each branch separatelyFor every candidate, assume it on a clean board and record each naked and hidden single it forces.
  3. Compare the branchesLook for a cell that gets the same digit in every branch, or a candidate that disappears from a cell in every branch.
  4. Apply only the shared resultPlace the common digit or erase the common candidate. Everything else from the branches is thrown away.

Common mistakes

Cell forcing chain FAQ

Can a cell forcing chain place a digit?

Yes. If every branch puts the same digit in the same cell, that digit is placed. The worked example here shows the other outcome, an elimination.

What happens if one branch reaches a contradiction?

Then that candidate is simply false, which is a Nishio forcing chain on its own. Suuudokuuu’s solver leaves that case to the Nishio and only reports cell forcing chains where every branch stays consistent.

How is a cell forcing chain different from a region forcing chain?

A cell forcing chain splits on the candidates of one cell. A region forcing chain splits on the cells where one digit can go inside a row, column or box.

Do I need to write the branches down?

On paper it helps a great deal. Many solvers mark each branch with a different colour, or work through one branch at a time on a copy of the grid.