给定图的邻接矩阵数据结构,请设计算法,尝试用Prim和Kruskal算法构建图的最小生成树

给定图的邻接矩阵数据结构,请设计算法,尝试用Prim和Kruskal算法构建图的最小生成树

  • 你看下这篇博客吧, 应该有用👉 :经典算法 - 图解图的最小生成树问题与prim、kruskal算法
  • 除此之外, 这篇博客: 【数据结构与算法】深度探究Prim算法和Kruskal算法中的 Prim算法的算法框架 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 所谓算法框架,其实就是大概的一个步骤,说白了就是每一步该做什么。

    Prim是一种贪心的最小生成树算法,适合于边稠密的图。

    • 初始时从图中仁取义顶点加入树T,此时树中只含有一个顶点。
    • 选择一个与当前T中顶点集合距离最近的顶点,并将该顶点和相应的边加入T,每次操作后T的顶点数和边数都加1。
    • 以此类推,直到图中所有的顶点都并入T,得到的T就是最小生成树,此时T中必有n-1条边。

    Prim算法伪代码:

    void prim(G, T) {
        // 初始化空树
        T =;
        // 添加任意顶点w
        U = {w};
        // 若树中不包含全部顶点
        while ((V-U)!=) {
            // 设(u,v)是使u∈U且v∈(V-U)且权值最小的边,将该边归入树
            T = T ∪ {(u,v)};
            // 顶点归入树
            U = U ∪ {v};
        }
    }