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

  • 相关阅读:
    堆栈详解
    结构体内存对齐
    const限定符
    硬盘及其分区(0819整理)
    Android编译环境搭建(0818-0819)
    wordpress导入模板数据
    git新建仓库
    android 镜像源
    js 获取浏览器可视窗口大小,滚动条高度
    jquery 获取浏览器可视窗口大小,滚动条高度
  • 原文地址:https://www.cnblogs.com/yuanweidao/p/11486114.html
Copyright © 2011-2022 走看看