算法 | 剪枝函数以及几种形式&回溯法和分支限界法的区别&算法特性&分支限界法的思想&分支限界法的基本步骤&Prim和Kruscal&回溯法的效率

what is 剪枝函数?

是对该问题能否得到最优解或者可行解的约束

限界函数:最优解

约束函数:可行解


回溯法和分支限界法的区别:

异:

|-------------|-------------|
| 回溯法 | 分支限界法 |
| 一次生成/扩展一个结点 | 一次生成所有的孩子结点 |
| BFS | DFS/最小耗费优先 |
| 找到所有解 | 找到最优解 |

同:

|--------------------------------------------|
| 均需要定义解空间,解空间的组织结构一般是树或者是图 |
| 在解空间图上搜索问题的解 |
| 在搜索前需要确定判断条件,该条件用来判断该结点是否为可行解 |
| 在搜索的过程中,对生成的结点需要进行判断,满足判断条件的保留,不满足的就舍弃 |


算法特性

输入、输出、确定、可行、有限


分支限界法的思想:

从根开始 ,常以广度优先搜索的方式或者是最小耗费优先的方式搜索问题的解空间树,首先把根节点放入活节点表中,然后从活节点表中取出根节点,使其成为扩展节点,一次性生成扩展节点的孩子结点,舍弃那些导致不可行解或者不是最优解的节点,把其他合适的节点放入活节点表中,然后从活节点表中选取下一个扩展节点,一直搜索,直到找到解或者是活节点表为空。


分支限界法的基本步骤

  • 定义解空间
  • 确定解空间的组织结构(一般是树或者是图)
  • 搜索解空间(确定限界函数和约束函数),如果采用优先级队列分支限界法,还要确定优先级确定方式

Prim和Kruscal

Prim:稠密图

Kruscal:稀疏图,边数较小


回溯法的效率

不依赖于:确定解空间的时间

依赖于:满足显约束的值的个数

计算约束函数的时间

计算限界函数的时间

相关推荐
Tisfy13 小时前
LeetCode 2833.距离原点最远的点:计数
算法·leetcode·字符串·题解·模拟·计数
浅念-13 小时前
LeetCode 模拟算法:用「还原过程」搞定编程题的入门钥匙
开发语言·c++·学习·算法·leetcode·职场和发展·模拟
t-think13 小时前
操作符详解-C语言(下)
c语言·算法
阿Y加油吧13 小时前
算法二刷复盘|旋转排序数组二分双杀(LeetCode 33 & 153)
算法·leetcode·职场和发展
skywalker_1113 小时前
力扣hot100(9-找到字符串中所有字母异位词;10-和为K的子数组)
算法·leetcode·职场和发展
无敌昊哥战神13 小时前
【LeetCode 491】递增子序列:不能排序怎么去重?一文讲透“树层去重”魔法!
c语言·c++·python·算法·leetcode
阿Y加油吧13 小时前
算法二刷复盘|LeetCode 34&74 二分查找双杀(区间边界 + 二维矩阵)
算法·leetcode·矩阵
TSINGSEE13 小时前
零代码自动化AI算法训练革命:企业级私有化部署DLTM自动化AI训练服务器,告别算法依赖
人工智能·深度学习·算法·机器学习·自动化·ai大模型
啊我不会诶13 小时前
【图论】基环树
算法·深度优先·图论
德卡先生的信箱13 小时前
算法部署(一)-模型压缩,剪枝,蒸馏的区别
算法·剪枝