当前位置:首页 » 操作系统 » 稀疏图算法

稀疏图算法

发布时间: 2022-10-24 00:15:43

‘壹’ 普里姆算法是什么

在计算机科学中,普里姆(也称为Jarník's)算法是一种贪婪算法,它为加权的无向图找到一个最小生成树 。

相关简介:

这意味着它找到边的一个子集,能够形成了一个包括所有顶点的树,其中在树中所有边的权重总和最小。该算法通过从任意起始顶点开始一次给树增加一个顶点来操作,在每个步骤中添加从树到另一个顶点的花费最小的可能的连接。

该算法由捷克数学家沃伊茨奇·贾尼克于1930年开发后,后来在1957年被计算机科学家罗伯特·普里姆,以及在1959年被艾兹赫尔·戴克斯特拉重新发现和重新出版。因此,它有时也被称为Jarník算法,普里姆-jarník算法。普里姆-迪克斯特拉算法或者DJP算法。

这个问题的其他众所周知的算法包括克鲁斯卡尔算法和 Borvka's算法。这些算法在一个可能的非连通图中找到最小生成森林;相比之下,普里姆算法最基本的形式只能在连通图中找到最小生成树。然而,为图中的每个连通分量单独运行普里姆算法,也可以用于找到最小生成森林。

就渐近时间复杂度而言,这三种算法对于稀疏图来说速度相同,但比其他更复杂的算法慢。然而,对于足够密集的图,普里姆算法可以在线性时间内运行,满足或改进其他算法的时间限制。

‘贰’ 数据结构之图:求所有节点之间的最短路径,用什么算法时间复杂度小求答案与解释

两者时间复杂度一般都是O(n3),但对于稀疏图来说重复使用Dijkstra方法比较好!
Dijkstra算法时间复杂度为O(V*V+E),可以用优先队列进行优化,优化后时间复杂
度变为0(v*lgn)。
源点可达的话,O(V*lgV+E*lgV)=>O(E*lgV)。
当是稀疏图的情况时,此时E=V*V/lgV,所以算法的时间复杂度可为O(V^2) 。可以用优先队列进行优化,优化后时间复杂度变为0(v*lgn)。
具体详细解释你可以看看这个http://blog.chinaunix.net/uid-27164517-id-3287891.html。

‘叁’ 设有一稀疏图G,则G采用什么存储较省空间

G采用邻接表存储较省空间。

邻接表,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。

对于无向图来说,使用邻接表进行存储也会出现数据冗余,表头结点A所指链表中存在一个指向C的表结点的同时,表头结点C所指链表也会存在一个指向A的表结点。

(3)稀疏图算法扩展阅读:

表示法

n个顶点e条边的无向图的邻接表表示中有n个顶点表结点和2e个边表结点。(换句话说,每条边(i,j)在邻接表 中出现两次:一次在关于i的邻接表中,另一次在关于j的邻接表中)。

对于有向图,vi的邻接表中每个表结点都对应于以vi为始点射出的一条边。因此,将有向图的邻接表称为出边表。对于无向图来说,使用邻接表进行存储也会出现数据冗余,表头结点A所指链表中存在一个指向C的表结点的同时,表头结点C所指链表也会存在一个指向A的表结点。

‘肆’ prim算法和kruskal算法哪一个适合稀疏图

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

‘伍’ 用来求解加权有向图的最短路径的算法是什么算法

单元最短路径:
1.如果没有负权环的稀疏图,可以用SPFA,时间复杂度O(KM)
M是边数,K是平均入队列的次数
2.如果没有负权环的稠密图,建议用Dijkstra O(N^2),用二叉堆可优化到
O(NlogN),斐波那契堆编程复杂度太高,不易于实现
3.如果有负权环,可以尝试floyd,O(n^3)

任两点最短路径:floyd较好实现,基于重标号johnson也不错(稀疏图效率高)
具体程序可以上网查

‘陆’ 图论中稀疏图的概念

图的邻接矩阵中超过一半的元素的0的话就叫做稀疏图

‘柒’ 稀疏图的数据结构

数据结构中对于稀疏图的定义为:有很少条边或弧(如e<nlogn,n是图的顶点数,e是弧数)的图称为稀疏图(sparse graph),反之成为稠密图(dense graph)。

‘捌’ 求最短路问题的三种算法并说明使用条件

现在比较常用的最短路算法是dijkstra它的使用条件是你会写,且图中无负权边

SPFA是现在稀疏图上常用最短路算法,且无负环,而且你要会写
floyd是当前求多源最短路的常用算法
对于程序猿来说,dijkstra性能稳定比较changyong
对于oier来说,只要不是稠密图,一定写spfa,因为spfa在稀疏图上太快了

‘玖’ 图论中稀疏图的概念

两个图D=(V(D),E(D),φ1(D)))和H=(V(D),E(D),φ2(H))),如果存在两个双射
θ:V(D)→V(H)
Ψ:E(D)→E(H)
使得 a∈E(D),φ1(a)=(x,y)<=>φ2(Ψ(a))=(θ(x),θ(y))∈E(H)
则称(θ,Ψ)为D,H 之间的同构映射(isomorphic mapping)。

两个图D=(V(D),E(D),φ(D)))和H=(V(D),E(D),φ(H))),如果存在同构映射,则成为同构的,记为D≌H.

‘拾’ 对于网络中有负权弧时,可以使用哪种算法求取最短路

现在比较常用的最短路算法是dijkstra它的使用条件是你会写,且图中无负权边

SPFA是现在稀疏图上常用最短路算法,且无负环,而且你要会写
floyd是当前求多源最短路的常用算法
对于程序猿来说,dijkstra性能稳定比较changyong
对于oier来说,只要不是稠密图,一定写spfa,因为spfa在稀疏图上太快了

热点内容
存储服务器分类 发布:2025-05-14 08:39:01 浏览:644
xz文件解压软件 发布:2025-05-14 08:28:43 浏览:969
lua脚本学习 发布:2025-05-14 08:20:55 浏览:713
python文件删除一行 发布:2025-05-14 08:06:58 浏览:721
如何下载奥特曼高级化3安卓版 发布:2025-05-14 07:47:31 浏览:346
qml文件修改后编译未生效 发布:2025-05-14 07:31:00 浏览:331
内到内算法 发布:2025-05-14 07:29:11 浏览:34
文件夹名字不显示 发布:2025-05-14 07:27:47 浏览:775
oracle的数据库驱动jar 发布:2025-05-14 07:23:20 浏览:556
我的世界电脑版服务器手机版能进吗 发布:2025-05-14 07:22:01 浏览:680