zoukankan      html  css  js  c++  java
  • 关于最大匹配,最小点覆盖,最少路径覆盖和最大独立集的总结

    最小点覆盖:

    点覆盖的概念定义:
    对于图G=(V,E)中的一个点覆盖是一个集合S⊆V使得每一条边至少有一个端点在S中。

    最小点覆盖:就是点覆盖中点的个数最少的集合S。

    最小边覆盖:

    边覆盖的概念定义:
    边覆盖是图的一个边子集,使该图上每一节点都与这个边子集中的一条边关联,只有含孤立点的图没有边覆盖,边覆盖也称为边覆盖集,图G的最小边覆盖就是指边数最少的覆盖,图G的最小边覆盖的边数称为G的边覆盖数。

    最大匹配:

    匹配:在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。

    最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。

    最大独立集:

    最大独立集:在N个点的图G中选出m个点,使这m个点两两之间没有边的点中,m的最大值。

    最小路径覆盖:

    定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。

    (1)二分图的最大匹配

    匈牙利算法(可以用最大流做,但一般匈牙利要快不少)。


    (2)二分图的最小点覆盖

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


    (3)二分图的最少边覆盖

    二分图的最少边覆盖 = 点数 - 二分图的最大匹配


    (4)二分图的最大独立集

    二分图的最大独立集 = 点数 - 二分图的最大匹配


    (5)有向无环图的最少不相交路径覆盖

    我们把原图中的点V拆成两个点Vx和Vy,对于原图中的边A−>B,我们在新图中连Ax−>By。

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

    (6)有向无环图的最少可相交路径覆盖

    先用floyd求出原图的传递闭包, 如果a到b有路, 那么就加边a->b。 然后就转化成了最少不相交路径覆盖问题。

    例题:POJ - 2594 Treasure Exploration

    (7)有向无环图中最少不相交路径覆盖和最大独立集的相互转化

    用偏序集,一般可以抽象为有向无环图。建议先看看这篇博客

    Dilworth定理:有向无环图的最大独立集=有向无环图最少不相交路径覆盖

    (8)二分图的带权最大匹配

    KM算法。(可以用最小费用最大流做)
    ————————————————

    (9)如果一个图没有奇环,那么一定是二分图(奇表示环中点的个数为奇数)

    (10)最大团 = 补图的最大独立集

    版权声明:本文为CSDN博主「vocaloid01」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/vocaloid01/article/details/81083071

  • 相关阅读:
    设计模式-Note9-行为变化类
    设计模式-Note8-数据结构类
    设计模式-Note7-状态变化类
    设计模式-Note6-接口隔离类
    设计模式--Note5--对象性能类
    设计模式--Note4--对象创建类
    设计模式--Note3--单一职责类
    设计模式--Note2--组件协作类
    V$ACCESS 查询结果慢的解决方法
    openstack numa详解(命令使用篇)
  • 原文地址:https://www.cnblogs.com/yuanweidao/p/11486114.html
Copyright © 2011-2022 走看看