算法学习(5):回溯法基础

不进则退,不喜则忧,不得则亡,此世人之常。

一种选优搜索算法,以深度优先,按选优条件搜索,以达到目标。

算法思想

能进则进,进不了则换,换不了就退。

算法要素

首先确定解的形式,定义解空间。

  1. 解空间
    • 解的组织形式{x1, x2, ..., xn}
    • 显约束{0, 1, ..., 0}
    • 解空间
  2. 解空间的组织结构(树)
  3. 搜索解空间
    • 隐约束(剪枝函数):能否得到答案的约束
    • 隐约束包括约束函数(能否有解)和限界函数(能否最优解)
    • 几个术语
    • 扩展结点:正在生成孩子的结点
    • 活结点:已生成,孩子没有全部生成
    • 死结点:所有孩子已经生成
    • 子孙:子树上的所有结点
    • 祖宗:根路径上所有结点

解题秘籍

  1. 定义解空间
  2. 确定解空间组织结构:通常用解空间树表示,有子集树,排列树,m叉树
  3. 搜索解空间:根据隐约束搜索,当前结点不满足就回溯。可行(约束函数)最优(+限界函数)

回溯法解题关键是设计有效的显约束(解分量取值范围)和隐约束

猜你喜欢

转载自www.cnblogs.com/pwn-the-world/p/9501344.html