算法--最小生成树和二分图

这里写目录标题

  • Xmind
  • 最小生成树
    • Prim算法
      • 思想
      • 例子+题解
    • kruskal算法
      • 思想
      • 例子+题解
  • 二分图
    • 染色法
      • 思想
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

Xmind

在这里插入图片描述

最小生成树

Prim算法

思想

在这里插入图片描述
对于dist数组,仍然是一个点到某个东西的距离,只不过这里是到集合的距离
同时我们有一个集合s,表示已经在最小树里的点,表示出来就是数组st[ ]为真或假,某个点的st为真,那么就在集合s中

首先初始化dist数组为正无穷
之后对于遍历n次,
对于每次遍历
找到集合外距离最近的点,实际上就是目前dist[ ]中在s集合之外的最小值的点,给到t
之后用t来更新其他点到集合的距离,实际上是更新dist数组,判断该点到某个点的距离是否小于某个点现有的dist数组的值,如果小于则更新那个点的dist
然后将t加入到集合s,即st[t]=true

最后所生成的最小树,点就是集合s中的那些点
边,就是每个点的dist数组中所存的权值对应的边,如果对于一个点的dist的值有两条边,那么随意选一条即可

至于一个点到集合的距离,就是该点到集合中所有点的距离的最小值,如下图,实际上就是上面维护的dist数组,
在这里插入图片描述

例子+题解

在这里插入图片描述

在这里插入图片描述
对于数据,如果边的数量与点的平方的数量相当,那么就是稠密图

在这里插入图片描述
首先初始值都为无穷,之后由于都是无穷,所以随便拿一个,就拿一号点作为起点,
所以一号点是t,之后用该点去更新其他点的dist,
之后,从其他点的dist中,找到dist值最小的那个点,二号点,用该点去更新其他点,
对于三号点,旧值(到一号点的距离)是2,新值(到二号点的距离)是2,所以无需更新
对于四号点,从二号点无法到达四号点,所以无需更新
之后将二号点加入到s集合,也就是st[2]=true

之后再从其他点的dist中,找到值最小的那个点,三号点,…依次执行
在这里插入图片描述
数据分析:对于稠密图,使用邻接矩阵,即二维数组g[N][N]
宏定义INF为0x3f3f3f3f

在prim算法中
首先初始化为无穷
之后,根据题目,要有一个res来接收结果,初始化为0

然后有一个for循环,进行n次遍历
对于每次遍历,
首先初始化t为-1;
之后,遍历一号点到n号点,j从1到n
判断j点不在集合s,同时 t==-1 或者 dist[t]>dist[j]
(因为t==-1主要是为了应对初始状态都是正无穷时,将一号点当做起点;之后dist[t]>dist[j]是因为dist[t]是上一轮中的dist的最小值,如果找到dist[j]<dist[t],那么j就是现在这轮中最小的,这里无需考虑初始时的特殊情况,只需要考虑一般情况,因为特殊情况有t==-1兜住)
如果判断成立,那么取出j给到t
之后,如果不是第一个点,同时dist的值为无穷,那么意味着存在一个点与树是不连通的,直接返回INF
之后,如果不是第一个点,将dist的值加入到res中,
(接下来就是在为下一次循环做数据准备了,上面在进行最小树构造,所以有关从最小树获取某些信息的操作,在这一步之前进行比较稳妥)
之后,用t来更新其他点到集合的距离,即对于j从1到n,dist[j]=min(disy[j],g[t][j]);
(直接拿着t到其他点的距离来更新)
最后将t加入到s中

函数最后返回res;
在这里插入图片描述

kruskal算法

思想

在这里插入图片描述
对于稀疏图寻找最小生成树,使用该算法
首先将所有的边按照权重从小到大进行排序,排序到一个结构体数组里
之后,枚举每条边ab,以及权重c
如果ab不连通,那么将ab加入到最小生成树集合中

例子+题解

在这里插入图片描述

在这里插入图片描述
这里定义一个结构体,Edge结构体,里面有元素a,b,w
重载运算符小于号<
方便结构体直接进行比较
在这里插入图片描述
在这里插入图片描述

二分图

染色法

思想

在这里插入图片描述
二分图:一个图中相连的两个点,分别在不同的集合中,如下图:

当图中不含奇数环的话,染色过程就没有矛盾,也就是相连的两个点所染得色不同,是相反的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据分析,用邻接表来存,
N是点的数量,M是边的数量,因为邻接表中,边的权值存在数组里,且是无向图,所以,M要取真正边数的两倍

