采用邻接表存储,Prim算法的时间复杂度是多少

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了采用邻接表存储,Prim算法的时间复杂度是多少相关的知识,希望对你有一定的参考价值。

如题 答案选项O(n e)或者O(n*n)

设连同网中有n个定点,第一个进行初始化循环语句需要执行n-1次,第二个循环共执行n-1次,内嵌两个循环,其一是在长度为n的数组中求最小值,需要执行n-1次,其二是条用辅助数组,需要执行n-1次。所以Prim算法的复杂度是n*n 参考技术A 选择o(n*n)
设连同网中有n个定点,第一个进行初始化循环语句需要执行n-1次,第二个循环共执行n-1次,内嵌两个循环,其一是在长度为n的数组中求最小值,需要执行n-1次,其二是条用辅助数组,需要执行n-1次。所以Prim算法的复杂度是n*n
参考技术B 设连同网中有n个定点,第一个进行初始化循环语句需要执行n-1次,第二个循环共执行n-1次,内嵌两个循环,其一是在长度为n的数组中求最小值,需要执行n-1次,其二是条用辅助数组,需要执行n-1次。所以Prim算法的复杂度是n*n 参考技术C 因为所谓0.95 参考技术D 好高深的问题

第六章学习小结

(一)邻接表和邻接矩阵

图的存储结构,有邻接矩阵表示法和邻接矩阵表示法两种。

邻接矩阵通过矩阵来存储图的信息,其算法的时间复杂度为O(n^2);邻接表通过链式存储结构来存储图的信息,其算法的时间复杂度为O(n+e);因为邻接矩阵表示法不便于增加和删除顶点,空间效率低,所以相对于邻接表而言,邻接矩阵更适合用于稠密图,而稀疏图更适合用于邻接表。

采用邻接矩阵表示法,创建无向网
Status CreateUDN(AMGraph &G)  //G.vexnum:总顶点数;G.arcnum:总边数;MaxInt:极大值
{
    cin>>G.vexnum>>G.arcnum;  //输入总顶点数,总边数 
    
    for(i=0;i<G.vexnum;++i)        
        cin>>G.vexs[i];           //依次输入点的信息 
    
    for(i=0;i<G.vexnum;++i)       
        for(j=0;j<G.vexnum;++j)
            G.arcs[i][j] = MaxInt; //初始化,权值都置为极大值MaxInt 
    
    for(k=0;k<G.arcnum;++k)   
    {
        cin>>v1>>v2>>w;
        i=LocateVex(G,v1);j=LocateVex(G,v2); //确定v1和v2在矩阵中的位置,既顶点数组的下标
        G.arcs[i][j] = w;
        G.arcs[j][i] = G.arcs[i][j]; 
     } 
     return OK;
}
图的邻接表存储方式
#define MVNum 100 //最大顶点数
typedef struct ArcNode //边结点 
{
    int adjvex;  //该边所指向的顶点的位置
    struct ArcNode *nextarc; //指向下一条边的指针
    OtherInfo info; //和边相关的信息 
 } ArcNode;
 typedef struct VNode
 {
     VERtexType data;
     ArcNode *firstarc;
 }VNode,AdjList[MVNum];
 typedef struct
 {
     ADjList vertics;
     int vexnum, arcnum; //图当前顶点数和边数 
 }SLGrapg;

(二)图的遍历

深度优先搜索(Depth First Search,DFS)遍历类似于树的先序遍历,是树先序遍历的推广。

广度优先搜索(Breadth First Search,BFS)遍历类似于树的按层次遍历的过程。

(三)最小生成树

图G的生成树是:包含G的全部顶点的极小连通子图。最小生成树的边数=图的顶点数-1。

最小生成树的算法有普里姆算法和克鲁斯卡尔算法两种。

普里姆算法:时间复杂度O(n^2),适用于稠密图

克鲁斯卡尔算法:时间复杂度O(Elog2e),适用于稀疏图

(四)最短路径的算法

算法的实现主要的难点在于需要引入辅助的数据结构。

(1)二维数组Path[i][j]:最短路径上顶点vj的前一顶点的序号。

(2)二维数组D[i][j]:记录顶点vi和vj之间的最短路径长度。

以上是关于采用邻接表存储,Prim算法的时间复杂度是多少的主要内容,如果未能解决你的问题,请参考以下文章

数据结构 图的基本操作要C语言的完整代码!!

[数据结构]邻接矩阵和邻接表存储的图DFS,BFS算法时间复杂度分析

[数据结构]邻接矩阵和邻接表存储的图DFS,BFS算法时间复杂度分析

c++利用邻接矩阵存储方法实现图的存储与输出。

无向图采用邻接表存储结构,编写算法输出图中各连通分量的节点序列

邻接表c源码(构造邻接矩阵,深度优先遍历,广度优先遍历,最小生成树prim,kruskal算法)