回溯法(又叫试探法)是属于穷举的子集,对于许多的问题,当我们需要找到某些解集或者满足某种要求的最优解的时候,回溯法往往是很朴素和简单的一种算法。从数学的角度来说,比较适合一些组合数较大的问题,比如五子棋博弈算法,最短路径(最小代价)等,使用回溯算法往往会得到正确的答案,但是回溯算法由于是采用穷举的方式,所以运行时间一般是很大的,当然可以通过各种优化手段来降低,而许多的问题--------回溯法是最合适(有可能是唯一)的解决方式。
基本概念
解空间:对于一个问题实例,所有有效解构成了该问题的解空间(比如八皇后问题中每落一颗棋子就会产生许 8 个可能落子的地方,这些所有可能的地方就是对于当前问题的解空间)比如n = 3时,0-1背包问题解空间
约束条件:有效解的要求
限界函数:得不到最优解的结点
扩展节点:当前正在产生子结点的结点称为扩展结点
活结点:一个已经被生成的但是还没有生成自己全部子节点的结点
死结点:生成了所有子结点的结点
子集树:当所给问题是从n个元素的集合