回溯与分支限界算法c语言,回溯法与分支限界法

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

回溯法(Back Tracking Algorithm)与分支限界法(Branch and Bound Algorithm)都是基本的算法设计策略,属于树的搜索技术的范畴。在使用这两种算法求解问题前,均需要把解空间规划成一棵解空间树,并且在求解过程中使用剪枝策略来提高搜索效率。

回溯法

也称试探法,可以把它看成是一个在约束条件下对解空间树进行深度优先搜索的过程,并在搜索过程中剪去那些不满足条件的分支。当用回溯法搜索到解空间树的某个结点时,如果发现当前路径不满足约束条件或不是历史最优时,则放弃对该结点的子树的搜索,并逐层向其祖先结点返回。否则,进入该结点的子树,继续进行深度优先搜索。实质上,这是一个先根遍历解空间树的过程,只是这个棵树不是遍历前预先建立的,而是隐含在遍历过程当中的。

相似思想:图的深度优先搜索,二叉树的后序遍历

回溯法的基本行为是搜索,搜索过程使用剪枝函数来为了避免无效的搜索。剪枝函数包括两类:1. 使用约束函数,剪去不满足约束条件的路径;2.使用限界函数,剪去不能得到最优解的路径。

参考博客

分支限界法

以最小代价优先的方式在解空间树上进行搜索,它可以找出满足问题约束的一个可行解,或者是从满足约束条件的可行解中找出一个使得目标函数达到极值的最优解。这里的可行解在搜索树中表现为一条由根到叶子结点的路径,这条路径上权值的和为可行解的值。其中,最优解就是使可行解的值达到最优的那条路径。分支限界算法的核心思想就是增加更多的约束条件,剪掉更多的分支,当对当前的树结点进行扩展时,一次性产生其所有儿子结点,并抛弃那些不可能产生可行解或最优解的结点,即剪枝;对于留下的儿子结点,计算一个函数值(限界),然后选取一个最有利的结点继续进行扩展,使得搜索朝着最优解的分支推进。重复这个过程直到找到最优解或没有可扩展的结点。

相似思想:图的广度优先算的,二叉树的层序遍历

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值