基本算法prim学习总结性文章
2016-03-08 19:25
162 查看
Prim算法是最简单也是最直观的求最小生成树的算法,与kruskal相比,具有代码量小的特点,避免了kruskal寻找祖先等复杂数据结构,在ACM比赛中,因为时间紧张,采用prim的情况无疑比kruskal更多。
prim需要的数据结构有:
int miniestPoint; 这轮路径最短的点
int miniestDist; 这轮最短的路径
int currentDist[]; 记录每个点当前的路径长度
bool ifVisited[]; 记录哪些点已经在生成树里了。
int totalLength; 记录生成树总路径长度
prim的基本流程如下:
1.设置一个初始顶点,令初始顶点的ifVisited为true,代表该点已经在生成树里;
2.初始miniestDist为inf,设置miniestPoint为初始顶点;
3.还是进行循环:
直到所有的点都在生成树里面。
prim需要的数据结构有:
int miniestPoint; 这轮路径最短的点
int miniestDist; 这轮最短的路径
int currentDist[]; 记录每个点当前的路径长度
bool ifVisited[]; 记录哪些点已经在生成树里了。
int totalLength; 记录生成树总路径长度
prim的基本流程如下:
1.设置一个初始顶点,令初始顶点的ifVisited为true,代表该点已经在生成树里;
2.初始miniestDist为inf,设置miniestPoint为初始顶点;
3.还是进行循环:
for(int i=1;i<=v;i++){ if(ifVisited[i]==false&¤tDist[i]>g[miniestPoint][i]){ currentDist[i]=g[miniestPoint][i]; } } miniestDist=inf; for(int i=1;i<=v;i++){ if(ifVisited[i]==false&¤tDist[i]<miniestDist){ miniestPoint=i; miniestDist=currentDist[i]; } } totalLength+=miniestDist;
直到所有的点都在生成树里面。
相关文章推荐
- ZOJ 3926 Parity Modulo P(XJB)
- ZOJ 3923 In the Rain(数学)
- C++中的继承和组合区别使用
- 项目2胖子不想说体重
- 弱网络下的游戏服务器设计
- 文章标题
- 代码才是公司资产
- 新学期新计划
- 第二周项目4-用循环求
- 从源码的角度理解Android消息处理机制
- 第一次上机实践-项目5-斐波那契数列
- 学习python前需要了解的东西——————-python学习流程和资源
- asp.net预定义的HttpModule
- C语言内存管理(内存池)
- HDUACM2016
- Grunt学习——创建子图集
- 性能指标
- Tomcat中server.xml参数说明
- 不使用配置文件动态注册HttpModule
- gcc 编译的四大过程