В общем случае большинство алгоритмов удовлетворения ограничений являются двухэтапным процессом, где за фазой угадывания (или ветвления) следует фаза дедуктивности, при которой можно найти как можно больше назначений без угадывания.(Вспомните, например, судоку)
Пример:
S E N D
M O R E
M O N E Y
First step: guess D=1 (remaining guesses = ...)
S E N 1 | D=1
M O R E
M O N E Y
Guess E = 1 (Remaining guesses = ...)
S 1 N 1 | D = 1 | E = 1
M O R 1
M O N 1 Y
We can now deduce that Y = 2 and that the carry value in the second column is 0
0
S 1 N 1 | D = 1 | E = 1, Y = 2
M O R 1
M O N 1 2
Когда вы зашли в тупик, Возврат