二分图最大匹配算法:匈牙利、KM

文章目录

  • 基础定义
    • 匹配
    • 二分图
    • 二分图的矩阵
    • 覆盖
    • 交错路与增广路
  • 匈牙利算法
    • 饱和X的匹配
    • 不管X、Y求最大匹配
  • KM算法
    • 可行顶点标号、相等子图
      • 相等子图的若干性质
    • KM算法的正确性基于以下定理:
    • 算法流程
      • 描述1
      • 描述2

基础定义

匹配

  • 匹配:给定一个无向图 G = < V , E > G=<V,E> G=<V,E>一个匹配是一个边的子集合 M ⊆ E M\subseteq E ME,且满足对所有顶点 v ∈ V v\in V vV M M M中至多有一条边与 v v v关联。对匹配 M M M中的每条边 e = ( u , v ) e = (u,v) e=(u,v),其两端点 u u u v v v称为被匹配M所匹配,而 u u u v v v都称为是M饱和的。
  • 最大匹配:图G中含边数最多的匹配称为G的最大匹配
  • 完美匹配:如果G中每个点都是M饱和的,则称M是G的完美匹配

二分图

  • 二分图(二部图):G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边<i,j>所关联的两个顶点i和j分别属于这两个不同的顶点集,则称图G为一个二分图。
    满足下面的无向图 G = < V , E > 有非空集合 X , Y : X ∪ Y = V , X ∩ Y = ∅ 且每条边 { v i , v j } ∈ E 都有 : v i ∈ X ∧ v j ∈ Y 或者 v i ∈ Y ∧ v j ∈ X 称为二分图 ( b i p a r t i t e   g r a p h ) 可以用 G = < X , E , Y > 表示二分图 \begin{array}{l} 满足下面的无向图G=<V,E>\\ 有非空集合X,Y:X\cup Y=V,X\cap Y=\varnothing\\ 且每条边\{v_i,v_j\}\in E 都有:\\ v_i\in X\wedge v_j\in Y或者v_i\in Y\wedge v_j\in X\\ 称为二分图(bipartite\ graph)\\ 可以用G=<X,E,Y>表示二分图 \end{array} 满足下面的无向图G=<V,E>有非空集合X,Y:XY=V,XY=且每条边{vi,vj}E都有:viXvjY或者viYvjX称为二分图(bipartite graph)可以用G=<X,E,Y>表示二分图

  • 图G是二分图$\iff $图G至少有两个顶点,而且G中所有回路的长度都是偶数

    证明:
    必要性
    只有一个点不够二分,故至少有两个顶点。回路的边数和顶点数相同 不失一般性,设一回路从 X 部出发,则下一顶点在 Y 部, 回路上的顶点 X 、 Y 部交替,故 X 部点的数量与 Y 部点数量相同。 顶点数是偶数,边的数量也是偶数 \begin{array}{l} 只有一个点不够二分,故至少有两个顶点。回路的边数和顶点数相同\\ 不失一般性,设一回路从X部出发,则下一顶点在Y部,\\回路上的顶点X、Y部交替,故X部点的数量与Y部点数量相同。\\ 顶点数是偶数,边的数量也是偶数 \end{array} 只有一个点不够二分,故至少有两个顶点。回路的边数和顶点数相同不失一般性,设一回路从X部出发,则下一顶点在Y部,回路上的顶点XY部交替,故X部点的数量与Y部点数量相同。顶点数是偶数,边的数量也是偶数

    充分性
    任意取顶点 v , 取 V 1 = { v i ∣ v i 与 v 的距离为偶数 } , V 2 = V − V 1 , 证明 V 1 , V 2 内部顶点间没有边 ( 反证法 ) 如果有边 { v i , v j } ∈ E v i , v j ∈ V 1 那么 v 到 v i , v j 距离都是偶数 , v → v i → v j → v 这个 回路的长度是奇数 , 和条件矛盾 , V 2 同理 所以 G 是个二分图 < V 1 , E , V 2 > \begin{array}{l} 任意取顶点v,取V_1=\{v_i|v_i与v的距离为偶数\},\\ V_2=V-V_1,证明V_1,V_2内部顶点间没有边(反证法)\\ 如果有边\{v_i,v_j\}\in E\quad v_i,v_j\in V_1\\ 那么v到v_i,v_j距离都是偶数,v\rightarrow v_i\rightarrow v_j \rightarrow v这个\\ 回路的长度是奇数,和条件矛盾,V_2同理\\ 所以G是个二分图<V_1,E,V_2> \end{array} 任意取顶点v,V1={viviv的距离为偶数},V2=VV1,证明V1,V2内部顶点间没有边(反证法)如果有边{vi,vj}Evi,vjV1那么vvi,vj距离都是偶数,vvivjv这个回路的长度是奇数,和条件矛盾,V2

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

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

