算法设计与分析_算法设计与分析(第2版)第5章回溯与分支限界回顾

YI时间|外刊|MM-DFW|机器学习系列
点击上方蓝字,关注给你写干货的松子茶

3446eec7514f56855af958743d6ff628.png

搜索问题的解所在的集合,又称为搜索空间。解空间通常可以安排成树成结构,常用解空间有子集树、排列树等。

回溯算法是遵照某种策略(深度优先、宽度优先、函数优先、宽深结合等)搜索解空间从而找出解的过程。

回溯算法的基本思想

  1. 适用问题:求解搜索问题和优化问题

  2. 搜索空间:树,结点对应部分解向量,树叶对应可行解

  3. 搜索过程:采用系统的方法隐含遍历搜索树

  4. 搜索策略:深度优先、宽度优先、函数优先、宽深结合等

  5. 结点分支判定条件:

    1. 满足约束条件---分支扩张解向量

    2. 不满足约束条件,回溯到该结点的父结点

  6. 结点状态:动态生成

    1. 白结点(尚未访问);

    2. 灰结点(正在访问该结点为根的子树);

    3. 黑结点(该结点为根的子树遍历完成)

  7. 存储:当前路径

回溯算法的适用条件

要使回溯算法得到正确应用,必须满足如下多米诺性质:

假设 P(x1,x2,..., xi)为真表示向量满足某个性质,那么多米诺性质:

P(x1,x2,⋯x(k+1))→P(x1,x2,⋯,xk) , 0

状态空间的搜索实际上是一种树的搜索。一般来说,三种搜索方法各有优劣之处:

  • 广度优先搜索是从初始状态开始,逐层地进行搜索。它的优点是一定能找到解;缺点是空间复杂性和时间复杂性都大。

  • 深度优先搜索是从初始状态开始,逐个分枝地进行搜索。它的优点是空间复杂性和时间复杂性较小;缺点是不一定能找到解。

  • 启发式搜索是从初始状态开始,每次选择最有可能达到终止状态的结点进行搜索。它是最好优先的搜索,优点是一般来说能较快地找到解,即其时间复杂性更小;缺点是需要设计一个评价函数,并且评价函数的优劣决定了启发式搜索的优劣。

 回溯算法的设计步骤

  1. 定义搜索问题的解向量和每个分量的取值范围

    1. 解向量为

    2. 确定 xi的可能取值的集合为Xi, i= 1,2, … , n。

  2. 当 x1, x2, … , xk-1确定以后计算 xk取值集合Sk。 

  3. 确定结点儿子的排列规则

  4. 判断是否满足多米诺性质

  5. 搜索策略----深度优先、宽度优先等

  6. 确定每个结点分支约束条件

  7. 确定存储搜索路径的数据结构

分支限界

  • 分支限界回溯法变种,用于求解组合优化问题

  • 搜索空间中满足约束条件的解称为可行解

  • 使得目标函数达到极大(或极小)的解称为最优解

  • 立代价函数是函数值以该结点为根的搜索树中的所有可行解的目标函数值的上界,父结点的代价不小于子结点的代价

  • 界函数:当时已经得到的可行解的目标函数的最大值(最小值)

  • 搜索中停止分支的依据:不满足约束条件或者其代价函数小于当时的界

欢迎评论哦,纠错评论建议均可

d690a10d555a57259ae26e6137ab60c6.gif

bc448bbd86b4450a951d6e1f3d683a41.png

-THE END-

版权声明:以上内容为松子茶公众号原创作品,版权归属作者所有。未经作者授权,严禁转载或镜像,否则将依法追究相关行为主体的法律责任。欢迎各位朋友转发朋友圈分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值