Consider writing a program for solving a problem like the Rubik's
be. One option is to write the program in a programming language ch as C. One would then
write some routines for modeling the dynam of the problem and other routines for capturing
the control; namely, ich action to try next, when and where to backtrack, etc. This is ac lly
the most common option for solving combinatorial problems and
s the approach taken for example in (Kor98). The advantage of this proach is that it can be
very efficient at run time; the disadvantage, that it may be quite inefficient at modeling
time. That is, building good specialized program takes time, and usually involves a tedious
ocess of debugging and tuning.