搜索方法中的剪枝优化
来源:互联网 发布:js修改button的文字 编辑:程序博客网 时间:2024/06/17 05:30
剪枝的原则
正确性:我们就应当利用“必要条件”来进行剪枝判断。也就是说,通过解所必须具备的特征、必须满足的条件等方面来考察待判断的枝条能否被剪枝
准确性
高效性:考虑剪枝的时间开销。如果剪枝判断的时间消耗过多,就有可能减小、甚至完全抵消提高判断准确性所能带来的优化效果
剪枝的类别
- 可行性剪枝。
- 最优性剪枝(上下界剪枝)。
可行性剪枝
对于一条合法的路径,除出发点和目标格子外,每一个中间格子都必然有“一进一出”的过程。所以在搜索过程中,必须保证每个尚未经过的格子都与至少两个尚未经过的格子相邻
最优性剪枝
①在搜索开始之前,我们可以使用某种高效方法(如贪心法等)求出一个较优解,作为初始下界,经常可以剪去大量明显不可能的枝条。
②在广度优先搜索中,也是可以使用最优性剪枝的,也就是我们常说的分枝定界方法。
总结
剪枝方法无论多么巧妙,都不能从本质上降低搜索算法的时间复杂度,这是不争的事实。因此,我们在动手设计一个搜索算法之前,不妨先考虑一下是否存在着更为有效的方法。
还有一个编程复杂度的问题。我们对一个搜索算法使用了很多优化技巧,虽然可能使程序的时间效率得到一定的提高,但却往往要消耗大量的编程时间,很容易造成“拣了芝麻,丢了西瓜”的结果。
具体问题具体分析
阅读全文
0 0
- 搜索方法中的剪枝优化
- 搜索 和优化剪枝
- 搜索中的剪枝技术
- 搜索算法的剪枝优化
- 搜索中的剪枝算法小议
- 谈搜索算法的剪枝优化(转载)
- 搜索的优化算法——剪枝
- Sticks ---- 深度优先搜索+剪枝优化
- 谈搜索算法的剪枝优化
- 搜索的优化算法——剪枝
- 搜索剪枝
- 搜索剪枝
- 搜索 剪枝
- 搜索剪枝
- 搜索剪枝
- 剪枝搜索
- 搜索算法的剪枝优化(Google笔试题)
- 递归优化 POJ1579 记忆化搜索 剪枝 去掉重复计算
- JAVA设计模式之享元模式
- HDU1013 水题字符串 九余数定理
- bitblt与StretchDIBits
- 一个轻量级的java web开发框架,0配置
- 自媒体淘客的优势
- 搜索方法中的剪枝优化
- 日常笔记
- iOS中OpenGL是如何将帧缓冲(frameBuffer)渲染到屏幕上的? OpenGL iOS端渲染流程
- C语言预处理命令总结大全
- MyBatis之多表之间的联系与缓存
- 预约提醒功能(类似闹钟)总结
- 操作系统基础01
- Mysql基本语法
- Java Jedis操作Redis示例(三)——setnx/getset实现分布式锁