DAG

时间:2016-09-09 08:48:12

标签: algorithm graph graph-theory directed-acyclic-graphs bipartite

在新加坡,今年(2016年)NOI(国家信息学奥林匹克运动会)包括以下问题“ROCKCLIMBING”(我在比赛期间无法解决这个问题。):

含糊不清的问题陈述

给定具有N <= 500个顶点的DAG,找到原始顶点子集中的最大顶点数,使得从该集合中的1个顶点到同一个集合中的另一个顶点没有路径, 直接或间接

解决方案

解决方案是使用传递闭包算法,然后通过复制每个顶点i以形成i'来形成二分图,这样如果可以从顶点{到达顶点j {在原始图表中{1}} 直接或间接,然后在新图表中有ii的有向边。

然而,在解决方案演示期间,演示者没有解释新的二分图的j' (MCBM是最大基数二分匹配)的方式或原因也是最大的在原始DAG中无法直接或间接直接或间接的顶点集。

我查找了与DAG和二分图相关的其他问题,例如DAG上的最小路径覆盖问题,但我找不到任何可以解释这一点的问题。

有谁知道如何证明这种平等?

问题陈述可以在这里找到:ROCKCLIMBING

提前谢谢。

2 个答案:

答案 0 :(得分:1)

这里有两件事:

  1. 当且仅当其补码是顶点覆盖时,该集是独立的(参见wikipedia)。这意味着最大独立集的大小等于最小顶点覆盖的大小。

  2. Konig's theorem证明

  3.   

    在任何二分图中,最大匹配中的边数等于最小顶点覆盖中的顶点数。

    因此,为了找到最大独立集的大小,我们首先计算最大匹配的大小MCBM,然后计算其补码等于N-MCBM

答案 1 :(得分:0)

另一种观点如下:

  1. 如果我们使用A<B来表示我们可以从A爬到B,我们已经定义了partially ordered set

  2. 有一个名为Dilworth定理的结果表明无法比较的元素的最大数量等于链的最小数量

  3. proof显示如何通过在二分图中构建最大匹配来构造最小数量的链。