zoukankan      html  css  js  c++  java
  • 二分图匹配

    今上午讲课的时候目睹了大型jc现场甚至我也参加了lkpdalao被jc了ahhh

    一、概念

    什么是二分图?

    一张图上的点可以分为、两个点集,点集内的点

    没有交集,且任意一条边连接两个点集。

    什么是匹配??

    匹配:一个匹配即一个包含若干条边的集合,且其中任意两条边没有公共端点。

    右图的红边为左图的一个匹配

    什么是最大匹配??

    在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个_匹配_。

    选择这样的边数最大的子集称为_图的最大匹配问题_,最大匹配的边数称为_最大匹配数_.

    如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为_完全匹配_,也称作_完备匹配_。

    匈牙利算法:

    匈牙利算法又称作_稳定婚姻系统_

    将左边看做男生,右边看做女生,条件:
    1.对于男生来说,右边的女生编号越小心仪度越高
    2.对于女生来说,左边的男生编号越大心仪度越高
    3.编号小的男生具有优先权
    4.在配对最多的前提下,优先满足女生

    所以在配对最多的前提下,在满足优先权的前提下
    男生选到的是他最差的女生
    女生选到的是她最好的男生(这让我想到了封建帝制的男女不平等

    上代码(复杂度O(n),n为边数):

    应用:

    1.最大匹配问题:

    例题
    因为求的是最小的市区宝石的数量,我们可以转化为最大可以剩下多少宝石的数量,然后可以跑一个二分图
    跑二分图的时候注意这是一个环,然后我们可以把这个环的两边都连起来,然后判断这个x的两边的y是不是能把
    x搞得没了价值,然后求ans

    2.方格图奇偶分治

    一个例题,想欣赏英文题目的小伙伴可以戳这里
    我翻译下来的简略的中文博客
    n*m的方格有些格子已经被占用,每相邻的两个格子可以看成一组, 最多能将方格图划分成多少组,输出方案数..

    那么我们可以从最简单的图(都可以利用的那种图)来看

    这样一个图怎么进行二分图匹配??

    因为他这是相连的两个格子可以涂成黑的,所以他斜着的那个格子就可以不与当前的格子产生影响,那么
    这两个方框就可以在同一列中, 因为在同一列里的都是互不相干的,然后连线的时候就可以与这个格子相邻
    的上下左右的格子连上点就可以了...(如图,1表示在左列中,2表示在右列中)

    3.点覆盖集

    点覆盖集是无向图 的一个点集,使得该图中所有边都至少有一个端点在该集合内。
    最小点覆盖集是在无向图中,点数最少的点覆盖集。

    最小点覆盖集:

    最小点覆盖集=二分图最大匹配数

    证明:

    边分为匹配边和未匹配边;
    未匹配边一定至少有一个点被选中,否则会增加一个新的匹配,与最大匹配不符所以是最小点覆盖;
    例题
    题意:一颗子弹可以清楚一行或一列的障碍,求最少用多少子弹可以清楚所有障碍
    因为子弹是一打,打一行或者一列的,那么我们可以将每一行每一列当做一个点,
    二分图的时候把列和行分别来放,列放一边,行放一边,然后每个行和列如果有一个障碍的话
    那么给他连一个线, 那么二分图就建好了,然后跑一边匈牙利算法就好了...

  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/zzz-hhh/p/11202823.html
Copyright © 2011-2022 走看看