【算法笔记】Prim算法

2023-11-18

定义

prim算法,图论中的一种算法,可在加权连通图里搜索最小生成树。 由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,并且其所有边的权值之和最小。

算法描述

①输入:一个加权连通图,其中顶点集合为V,边集合为E;
②初始化 :Vnew={x},其中x为集合V中的任意节点(起始点),Enew={}为空。
③重复下列操作,直到Vnew=V;
a.在集合E中选取权值最小的边<u,v>,其中u为集合Vnew中的元素,而v不在Vnew集合当中,并且v∈V(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一);
b.将v加入集合Vnew中,将<u,v>边加入集合Enew中
④输出:使用集合Vnew和Enew来描述所得到的最小生成树

代码

#define MAXN 1000
#define INF 1<<30
int closest[MAXN],lowcost[MAXN],m;//m为节点的个数
int G[MAXN][MAXN];//邻接矩阵
int prim()
{
    for(int i=0;i<m;i++)
    {
        lowcost[i] = INF;
    }
    for(int i=0;i<m;i++)
    {
        closest[i] = 0;
    }
    closest[0] = -1;//加入第一个点,-1表示该点在集合U中,否则在集合V中
    int num = 0,ans = 0,e = 0;//e为最新加入集合的点
    while (num < m-1)//加入m-1条边
    {
        int micost = INF,miedge = -1;
        for(int i=0;i<m;i++)
        if(closest[i] != -1)
        {
            int temp = G[e][i];
            if(temp < lowcost[i])
            {
                lowcost[i] = temp;
                closest[i] = e;
            }
            if(lowcost[i] < micost)
            micost = lowcost[miedge=i];
        }
        ans += micost;
        closest[e = miedge] = -1;
        num++;
    }
    return ans;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【算法笔记】Prim算法 的相关文章

  • unity制作血条

    unity制作血条 在hierarchy中create gt UI gt image 重命名为border 将血条框拖入Source Image Set Native Size 防止变形 在Canvas下create empty 命名为He

随机推荐

  • 反编译 APK 的基本步骤

    文章目录 反编译 APK 的基本步骤 1 编写一个简单的安卓 app 2 将 release app apk 解压缩 3 将 classes dex 文件反编译为 jar 文件 4 使用 jd gui 可视化阅读 classes dex2j
  • 测试用例之支付功能测试点整理【建议收擦】

    一 梳理支付的业务流程如下 点击支付 gt 选择支付方式 gt 确认金额 gt 输入密码 gt 成功支付 完成这个流程测试 也就是完成了项目的冒烟测试 然后需要测试针对流程中的每个阶段和步骤 具体分析可能导致异常的测试点 所以我们按阶段和输
  • socket,socket.io,mongodb

    Socket 网络上的程序实现双向的数据链接 这个链接的一端成为socket 1 Socket是一个持久链接 2 Socket是双向通信的 Socket VS ajax轮询 ajax轮询 是利用客户端来发送请求 每隔几秒发送一个http请求
  • elementui 表格中单元格自定义功能

    客户相让表格的可操作空间变得更大 比如说可以修改表格内容 双击之后出现input 点击某一单元格可以弹窗等等 让一切可以需要的功能再单击单元格中实现 其实在elementui的官方文档中也可以找到很详细的说明和demo 但是对于新手前端来说
  • 问题记录:修改NuGet的默认存放位置

    具体流程参考了博主 修改nuget包默认存放路径 但是没找到配置文件 C Users 用户 AppData Roaming NuGet NuGet Config 其他的答案如 C Program Files x86 NuGet Config
  • 移动端页面禁止放大缩小

    安卓 在index html文件中添加meta标签 IOS 在 src app vue 中 script 标签内添加代码
  • [Codeforces] games (R1200) Part.3

    Codeforces games R1200 Part 3 题单 https codeforces com problemset tags games 0 1200 1672A Log Chopping 原题指路 https codefor
  • PhotoShop 之移动选区

    不能使用 移动工具 移动选区 否则会出现剪切的效果 移动后 出现了背景颜色 如下图 移动选区 矩形选框工具 魔棒工具等选区工具都可以移动选区 移动选区的时候 注意选区按钮必须在新选区 水平或垂直移动选区的时候 请注意必须先移动选区再按住Sh
  • 2、基于51单片机智能交流电表抄表OLED屏

    毕设帮助 开题指导 技术解答 有偿 见文末 目录 摘要 一 硬件方案 二 设计功能 三 实物图 四 原理图 五 PCB图 六 程序源码 七 资料包括 摘要 电表表示着人们日常用电的多少 现在每家每户安装的根本上是带有转盘的那种电表 它只能显
  • Vue页面监听 键盘按键

    1 监听方法 监听键盘 keyDown document onkeydown e gt 事件对象兼容 let e1 e event window event arguments callee caller arguments 0 键盘按键判
  • Linux 基础知识

    一 从认识操作系统开始 1 1 操作系统简介 我通过以下四点介绍什么操作系统 操作系统 Operation System 简称OS 是管理计算机硬件与软件资源的程序 是计算机系统的内核与基石 操作系统本质上是运行在计算机上的软件程序 为用户
  • 【状态估计】基于无味卡尔曼滤波模拟倾斜传感器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及讲解 1 概述 本文包括两部分中的第一部分 第一部分设计
  • VT Msr Hook Syscall

    VT Msr Hook Syscall 什么是系统调用 系统调用是内核提供给应用层的接口 比如在 win10x64 应用层打开一个应用 其实就是 explorer 调用了 CreateProcess 这个函数通过 NTDLL 调用表的 0x
  • 大数据技术——hadoop集群搭建出现的问题

    出现的问题和解决方案 ssh免密出现的问题 解决方法 出现上图的是语法错误 在ssh和 keygen中多了空格 去掉即可 2 ssh免密登录出现的问题 ssh登陆报错 WARNING REMOTE HOST IDENTIFICATION H
  • 区块链的工作原理

    区块链系统由数据层 网络层 共识层 激励层 合约层和应用层组成 其中 数据层封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法 网络层则包括分布式组网机制 数据传播机制和数据验证机制等 共识层主要封装网络节点的各类共识算法 激
  • tcp/ip 详细解析以及网络层简单的发送syn

    利用tcp发送syn 我们可以从网络层进行下发 其实就是组装tcp ip包发送出去 include
  • 微信小程序列表item左滑操作

    页面DOM index wxml
  • TLAB简单介绍

    1 什么是TLAB 新对象都是在Eden区分配空间 这块空间是在多线程间共享的 那么考虑一下 多线程是可能同时创建新对象的 这时候必然需要一种同步机制 使用队列 或者通过互斥 这些方式确实都可以 不过 我们还有一种更好的方式 TLAB 它全
  • 网络传输基本流程

    网络传输流程图 在数据链路层有一个标识 每一台主机的唯一符 MAC地址 MAC地址 计算机的网卡在出厂时就打上了一串数据 MAC 地址 其通常是唯一的 所以局域网中发消息必须加上目的主机的MAC地址 两台计算机通过 TCP IP 协议通讯的
  • 【算法笔记】Prim算法

    定义 prim算法 图论中的一种算法 可在加权连通图里搜索最小生成树 由此算法搜索到的边子集所构成的树中 不但包括了连通图里的所有顶点 并且其所有边的权值之和最小 算法描述 输入 一个加权连通图 其中顶点集合为V 边集合为E 初始化 Vne