mwbr.net
当前位置:首页 >> Prim算法适用于边数较()的图? >>

Prim算法适用于边数较()的图?

边数较少可以用Kruskal,因为Kruskal算法每次查找最短的边。 边数较多可以用Prim,因为它是每次加一个顶点,对边数多的适用。

指的是最小生成树的一种算法么,和dijstra算法思想接近, 但是第一步是先将权最小的边的两个点加入以确定set。 然后一步步 从un set加入与这个集合距离最短的点,然后更新这个set到unset的每一点的最短距离, 直到全部加入

稠密图的(也就是 边数为O(nlog2n) ~O(n^2)的无向图)

不能。Prim是求最小生成树的算法,不能等效为最短路径。如图(参考自《王道考研系列——数据结构》) 但是Dijkstra算法,和Floyd算法可以求最短路径。

边数较少可以用Kruskal,因为Kruskal算法每次查找最短的边。 边数较多可以用Prim,因为它是每次加一个顶点,对边数多的适用。

O(n^2), O(elog2e) 求这两个结果的过程任何一本比较全面的数据结构教科书上都有的

贪心过程. 首先,把图中的点分成两种,已连通和未连通的,我把它们分别称为"黑"和"白"点. 一开始时,图中全是白点,没有黑点.算法的第一步,随机选出一个白点,染成黑色. 然后开始一个重复的过程: 从当前图的边中寻找这样的一些边:它的其中一个端点是黑...

不好意思吖按照图弄那两个中间数组太久了。。。实现方法也有不同。我跟您说说我学的通用实现方法吧! 点集合:A,代表已经扩展到的点。 边集合B:代表待考虑的边,一开始为空。 一开始从任意点出发,如0.此时集合A中只有点0。将和A相邻的所有边...

主要有两个: 1.普里姆(Prim)算法 特点:时间复杂度为O(n2).适合于求边稠密的最小生成树。 2.克鲁斯卡尔(Kruskal)算法 特点:时间复杂度为O(eloge)(e为网中边数),适合于求稀疏的网的最小生成树。

Prim算法: #include #include typedef int VRType; typedef char InfoType; #define MAX_NAME 3 /*顶点字符串的最大长度+1*/ #define MAX_INFO 20 /*相关信息字符串的最大长度+1*/ typedef char VertexType[MAX_NAME]; #define INFINITY 32767 ...

网站首页 | 网站地图
All rights reserved Powered by www.mwbr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com