回溯法
一句话介绍:回溯法有“通用解题法”之称,可以系统的搜索一个问题的所有解或任一解,他是一个既带有系统性又带有跳跃性的搜索算法。
回溯法的解空间树搜索过程:
在问题的解空间树中,按照深度优先搜索策略,从根节点出发搜索解空间树,搜索到任一结点时,先判断此节点是否包含所求问题的解,如果肯定不包含,则跳过此节点的所有子树,逐层向其祖先节点回溯,否则,进入该子树,继续以深度优先策略搜索。
回溯法的搜索原则:
-
回溯法求解问题的所有解时,要回溯到根,且根节点的所有子树都已被搜索到才结束;
-
回溯法求解问题的一个解时,只要搜索到问题的一个解就可以结束。
-
回溯法适合求解组合数较大的问题。
回溯法的算法框架
1. 问题的解空间:
用回溯法求解问题时,需要明确定义问题的解空间,且该问题的解空间应该至少包含此问题的最优解,通常将解空间组织成树或图的形式。
2. 回溯法的基本思想:
回溯法从根节点出发,深度优先搜索整个解空间树,这个开始节点成为活节点,同时成为当前的扩展节点,自此向纵深方向继续搜索至一个新节点,这个新节点则成为新的活节点,并成为当前的扩展节点&#x