相关文章

基于云平台技术的车外视频隐私合规的浅谈

基于云平台技术的车外视频隐私合规创新旨在确保车外视频数据的合法、合规使用&#xff0c;同时保护个人隐私不受侵犯。以下是基于云平台技术的车外视频隐私合规的创新实践和考虑因素&#xff1a; 实践&#xff1a; 数据采集&#xff1a;对车外视频数据进行采集时&#xff0c;…

PACS医学影像报告管理系统源码带CT三维后处理技术

PACS从各种医学影像检查设备中获取、存储、处理影像数据&#xff0c;传输到体检信息系统中&#xff0c;生成图文并茂的体检报告&#xff0c;满足体检中心高水准、高效率影像处理的需要。 自主知识产权&#xff1a;拥有完整知识产权&#xff0c;能够同其他模块无缝对接 国际标准…

Linux CentOS 7.6安装JDK详细保姆级教程

一、检查系统是否自带jdk java --version 如果有的话&#xff0c;找到对应的文件删除 第一步&#xff1a;先查看Linux自带的JDK有几个&#xff0c;用命令&#xff1a; rpm -qa | grep -i java第二步:删除JDK&#xff0c;执行命令&#xff1a; rpm -qa | grep -i java | xarg…

ubuntu设置ssh登录,设置公钥无密登录

sudo apt-get install openssh-server vim sudo vim /etc/ssh/sshd_config 修改这几行 PubkeyAuthentication yes #指定公钥数据库文件 AuthorsizedKeysFile.ssh/authorized_keys #PasswordAuthentication yes 改为 PasswordAuthentication no 然后重启ssh服务 systemctl res…

企业的 Android 移动设备管理 (MDM) 解决方案

移动设备管理可帮助您在不影响最终用户体验的情况下&#xff0c;通过无线方式管理和保护组织的移动设备群&#xff0c;现代 MDM 解决方案还可以控制 App、内容和安全性&#xff0c;因此员工可以毫无顾虑地在托管设备上工作。移动设备管理软件可有效管理个人设备上的公司空间。M…

优化CentOS 7.6的HTTP隧道代理网络性能

在CentOS 7.6上&#xff0c;通过HTTP隧道代理优化网络性能是一项复杂且细致的任务。首先&#xff0c;我们要了解HTTP隧道代理的工作原理&#xff1a;通过建立一个安全的隧道&#xff0c;HTTP隧道代理允许用户绕过某些网络限制&#xff0c;提高数据传输的速度和安全性。然而&…

工业交换机在智慧水务和水处理中的应用

智慧水务是一种基于互联网和物联网技术的水务管理模式。它利用现代信息技术&#xff0c;将传统的水务管理模式升级&#xff0c;实现智慧化的水务管理方式。智慧水务的实现离不开各种先进的技术手段。物联网技术是智慧水务的重要组成部分。通过在水务系统中部署工业交换机、传感…

LLMs:Ghost Attention(GAtt)机制的简介(改进多轮对话+帮助注意力聚焦)、原理、作用之详细攻略

LLMs:Ghost Attention(GAtt)机制的简介(改进多轮对话+帮助注意力聚焦)、原理、作用之详细攻略 目录 来源

C/C++调用matlab

C/C调用matlab matlab虽然可以生成C/C的程序&#xff0c;但其能力很有限&#xff0c;很多操作无法生成C/C程序&#xff0c;比如函数求解、优化、拟合等。为了解决这个问题&#xff0c;可以采用matlab和C/C联合编程的方式进行。使用matlab将关键操作打包成dll环境&#xff0c;再…

MySQL 存储引擎全攻略:选择最适合你的数据库引擎