定义一个color数组,表示某个点被染成白还是黑
在这里插入图片描述
上图中,首先是一个add函数,仍然采用头插法
之后main函数里,先进行初始化,将h数组初始化为-1
之后,对于m个询问,分别输入点并调用add函数

然后定义一个fiag值,用来记录是否出现矛盾,初始化为true

之后遍历i从1到n
if i没被染色,
那么调用dfs并染成1:dfs(i,1)
同时再次判断:如果返回dfs结果是假,那么就表明出现了矛盾,flag更新为false

对于dfs:
在这里插入图片描述
首先第一行就是一个染色的功能
color[u]=c;
根据二分染色的规则,一个连通图中,一旦一个点被染色了,那么其他点的颜色都被定了
第一个for循环,是遍历u所有的出边e[i]号结点,也就是j号结点
如果j点没被染色,那么染成相反的颜色(用2表示,也就用3-c来实现),同时放入if函数进行判断,如果dfs返回了false,那么就是有冲突,那么就返回false
else,如果j点被染色,那么比较该点是否与传进来的c一样,如果一样,就矛盾,返回false

最后如果都通过了,返回true;

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/216117.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring boot -- 学习HttpMessageConverter

文章目录 1. Json格式数据获取2. 为什么返回Json格式的数据2.1 注解SpringBootAppliaction2.1.1 SpringBootConfiguration2.1.2 ComponentScan2.1.3 EnableAutoConfiguration2.1.3.1 HttpMessageConvertersAutoConfiguration2.1.3.2 WebMvcAutoConfiguration 2.2 注解RestContr…

独立完成软件的功能的测试(2)

独立完成软件的功能的测试&#xff08;2&#xff09; &#xff08;12.13&#xff09; 1. 对穷举场景设计测试点&#xff08;等价类划分法&#xff09; 等价类划分法的概念&#xff1a; 说明&#xff1a;数据有共同特征&#xff0c;成功失败分类&#xff1a; 有效&#xff1a…

基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(二)

目录 前言引言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理1&#xff09;数据介绍2&#xff09;数据测试3&#xff09;数据处理 相关其它博客工程源代码下载其它资料下载 前言 博主前段时间发布了一篇有关方言识别和分类模型训练的博客&#xff0c;在读者…

Python和Beautiful Soup爬虫助力提取文本内容

大家好&#xff0c;网络爬虫是一项非常抢手的技能&#xff0c;收集、分析和清洗数据是数据科学项目中最重要的部分。今天介绍如何从链接中爬取高质量文本内容&#xff0c;我们使用迭代&#xff0c;从大约700个链接中进行网络爬取。如果想直接跳转到代码部分&#xff0c;可以在下…

【JUC】二十六、Java对象内存布局和对象头

文章目录 0、前置1、对象的内存布局2、对象头之对象标记Mark Word3、对象头之类元信息4、实例数据5、对齐填充6、对象内存布局之JOL证明7、对象分代年龄8、压缩指针 0、前置 heap&#xff08;堆区&#xff09;&#xff0c;分为新生区new、养老区old、元空间Metaspace&#xff…

C语言—每日选择题—Day46

第一题 1. 下列程序段的输出结果是&#xff08;&#xff09; #include <stdio.h> int main() {int x 1,a 0,b 0;switch(x) {case 0: b;case 1: a;case 2: a;b;}printf("a%d,b%d\n", a, b);return 0; } A&#xff1a;a2,b1 B&#xff1a;a1,b1 C&#xf…

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解)

一 需求解函数 f() 和 g()函数分别为求y值和求导数的函数。 目的&#xff1a;求该函数的最小值&#xff1a; 代码&#xff1a; import numpy as np import matplotlib.pyplot as plt f lambda x : (x - 3.5) ** 2 - 4.5 * x 10 g lambda x : 2 * (x - 3.5) - 4.5x np.l…

接口管理——Swagger

Swagger是一个用于设计、构建和文档化API的工具集。它包括一系列工具&#xff0c;如Swagger Editor&#xff08;用于编辑Swagger规范&#xff09;、Swagger UI&#xff08;用于可视化API文档&#xff09;和Swagger Codegen&#xff08;用于根据API定义生成客户端库、server stu…

SpringCloud系列(二)| Nacos的安装与配置

