贪心法--最小生成树的Prim算法和Kruskal算法
来源:互联网 发布:nginx 打印php错误 编辑:程序博客网 时间:2024/06/11 19:16
一,贪心法和分治法,DP法的本质不通在于: 只选择一个子问题求解
二,贪心法的特点:
①,快
②不能保证得到最优解
三,贪心法的关键是:分解方案和贪心选择方案
以最小生成树为例进行说明:
Prim算法(最近点策略):给定无向联通带全图 顶点集v={1,2,3,4,5..n.} 边集E={无向图中的所有边}
S为部分解 C候选集 w(s,i)(i∈C)是指候选集与S集合之间的权重
循环(终止条件是 所有的节点(1...n)全部被选入S集合 所以循环n-1次)
①初始化 S={1} c = E
②a. x = argmin(w(s,i)) i∈候选集
b. s = s∪{x}
c. c = c-{x}
Kruskal算法(最短边策略)给定无向联通带全图 v={1,2,3,4,5..n.} E集合
将所有的边从小到大排序(快速排序)
循环(终止条件是 ②中的b段循环执行n-1次)
①初始化:S = V,C = E
②a.x = argmin(w(e)) e属于C
b.if(X的两个端点分属于不同的联通分支)
T = T U {x};
c.c = c - {x}
贪心法的基本构件:
1.部分解 S
2.候选集C
3.贪心选择函数select()
4.约束函数 constraint() 判断贪心选择的结果是否满足约束
5.完整解的函数 complete(S) 判断当前解是否是完整解
贪心法框架:
返回值 贪心算法(参数列表){
//初始化
S= S0; C= C0;......
while(complete(S)){
x = select(c);
if(consitriant(X)){//审查约束条件
S = S ∪ x;//解扩展
C = C - x;//候选集以及参数调整
}
}
}
- 贪心法--最小生成树的Prim算法和Kruskal算法
- 最小生成树的prim算法和kruskal算法
- 图的最小生成树:Prim算法和Kruskal算法
- 关于最小生成树的Prim算法和Kruskal算法
- 最小生成树--Prim和Kruskal算法
- 最小生成树 prim算法和kruskal
- 最小生成树Prim和Kruskal算法
- 最小生成树算法:prim和kruskal
- 最小生成树 ,prim 和Kruskal 算法
- 最小生成树prim和kruskal算法
- Kruskal和Prim--最小生成树算法
- 最小生成树的Prim和Kruskal算法
- 最小生成树算法 :Prim算法 和 Kruskal 算法
- 最小生成树算法—Kruskal算法和Prim算法
- 最小生成树-Kruskal算法-Prim算法
- 最小生成树 Prim算法 Kruskal算法
- 最小生成树Prim算法Kruskal算法
- 最小生成树Prim算法,Kruskal算法
- Masonry 解析
- 防止移动硬盘休眠脚本
- Vitamio 自定义视频缓存路径
- System.Data.SqlClient.SqlException: 用户 'sa' 登录失败。
- 测试1031
- 贪心法--最小生成树的Prim算法和Kruskal算法
- CentOS 7.x 下配置iSCSI网络存储
- leetcode刷题系列:392. Is Subsequence
- 测试1031
- Log Aggregator 비교 - Scribe, Flume, Fluentd, logstash
- Django下测试与调试REST API的方法
- python核心编程-第12章课后练习答案
- Ubuntu 16.04与Windows 10优缺点对比,个人理解
- 关于金融类数据运算的技术总结