算法分析的一般步骤:

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算法相关推荐

  1. prim算法适用条件_Prim算法和Kruskal算法介绍

    一.Prim算法 普利姆(Prim)算法适用于求解无向图中的最小生成树(Minimum Cost Spanning Tree).下面是Prim算法构造最小生成树的过程图解. 选择一个节点开始,比如V1 ...

  2. 最小生成树(普里姆算法【Prim】与克鲁斯卡尔算法【Kruskal】)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  3. 常用十大算法 非递归二分查找、分治法、动态规划、贪心算法、回溯算法(骑士周游为例)、KMP、最小生成树算法:Prim、Kruskal、最短路径算法:Dijkstra、Floyd。

    十大算法 学完数据结构该学什么?当然是来巩固算法,下面介绍了十中比较常用的算法,希望能帮到大家. 包括:非递归二分查找.分治法.动态规划.贪心算法.回溯算法(骑士周游为例).KMP.最小生成树算法:P ...

  4. 普里姆算法(Prim)和克鲁斯卡尔(Kruskal)算法

    普里姆算法(Prim)和克鲁斯卡尔(Kruskal)算法 普里姆算法的基本思想: 取图中任意一个顶点 v 作为生成树的根,之后往生成树上添加新的顶点 w.添加顶点w的条件为:w 和已在生成树上的顶点v ...

  5. 【数据挖掘】高斯混合模型 ( 与 K-Means 每个步骤对比 | 初始参数设置 | 计算概率 | 计算平均值参数 | 计算方差参数 | 计算高斯分布概率参数 | 算法终止条件 )

    文章目录 I . 高斯混合模型 ( 样本 -> 模型 ) II . 高斯混合模型 ( 模型 -> 样本 ) III . 高斯混合模型 与 K-Means 迭代过程对比 IV . 高斯混合模 ...

  6. [迷宫中的算法实践]迷宫生成算法——Prim算法

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)), ...

  7. Python小白的数学建模课-17.条件最短路径算法

    条件最短路径问题,指带有约束条件.限制条件的最短路径问题.例如: 顶点约束,包括必经点或禁止点的限制: 边的约束,包括必经路段.禁行路段和单向路段:无权路径长度的限制,如要求经过几步或不超过几步到达终 ...

  8. 用Prim和Kruskal两种算法,求解最小生成树

    本文通过具体的算法模板题,给出Prim和Kruskal两种求解最小生成树求解过程和代码~ 由浅入深,通俗易懂 题目选自洛谷P3366 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则 ...

  9. 【数据结构与算法python】最小生成树算法-Prim算法

    1.引入 本算法涉及到在互联网中网游设计者和网络收音机所面临的问题:信息广播问题,如网游需要让所有玩家获知其他玩家所在的位置,收音机则需要让所有听众获取直播的音频数据 2.算法介绍 (1)单播解法 信 ...

最新文章

  1. 11、查看及测试网络、配置网络地址、内核及模块管理
  2. 【MAC】Ncnn 编译so文件方案
  3. Centos6.4 本地yum源配置
  4. async-validator 表单验证两种数据的解决方案
  5. halcon资料链接
  6. 修改小程序radio组件的默认样式
  7. 1 python简介与安装
  8. 02、Linux下sshd以及openssl的知识点
  9. 怎样将short[]数组转换成byte[]数组
  10. 关于JSP表单的一些技巧和经验
  11. 银河麒麟操作系统下载地址收集
  12. 网页中使用iconfont图标
  13. Dojo1.11官方教程文档翻译(3.5)动画
  14. 【零信任落地案例】启明星辰中国移动某公司远程办公安全接入方案
  15. 【树莓派换清华源 】 armv7l bullseye
  16. matlab 打开xml文件怎么打开方式,导入 XML 文档
  17. iMatrix平台的权限管理系统是一个基于角色的访问控制系统
  18. 概率论与数理统计-笔记
  19. php xdebug remote_host 多个,卓象程序员:PHPStudy PHPStorm XDebug调试
  20. 2014Esri中国用户大会亮点系列之——ArcGIS平台能力

热门文章

  1. 查看终端是csh还是bash和更改shell设置
  2. 盈建科弹性板6计算_盈建科参数设置
  3. DC-3靶场实战详解
  4. Android 计量单位
  5. Qt 程序中获取 CPUID UUID 等系统信息的方法(win 平台,wmic)
  6. python 数据可视化———绘制饼状图(bar)
  7. 「软件测试」最全面试问题和回答,全文背熟不拿下offer算我输
  8. homework作业
  9. 科技巨头谷歌进军医疗行业,看皮肤病不再去专科医院,靠谱吗?
  10. 帧动画模仿wifi链接信号