剪枝思想

剪枝思想

一、剪枝策略的寻觅的方法

  1. 微观方法:从问题本身动身,发现剪枝条件
  2. 宏观方法:从整体动身,发现剪枝条件。
  3. 注意提高效力,这是关键,最重要的。

总之,剪枝策略,属于算法优化范畴;通常利用在DFS 和 BFS 搜索算法中;剪枝策略就是寻觅过滤条件,提早减少没必要要的搜索路径

二、剪枝算法(算法优化)

1、简介

在搜索算法中优化中,剪枝,就是通过某种判断,避免一些没必要要的遍历进程,形象的说,就是剪去了搜索树中的某些“枝条”,故称剪枝。利用剪枝优化的核心问题是设计剪枝判断方法,即肯定哪些枝条应当舍弃,哪些枝条应当保存的方法。

2、剪枝优化三大原则: 正确、准确、高效

搜索算法,绝大部份需要用到剪枝。但是,不是所有的枝条都可以剪掉,这就需要通过设计出公道的判断方法,以决定某1分支的取舍。在设计判断方法的时候,需要遵守一定的原则。

1) 正确性

正如上文所述,枝条不是爱剪就可以剪的。如果随意剪枝,把带有最优解的那一分支也剪掉了的话,剪枝也就失去了意义。所以,剪枝的条件是一定要保证不丢失正确的结果。

2)准确性

在保证了正确性的基础上,我们应当根据具体问题具体分析,采取适合的判断手段,使不包括最优解的枝条尽量多的被剪去,以到达程序“最优化”的目的,可以说,剪枝的准确性,是衡量一个优化算法好坏的标准。

3)高效性

设计优化程序的根本目的,是要减少搜索的次数,使程序运行的时间减少。 但为了使搜索次数尽量的减少,我们又必须花工夫设计出1个准确性较高的优化算法,而当算法的准确性升高,其判断的次数一定增多,从而又致使耗时的增多,这便引出了矛盾。

因此,如何在优化与效力之间寻觅一个平衡点,使得程序的时间复杂度尽量下降,一样是非常重要的。倘若一个剪枝的判断效果非常好,但是它却需要耗费大量的时间来判断、比较,结果全部程序运行起来也跟没有优化过的没甚么区分,这样就太得不偿失了。

三、分类

剪枝算法依照其判断思路可大致分成两类:可行性剪枝及最优性剪枝

1 可行性剪枝

该方法判断继续搜索能否得出答案,如果不能直接回溯。

2 最优性剪枝

最优性剪枝,又称为上下界剪枝,是一种重要的搜索剪枝策略。它记录当前得到的最优值,如果当前结点已没法产生比当前最优解更优的解时,可以提早回溯。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值