回溯法又称为试探法,基本思路是:在用某种方法找出解的过程中,若中间项结果满足所解问题的条件,则一直沿这个方向搜索下去,直到无路可走或无结果,则开始回溯,改变其前项的方向(或值)继续搜索。若其上一项的方向(或值)都已经测试过,还无路可走或无结果,则再继续回溯到更前一项,改变其方向(或值)继续搜索。若找到了一个符合条件的解,则停止或输出这个结果;否则,继续回溯下去,直到回溯到问题的开始处(不能再回溯),此时已经找到了全部的解。如果仍没有找到符合条件的解,则表示此问题无解。
用回溯法求解问题的一般步骤如下:
- 针对所给出的问题,定义问题的解空间;
- 确定易于搜索的解空间结构;
- 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。