Nacos是阿里巴巴提供的一个开源的可作为注册中心和配置中心的SpringCloud组件。 Nacos/nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称;一个更易于构 建云原生应用的动态服务发现、配置管理和服务管理平台。 简单来说Nacos有两个核心功能&#xff0c…

深度学习中的各类评价指标

深度学习中的各类评价指标 1 Dice Loss2 Precision&#xff08;精度&#xff09;3 Recall&#xff08;召回率&#xff09;4 F-Score5 mAP 1 Dice Loss Dice Loss&#xff0c;也叫Soft Dice Coefficient&#xff0c;是一种用于图像分割任务的损失函数。它基于目标分割图像与模型…

Uniapp项目打包到多个平台...

打包到微信小程序 先设置微信开发者工具的路径 运行到小程序模拟器&#xff0c;会自动打开微信开发者工具&#xff08;需要先在微信开发者工具->设置->安全设置->服务端口切换为打开状态&#xff09; 3. 微信开发者工具上传版本&#xff08;提示覆盖版本就可以了&a…

“百里挑一”AI原生应用亮相,百度智能云千帆AI加速器首个Demo Day来了!

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

用户管理第2节课 -- idea 2023.2 创建表

一、懂得 1.1编码格式是防止乱码的&#xff0c;utf-8是完全够的&#xff0c;那几个基本没差别 网址&#xff1a; 【IDEA——连接MySQL数据库&#xff0c;创建库和表】_idea中数据库-CSDN博客 这些是MySQL数据库中的一些术语&#xff0c;可以简单解释如下&#xff1a; 1、col…

第三十四周:文献阅读+LSTM学习

目录 摘要 Abstract 文献阅读&#xff1a;综合EMD-LSTM模型在城市排水管网水质预测中的应用 现有问题 提出方法 EMD-LSTM综合模型 研究框架 结论 Long Short-term Memory(长短期记忆) 1. LSTM的结构 2. Multiple-layer LSTM 3.3 LSTM Example 3. GRU LSTM实现PM2…

Java+SSM+MySQL基于微信的在线协同办公小程序(附源码 调试 文档)

基于微信的在线协同办公小程序 一、引言二、系统设计三、技术架构四、管理员功能设计五、员工功能设计六、系统实现七、界面展示八、源码获取 一、引言 随着科技的飞速发展&#xff0c;移动互联网已经深入到我们生活的各个角落。在这个信息时代&#xff0c;微信作为全球最大的…

靠谱的车- 华为OD统一考试(C卷)

靠谱的车- 华为OD统一考试&#xff08;C卷&#xff09; OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 程序员小明打了一辆出租车去上班。出于职业敏感&#xff0c;他注意到这辆出租车的计费表有点问题&#xf…

【知识】如何区分图论中的点分割和边分割

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 以下两个概念在现有中文博客下非常容易混淆&#xff1a; edge-cut(边切割) vertex-partition(点分割)vertex-cut(点切割) edge-partition(边分割) 实际上&#xff0c;初看中文时&#xff0c;真的会搞不清楚。但…

黑豹程序员-EasyExcel实现导出

需求 将业务数据导出到excel中&#xff0c;老牌的可以选择POI&#xff0c;也有个新的选择EasyExcel。 有个小坑&#xff0c;客户要求样式比较美观&#xff0c;数字列要求千位符&#xff0c;保留2位小数。 可以用代码实现但非常繁琐&#xff0c;用模板就特别方便&#xff0c;模…

Pyhon基于YOLOV实现的车辆品牌及型号检测项目源码+模型+项目文档

项目运行运行录屏&#xff1a; Pyhon基于YOLOV实现的车辆品牌及型号检测项目运行录屏 完整代码下载地址&#xff1a;Pyhon基于YOLOV实现的车辆品牌及型号检测项目 项目背景&#xff1a; 车辆检测及型号识别广泛应用于物业&#xff0c;交通等的管理场景中。通过在停车场出入口…

Docker容器:Centos7搭建Docker镜像私服harbor

目录 1、安装docker 1.1、前置条件 1.2、查看当前操作系统的内核版本 1.3、卸载旧版本(可选) 1.4、安装需要的软件包 1.5、设置yum安装源 1.6、查看docker可用版本 1.7、安装docker 1.8、开启docker服务 1.9、安装阿里云镜像加速器 1.10、设置docker开机自启 2、安…