算法分析的一般步骤:

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. OC实用转换model的工具
  2. Python3中的字符串
  3. js base64编码解码 btoa atob 函数简介
  4. python中的time库安装步骤-Python time库基本操作方法
  5. VTK:可视化算法之MarchingCases
  6. java 悬浮提示框_表格(悬浮框提示)
  7. mac安装python环境教程_python mac下安装虚拟环境的图文教程
  8. 喜用神最正确的算法_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)...
  9. LeetCode 124. Binary Tree Maximum Path Sum
  10. 嵌入式linux环境搭建
  11. 微信公众号爬虫方案分析
  12. 光环PMP 三模模拟题
  13. bluefish4框架平台
  14. 计算机应用基础知识1
  15. git本地仓库关联远程仓库的两种方式
  16. eNSP:实现不同网段不同vlan主机之间的互访(配置三层交换)
  17. oracle ora 00910,ORA-00910: 指定的长度对于数据类型而言过长
  18. NISP二级题库总结
  19. java实现三宫格及其扩展_使用css伪类before/after实现 正方形三宫格、正方形六宫格、正方形九宫格...
  20. Bat+JScritp解决ADSL+希网DDNS的地址更新

热门文章

  1. 亮剑JVM的9款编程语言杀手开发利器重磅推荐
  2. HBase数据压缩方式的介绍与实战
  3. 直播系统具备哪些模块才能完整运用于课堂直播、远程教育等方面?
  4. 理解linux下的 eth0,eth1,eth2,lo 网卡配置
  5. CDMA在卫星移动通信中的应用(转)
  6. DDR GDDR HBM
  7. 获取环状要素的外环点、内环点
  8. GPT-3:一个新应用生态系统诞生了
  9. 向量叉乘转为反对称矩阵相乘
  10. 【Unity】虚拟现实 VRTK插件使用教程(一)插件基本配置