prim算法适用条件_prim算法
算法分析的一般步骤:
1、文字描述:如果一个算法文字描述不清楚,就说明思路不清楚,也不可能写好。
prim算法是实现图的最小生成树。既然是图,就假设包含n个顶点,m条边。prim算法是从顶点出发的,其算法时间复杂度与顶点数目有关系。
(注意:prim算法适合稠密图,其时间复杂度为O(n^2),其时间复杂度与边得数目无关,而kruskal算法的时间复杂度为O(eloge)跟边的数目有关,适合稀疏图。)
算法思路:从某个顶点开始,假设v0,此时v0属于最小生成树结点中的一个元素,该集合假设u,剩下的V-v0为待判定的点,此时选取u中的顶点到V-v0中顶点的一个路径最小的边,并且将其中非u中的顶点加入到u中,循环直到u中的顶点包含图所有的顶点为止。
算法在选取最小路径的时候需要优化,具体思路:w[]数组保存各个顶点的最短路径,b[]数组保存到i顶点最短路径的顶点,比如,到0号顶点最短的路径是,那么w[0]=,b[0]=3;这样每次找最小路径就不是o(n*n)的代价了。
2、举例说明:
3、程序实现与说明:
#include #include
#define count 6
void prim(int a[][count],int u[],int w[],int b[],intn)
{int i=0,j=0,m=0,min=100;for(i=0;i
{
u[i]=0;//初始化0,说明没有访问过
w[i]=a[0][i];//初始每个顶点最短路径为到0顶点的距离
b[i]=0;//初始每个顶点都指向0顶点
}
u[0]=1;//赋值1,从0顶点开始
for(i=1;i
{
min=100;
j=0;for(m=1;m
{if(!u[m] && w[m]
{
min=w[m];
j=m;
}
}
u[j]=1;//把下一个顶点标为已访问
printf("%d,%d\n",j+1,b[j]+1);//输出结果
for(m=1;m
{if(!u[m] && a[j][m]
{
w[m]=a[j][m];
b[m]=j;
}
}
}
}intmain()
{intu[count],w[count],b[count],a[count][count];int i=0,j=0;for(i=0;i
{for(j=0;j
{
a[i][j]= 100;
}
}
a[0][1]=6,a[0][2]=1,a[0][3]=5;
a[1][0]=6,a[1][2]=5,a[1][4]=3;
a[2][0]=1,a[2][1]=5,a[2][3]=5,a[2][4]=6,a[2][5]=4;
a[3][0]=5,a[3][2]=5,a[3][5]=2;
a[4][1]=3,a[4][2]=6,a[4][5]=6;
a[5][3]=2,a[5][2]=4,a[5][4]=6;
prim(a,u,w,b,count);return 0;
}
4、时间复杂度:o(n*n)
prim算法适用条件_prim算法相关推荐
- prim算法适用条件_Prim算法和Kruskal算法介绍
一.Prim算法 普利姆(Prim)算法适用于求解无向图中的最小生成树(Minimum Cost Spanning Tree).下面是Prim算法构造最小生成树的过程图解. 选择一个节点开始,比如V1 ...
- 最小生成树(普里姆算法【Prim】与克鲁斯卡尔算法【Kruskal】)
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- 常用十大算法 非递归二分查找、分治法、动态规划、贪心算法、回溯算法(骑士周游为例)、KMP、最小生成树算法:Prim、Kruskal、最短路径算法:Dijkstra、Floyd。
十大算法 学完数据结构该学什么?当然是来巩固算法,下面介绍了十中比较常用的算法,希望能帮到大家. 包括:非递归二分查找.分治法.动态规划.贪心算法.回溯算法(骑士周游为例).KMP.最小生成树算法:P ...
- 普里姆算法(Prim)和克鲁斯卡尔(Kruskal)算法
普里姆算法(Prim)和克鲁斯卡尔(Kruskal)算法 普里姆算法的基本思想: 取图中任意一个顶点 v 作为生成树的根,之后往生成树上添加新的顶点 w.添加顶点w的条件为:w 和已在生成树上的顶点v ...
- 【数据挖掘】高斯混合模型 ( 与 K-Means 每个步骤对比 | 初始参数设置 | 计算概率 | 计算平均值参数 | 计算方差参数 | 计算高斯分布概率参数 | 算法终止条件 )
文章目录 I . 高斯混合模型 ( 样本 -> 模型 ) II . 高斯混合模型 ( 模型 -> 样本 ) III . 高斯混合模型 与 K-Means 迭代过程对比 IV . 高斯混合模 ...
- [迷宫中的算法实践]迷宫生成算法——Prim算法
普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)), ...
- Python小白的数学建模课-17.条件最短路径算法
条件最短路径问题,指带有约束条件.限制条件的最短路径问题.例如: 顶点约束,包括必经点或禁止点的限制: 边的约束,包括必经路段.禁行路段和单向路段:无权路径长度的限制,如要求经过几步或不超过几步到达终 ...
- 用Prim和Kruskal两种算法,求解最小生成树
本文通过具体的算法模板题,给出Prim和Kruskal两种求解最小生成树求解过程和代码~ 由浅入深,通俗易懂 题目选自洛谷P3366 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则 ...
- 【数据结构与算法python】最小生成树算法-Prim算法
1.引入 本算法涉及到在互联网中网游设计者和网络收音机所面临的问题:信息广播问题,如网游需要让所有玩家获知其他玩家所在的位置,收音机则需要让所有听众获取直播的音频数据 2.算法介绍 (1)单播解法 信 ...
最新文章
- 11、查看及测试网络、配置网络地址、内核及模块管理
- 【MAC】Ncnn 编译so文件方案
- Centos6.4 本地yum源配置
- async-validator 表单验证两种数据的解决方案
- halcon资料链接
- 修改小程序radio组件的默认样式
- 1 python简介与安装
- 02、Linux下sshd以及openssl的知识点
- 怎样将short[]数组转换成byte[]数组
- 关于JSP表单的一些技巧和经验
- 银河麒麟操作系统下载地址收集
- 网页中使用iconfont图标
- Dojo1.11官方教程文档翻译(3.5)动画
- 【零信任落地案例】启明星辰中国移动某公司远程办公安全接入方案
- 【树莓派换清华源 】 armv7l bullseye
- matlab 打开xml文件怎么打开方式,导入 XML 文档
- iMatrix平台的权限管理系统是一个基于角色的访问控制系统
- 概率论与数理统计-笔记
- php xdebug remote_host 多个,卓象程序员:PHPStudy PHPStorm XDebug调试
- 2014Esri中国用户大会亮点系列之——ArcGIS平台能力