1. MySQL的支持的存储引擎有哪些 官方文档给出的有以下几种&#xff1a; 我们也可以通过SHOW ENGINES命令来查看&#xff1a; 还可以通过ENGINES表查看 2. 存储引擎比较 我们通过存储引擎表来看各自的优点&#xff1a; InnoDB 默认的存储引擎&#xff08;SUPPORT字段为D…

广东做“人工心脏”可以报销啦

&#xff08;人民日报健康客户端记者 杨林宋&#xff09;1月5日&#xff0c;据南方医科大学珠江医院消息&#xff0c;医院为一位57岁患者处于心衰终末期的患者&#xff0c;植入一款国产“人工心脏”——左心室辅助装置。据了解&#xff0c;这是该款“人工心脏”纳入广东省医保准…

py的循环语句(for和while)

前言&#xff1a;本章节和友友们探讨一下py的循环语句&#xff0c;主播觉得稍微有点难主要是太浑了&#xff0c;但是会尽量描述清楚&#xff0c;OK上车&#xff01;&#xff08;本章节有节目效果&#xff09; 目录 一.while循环的基本使用 1.1关于while循环 1.2举例 1.31-1…

[C#]使用winform部署PP-MattingV2人像分割onnx模型

【官方框架地址】 https://github.com/PaddlePaddle/PaddleSeg 【算法介绍】 PP-MattingV2是一种先进的图像和视频抠图算法&#xff0c;由百度公司基于PaddlePaddle深度学习框架开发。它旨在提供更精准和高效的图像分割功能&#xff0c;特别是在处理图像中的细微部分&#xf…

【Copilot使用】

Copilot是什么 copilot有多火&#xff0c;1月4日&#xff0c;科技巨头微软在官网上宣布将为Windows 11 PC推出Copilot键。 Copilot是微软在Windows 11中加入的AI助手&#xff0c;该AI助手是一个集成了在操作系统中的侧边栏工具&#xff0c;可以帮助用户完成各种任务。 Copilo…

“氢能源”时代来临-2024武汉氢能源及燃料电池产业展览会

“氢能源”时代来临-2024武汉氢能源及燃料电池产业展览会 2024武汉国际氢能源及燃料电池产业博览会 同期举办&#xff1a;2024世界汽车制造技术暨智能装备博览会 时间&#xff1a;2024.8.14-16日 地点&#xff1a;武汉国际博览中心 邀请函 主办单位&#xff1a;湖北省汽车…

C语言之三子棋小游戏的应用

文章目录 前言一、前期准备模块化设计 二、框架搭建三、游戏实现打印棋盘代码优化玩家下棋电脑下棋判断输赢 四、结束 前言 三子棋是一种民间传统游戏&#xff0c;又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏分为双方对战&#xff0c;双方依次在9宫格棋盘上摆放棋子&#…

Hive之set参数大全-1

A 控制是否允许在需要时按需加载用户定义函数&#xff08;UDF&#xff09; hive.allow.udf.load.on.demand 是 Apache Hive 中的一个配置属性&#xff0c;用于控制是否允许在需要时按需加载用户定义函数&#xff08;UDF&#xff09;。 在 Hive 中&#xff0c;UDFs是用户编写…

布偶猫主食冻干优选推荐:K9、sc、希喂三款对比测评

喂食布偶猫的小技巧&#xff1a;如何平衡其食肉习性与脆弱肠胃&#xff1f;主食冻干来帮忙&#xff01;它既符合猫咪天然的饮食结构&#xff0c;又采用新鲜生肉为原料。搭配其他营养元素&#xff0c;既美味又营养&#xff0c;还能增强抵抗力。我们将为您测评市场上热门的k9、sc…

CUDA的编程模式

本章介绍了CUDA编程模型背后的主要概念&#xff0c;概述了它们在C中是如何公开的。在编程接口中对CUDA C进行了详细的描述。 本章和下一章中使用的矢量加法示例的完整代码可以在矢量加法CUDA示例中找到。 2.1、内核 CUDA C通过允许程序员定义称为内核的C函数来扩展C&#xff0…

C++记账簿

头文件 account_item.h #pragma once #include "common.h"struct AccountItem {string itemType;int amount;string detail; };// 操控记账簿 void loadDataFromFile(vector<AccountItem>& items); void accounting(vector<AccountItem>& item…