zoukankan      html  css  js  c++  java
  • 模板-prim

    描述

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。

    时间复杂度:O(n^2)
    int prim(int n)
    {
        int total_weight = 0;
        memset(dist, INF, sizeof(dist));
        memset(vis, false, sizeof(vis));
        dist[0] = 0;
        //从编号为0的节点开始遍历,0节点到0节点的距离为零
        //将0节点加入最小生成树
        for(int i = 0; i < n; i ++)
        {
            int min_dist = INF, min_vertex;
            for(int j = 0; j < n; j ++)
            {
    
                if(!vis[j] && min_dist > dist[j])
                {
                    min_vertex = j;
                    min_dist = dist[j];
                }
            }
            //将选出来的边加入最小生成树
            vis[min_vertex] = true;
            total_weight += min_dist;
    
            for(int j = 0; j < n; j ++)
            {
                //找出距离当前节点距离最小的顶点,且未访问
                if(!vis[j] && data[min_vertex][j] < dist[j])
                {
                    dist[j] = data[min_vertex][j];
                }
            }
        }
        return total_weight;
    }
  • 相关阅读:
    【博弈论】囚徒困境
    【LTE与5G】
    【现代通信技术】绪论
    【操作系统】 逻辑结构
    【密码学】
    【计算机网络】网络应用
    部署docker仓库-Harbor
    ELK+filebeat收集K8S平台日志
    istio-http流量管理
    K8S集群部署istio
  • 原文地址:https://www.cnblogs.com/topk/p/6580103.html
Copyright © 2011-2022 走看看