第六章回溯法6
1一般方法6
28-王后问题6
3子集和数问题6
4图的着色问题6
60/1背包问题什么是回溯回溯回溯入口出口回溯迷宫游戏什么是回溯法回溯法是一个既带有系统性又带有跳跃性的的搜索算法回溯法是以深度优先的方式系统地搜索问题的解,它适用于解一些组合数较大的问题
回溯为什么回溯
回溯(Trackback)是什么
WhatWhyHow应用回溯法解问题时,首先应该明确问题的解空间一个复杂问题的解决方案可以看作是由若干个小的决策组成的,这些决策构成一个决策序列
解决一个问题的所有可能的决策序列就构成了该问题的解空间
解空间中满足约束条件的决策序列称为可行解
在约束条件下使目标达到最优的可行解称为该问题的最优解
通常将解空间画成树的形状,称为解空间树回溯法的基本概念回溯算法求解问题的类型同贪心算法和动态规划算法求解的问题类型相似,问题的解可以表示成一个n维向量,一般地,每个分量有两个或有限多个取值,而且的取值要满足某个事先给定的约束条件
所有可能的取值的组合构成问题的解向量空间,简称解空间
由于一个解向量往往对应问题的某个状态,所以解空间又称为问题的状态空间
一般情况下,问题的解仅是问题解空间的一个子集,要求此子集对应的解必须满足问题的约束条件,满足约束条件的一组取值称为问题的一个可行解,使目标函数取最大或最小值的可行解称为最优解
回溯法在求问题的所有解时,要回溯到根结点,且根结点的所有子树都已被搜索过才结束
回溯法在求问题的任一解时,只要搜索到问题的一个解就可以结束
回溯法在包含问题所有解的解空间树中,按深度优先的策略,从根结点出发搜索解空间树
回溯法搜索至解空间树的任一结点时,先判断该结点是否肯定不包含问题的解
如果肯定不包含,则跳过以该结点为根的子树,逐层向其祖先结点回溯
否则就进入该子树,继续按深度优先的策略进行