zoukankan      html  css  js  c++  java
  • 匹配的一些结论

    • 点覆盖: 在二分图中找到一些点, 使得二分图的每一条边都至少有一个端点在这个点集中, 这个点集称为点覆盖

      • 最小点覆盖
    • 独立集: 在二分图中找到一些点, 使得这些点两两之间没有边的存在, 这个点集就叫做独立集

      • 最大独立集: 在一个二分图中, 若一个独立集所包含的点是所有独立集中最多的, 则该独立集为最大独立集
    • 路径覆盖: 在有向图中, 找到一些路径, 若这些路径所经过点的并集即为原图的点集, 那么这些路径即构成路径覆盖

      • 最小路径覆盖: 是要找到最少的一些路径完成路径覆盖
        • 最小不相交路径覆盖 : 就是我们找到的每条路径不能相交,就是每条路径不能有同一个点
        • 最小可相交路径覆盖 : 这个与上面相对应,就是可以相交
    • 链: 在有向无环图中, 是一个点集, 对于集合中任意两点 (x,y), 要么 (x) 可以走到 (y), 要么 (y) 可以走到 (x) ( 即我们平常认知中的链 )

      • 所以说, 上面的路径覆盖又可称链覆盖
    • 反链: 在有向无环图中, 是一个点集, 对于集合中任意两点 (x, y)

    (x, y) 之间互相无法抵达 ( 长得不像我们平时认知中的链, 而是一些离散的点, 互相之间没有任何联系 )

    • 最长反链: 元素个数最多

    • (二元) 关系: 一个很玄学的概念, 比如说 (<,le, =,...) , 上面这些都是 (二元) 关系, 应为它是用于二者之间的比较, 好像一般就都是二元关系吧, 当然, 可以自定义二元关系

      当二者存在关系, 我们说它们是可比较的

      当二者不存在关系, 我们说它们是不可比较的

      example: 对于三元组 ((a,b,c)), 对于 ((a,b,c) , (a',b',c')) , 若 $a leq a',bleq b', cleq c' $, 我们可以定义 ((a,b,c) leq (a',b',c'))

    • 全序集: 在某一关系下, 集合内任意一对元素可以比较

    • 偏序集: 在某一关系下, 存在至少一对元素无法比较

    参考:

    1. litble学姐课件
    2. 一个csdn的博客
    3. 一个博客园的博客
    4. 可能还有些我参考了, 但是忘记写上来了

    (不保证以下证明的正确性)

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

    # 证明覆盖

    假设有一条边没有被覆盖, 记为 $ (u,v)$

    那么 (u,v) 均不在匹配点集中

    显然可以把 (u,v) 连上

    显然原匹配不是最大匹配

    # 证明最小

    假设去掉点 (u), 其原对应点为 (v) ( (v) 不在覆盖点集中 )

    显然, 对于 ((u,v)) , 那 (v) 必须加入

    如果 (v) 加入, 那么匹配点集大小不变

    • 注意到, 二分图的最大匹配中, 对于每一条匹配边, 我们只取任一端点放入最小点覆盖的点集 (不把两个端点同时放入)


    最大独立集 = 点的总数 - 最小点覆盖

    # 证明最小点覆盖集必须删

    若存在一个点 (u) 未被删去, 同时在最小点覆盖集中, 其它非最小点覆盖集中的点存在

    那么与它相连的边都存在, 因为没有必要一条边两个点都在 最小点覆盖集

    既然有边存在, 那就不是独立集

    # 证明这为最大独立集

    点覆盖集是最小的, 所以这个独立集是最大的


    最小不相交路径覆盖

    在一个中, 将每个点拆成两点, 若原图存在边 ((x,y)), 新图中连边 ((x,y'))

    那么, 最小不相交路径覆盖 = 原图点数 - 新图最大匹配数

    # 证明

    先思考对于一个点 (x_0), 将其拆成 (x,x') 是什么含义

    对于原图中的一条有向边 ((x,y )), (x) 相当于这条边的起始位置, 而 (y') 相当于这条边的结束位置

    我们一开始把每一个点当作一条长度为 (0) 的路径

    显然, 对于一个匹配, 我们相当于把两条路径首尾相连

    • 首尾相连: 因为根据匹配的性质, 在新图中, 每一个点只可能有一个匹配边, 所以, 我们这个新的匹配一定对应着两个还未匹配的点, 而如果连上的是已经匹配了的点, 那么说明一定有两条路径交于同一点, 而我们这里条论的是 最小不相交路径覆盖

    所以, 每一次匹配, 相当于消掉一条路径 ( 二合一 )

    显然, 最小不相交路径覆盖 = 原图点数 - 新图最大匹配数


    Dilworth定理

    偏序集能划分成的最少的全序集个数等于最大反链的元素个数

    (什么鬼)

    翻一翻前面的定义, 我们可能会我所明白

    我们根据关系构建有向图, 然后发现...... ( 注意到关系是可以传递的 )

    就是 最小不相交路径覆盖


    最长反链 = 最小路径(链)覆盖

    Dilworth定理 推知 ( 最短证明 )


    最长链 = 最小反链覆盖

    # 证明

    假设有 (5) 条链:

    1. - - - - - -
    2. - - -
    3. - - - - - - - - -
    4. - -
    5. - - - - -

    (比较抽象)

    不妨排个序

    1. - -
    2. - - -
    3. - - - - -
    4. - - - - - -
    5. - - - - - - - - -

    对于这 (5) 条链

    我们把它们的第一个抽出来 ( 标记为 ~ )

    1. ~ -
    2. ~ - -
    3. ~ - - - -
    4. ~ - - - - -
    5. ~ - - - - - - - -

    显然, 我们可以把这 (5) 个 ~ 合起来作为一条反链

    记最长链的长度为 (L)

    显然, 按照这种方式, 我们能构造出 (L) 条反链

    对于任意一条反链, 我们都无法在给它加点

    因为这个点必然属于这 (5) 条链中

    而这条反链的所有点各自属于一条链

    加入的新点一定与其中一个点产生联系

  • 相关阅读:
    shapely and geos break在distance方法
    linux运维
    【未完待补充】linux 设置So动态库链接路径
    用python建立最简单的web服务器
    nginx + keepalived 双机热备
    nagios监控linux主机监控内存脚本
    linux普通用户权限设置为超级用户权限方法、sudo不用登陆密码
    zato server启动后自动关闭问题解决
    Linux下几种文件传输命令 sz rz sftp scp
    python风味之大杂烩
  • 原文地址:https://www.cnblogs.com/cssyz-wjj/p/13491900.html
Copyright © 2011-2022 走看看