回溯算法
参考文章:回溯算法 - 概览,其中还有很多例子
该算法的使用场景
从解决问题每一步的 所有可能选项 里系统 选择出一个可行 的解决方案。
特点:
- 在某一步选择一个选项后,进入下一步,然后面临新的选项。重复选择,直至达到最终状态。
- 回溯算法适合由 多个步骤 组成的问题,并且每个步骤都有多个选项
算法解析
回溯法解决的问题的所有选项可以用 树状结构 表示
- 在某一步有n个可能的选项,该步骤可看作树中一个节点。
- 节点每个选项看成节点连线,到达它的n个子节点。
- 叶节点对应 终结状态。
- 叶节点满足约束条件,则为一个可行的解决方案。
- 叶节点 不满足约束条件,回溯到上一个节点,并尝试其他叶子节点。
- 节点所有子节点均不满足条件,再回溯到上一个节点。
- 所有状态均不能满足条件,问题无解。