【算法】【殊途同归】搜索算法之(深度优先 || 广度优先) (约束条件 || 限界函数)
对于所谓的分支限界法和回溯法,我们完全可以更加灵活,请看表格。
深度优先 | 广度优先 | 约束条件 | 限界函数 | 算法 | 策略 |
---|---|---|---|---|---|
√ | √ | 回溯法 | 局部判定 | ||
√ | √ | √ | 分支限界法 | 局部判定 | |
√ | √ | √ | 加限界的回溯法 | 局部判定 | |
√ | 枚举法 | 全局判定 | |||
√ | 枚举法 | 全局判定 |
前两种是我们常见的,但是,事实上,这几种方式, 怎么玩都行,看实际需求了。
一般来说,剪枝策略使用 约束条件 + 限界函数,然后再配合深度优先或者广度优先,是最好不过的了,也就是后两种。
这样一来,能够尽可能地剪枝,以提高搜索效率。
而最后两种枚举法,则没有剪枝策略,是一种全局判定方式,是最低效的。
总之,这三种常见的搜索算法,无非就是
- 枚举策略
- 深度优先
- 广度优先
- 剪枝策略
- 约束条件
- 限界函数
枚举策略 | 剪枝策略 |
---|---|
深度优先 | 约束条件 |
广度优先 | 限界函数 |
其中,枚举策略有且仅有一种,剪枝策略则随意,然后就有了经典的枚举法(蛮力法)、回溯法和分支限界法。
搜索算法的学习策略
已经显而易见了,这4种方式,单独学明白,懂逻辑,会实现,然后再组合起来使用就OK了。
预测思想:限界函数
限界函数是通过对子树未来的上界/下界的预测,来评定是否需要继续生成,方法就是按照平均值排序后,乘以剩余容量。
具体实例可以参考
0/1 knapsack problem using branch and bound
分支限界法-01背包问题
限界函数和约束条件的目标
- 约束条件,是为了去掉不可行解,从而进行剪枝
- 限界函数,是为了去掉非最优解,从而剪枝,但是它依然是可行解
明确了这两个目标,就能够更加针对性选择了,如果题目求多个可行解,那么就不可能使用限界函数。
【算法】【殊途同归】搜索算法之(深度优先 || 广度优先) (约束条件 || 限界函数)相关推荐
- 广度优先搜索算法和深度优先搜索算法——关于路径搜索的问题解决
广度优先搜索算法和深度优先搜索算法 目录 广度优先搜索算法和深度优先搜索算法 深度优先搜索算法 3.升级:用栈模拟深度优先,因为栈具有==先进先出==性质 广度优先算法 理解 升级:用队列实现广度搜索 ...
- ES聚合算法原理深入解读:深度优先算法(DFS)和广度优先算法(BFS)(三)
本文为:ES聚合算法原理深入解读:深度优先算法(DFS)和广度优先算法(BFS)第三篇 深度优先算法(DFS)和广度优先算法(BFS):DFS 和 BFS 在 ES 中的应用(一) 深度优先算法(DF ...
- ES聚合算法原理深入解读:深度优先算法(DFS)和广度优先算法(BFS)(一)
本文为 ES聚合算法原理深入解读:深度优先算法(DFS)和广度优先算法(BFS)第一篇 深度优先算法(DFS)和广度优先算法(BFS):DFS 和 BFS 在 ES 中的应用(一) 深度优先算法(DF ...
- Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
对算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)用Java实现其中的伪代码算法,案例也采用算法导论中的图. import java.util.ArrayList; import java ...
- 深度优先算法(DFS)和广度优先算法(BFS)时间复杂度和空间复杂度计算精讲
现在我们设定任务为到山东菏泽曹县买牛逼,需要利用深度优先算法(DFS)和广度优先算法(BFS)在中国.省会.市.区县这张大的树中搜索到曹县,那么这个任务Goal就是找到曹县. 假如图的最大路径长度m和 ...
- 算法详解之深度优先搜索算法
14天阅读挑战赛 文章目录 1.深度优先搜索(Depth-First Search,DFS)介绍 2.深度优先搜索算法思想 3.深度优先搜索算法步骤: 4.深度优先搜索算法的应用 1.深度优先搜索(D ...
- 人工智能笔记 2.1人工智能导论- 1.什么是AI,深度优先,广度优先,最优路径
人工智能是什么 人工智能是关于算法通过表示得以呈现的约束条件而表示支持针对思维,感知和行动的有机体模型 (algorithms enabled by constriants exposed by re ...
- 算法思想 - 搜索算法
本文主要介绍算法中搜索算法的思想,主要包含BFS,DFS. 搜索相关题目 深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此. BFS 广度优先搜索的搜索过程有点像一层一层地进行 ...
- 分支界限算法【0-1背包问题】按照优先队列式(LC)分支限界法求解0-1背包问题, 并给出限界函数,并画出该实例的状态空间树。
目 录 回溯算法[0-1背包问题] 分支界限算法[0-1背包问题] 作业题(期末考试必考) 小结 回溯算法[0-1背包问题] 分支界限算法[0-1背包问题] 解决思路:采用优先队列式分支限界 Ø ...
最新文章
- 个性化推荐系统原理介绍(基于内容推荐/协同过滤/关联规则/序列模式/基于社交推荐)...
- 补习系列(18)-springboot H2 迷你数据库
- (转)div+css布局之float与clear的用法
- IGBT 直通短路过程问题分析
- MTK6577+Android GPIO
- 用python写诗歌网站要注意什么_如何利用深度学习写诗歌(使用Python进行文本生成)...
- 冰蝎下的反弹shell连接msfconsole
- Linux下手动安装screen
- Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。
- 【数学】B066_LQ_拯救阿拉德大陆(普通容理 / 进阶(写法疑惑))
- http 301、302、304、400、405、415状态码解释
- 生成计算机组成原理:8位算术逻辑运算实验数据
- OmniPlan-Mac上使用的项目管理软件
- 保姆级教程:如何搭建一个专属云平台?
- 远程办公经验为0,如何将日常工作平滑过度到线上?
- 1 个月吐血准备,我吃透了300道Java大厂面试题,这次绝对稳了!
- JDK的安装和配置(图文小白版)
- CSS 图片垂直居中的解决办法
- 论文阅读笔记: (2022 TPAMI) Ultra Fast Deep Lane Detection with Hybrid Anchor Driven Ordinal Classification
- 紫光输入法linux,Linux中巧妙安装红旗紫光输入法(转)
热门文章
- Request的getParameter和getAttribute方法的差别
- HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)
- css3实现头像旋转360度
- ios 内存使用陷阱
- VS2010 RTM
- 如何在ftp服务器下查找文件夹,查找ftp服务器下的文件夹名
- centos 多个mysql,Centos中安装多个MySQL数据的配置实例
- C语言简单程序情话,给你一份程序员的“科技情话”,赶在双十一前脱单吧
- python polar函数_Python可视化很简单,可是你会吗?python绘制饼图、极线图和气泡图,让我来教教你吧,一文教会!!!...
- zemax光学设计超级学习手册_穿越十年的一个ZEMAX光学设计案例