关于图ADT的一些算法——最小生成树算法(普利姆/Prim算法)
2011-03-08 22:48
316 查看
连通的带权无向图
问题:用最小的权值连通所有的点,即从上图删去一些线,使留下的线的权值的总和最小且每个点都连通。
第一步:先标记a,待选的有a->i,a->f,a->b,选择最小的a->i;
第二步:添加i,与(a,i)中某个点相连的边做备选,有:a->b,a->f,选择最小的a->f;
第三步:添加f,与(a,i,f)中某个点相连的边做备选,有a->b,f->g,选择最小的f->g;
第四步:添加g,与(a,i,f,g)中某个点相连的边做备选,有a->b,g->e,g->d,选择最小的g->d;
第五步:添加d,与(a,i,f,g,d)中某个点相连的边做备选,有a->b,g->e,d->c,d->h,选择最小的d->h;
第六步:添加h,与(a,i,f,g,d,h)中某个点相连的边做备选,有a->b,g->e,d->c,选择最小的d->c;
第七步:添加c,与(a,i,f,g,d,h,c)中某个点相连的边做备选,有a->b,g->e,c->e,c->b,选择最小的c->e;
第八步:添加e,备选的有a->b,e->b,c->b,选择最小的a->b;
第九步:添加b,所有点都已包括,算法结束。
参考文献:《Data Abstraction and Problem Solving with C++:Walls and Mirrors,3rd Edition》 Frank M.Carrano &Janet J.Prichard著 《数据结构与C++高级教程》田玉敏译 清华大学出版社
相关文章推荐
- 关于最小生成树的一些性质
- 关于最小生成树的一些理解
- 关于最小生成树算法的理解
- 关于最近做一些最小生成树(MST)题的想法
- 关于最小生成树中的 Kruskal(克鲁斯卡尔)算法
- 一些算法的MapReduce实现——最小生成树
- HDU 3371 Connect the Cities 最小生成树(和关于sort和qsort的一些小发现)
- 关于图的常用算法——Dijkstra单源最短路径、Floyd多源最短路径、Prim和Kruskal最小生成树算法
- 关于最小生成树的 prim 算法
- 一些竞赛算法题目及解答(角谷步数,数组非排序正负数分离, 最小方差生成树)
- 关于图ADT的一些算法——最短路径算法
- 最小生成树算法(2)------------Kruskal
- 最小生成树算法
- 最小生成树-Kruskal算法(模板) 蓝桥杯 - 算法训练 - ALGO - 6 安慰奶牛(克鲁斯卡尔)
- Prim 最小生成树算法
- 最小生成树(普利姆算法、克鲁斯卡尔算法) .
- 第十三周 项目1 -验证算法 --验证最小生成树的普里姆算法
- 【算法和数据结构】图(三)最小生成树之Kruskal算法(C++实现)
- 基于c#的两种最小凸包的生成(三硬币法与串行算法)
- 算法学习 POJ 1751 highways 最小生成树