有向无环图中的最小路径覆盖

Posted

技术标签:

【中文标题】有向无环图中的最小路径覆盖【英文标题】:Minimum path cover in directed acyclic graph 【发布时间】:2012-05-28 10:56:17 【问题描述】:

我在这里要问的问题已经在堆栈溢出中被问过了。 但我无法正确理解 Skiminok 发布的解决方案。

这里是Link .

我用给定的两个示例测试用例尝试了上面链接上发布的解决方案,但我无法得到正确的答案。

对于测试用例1::

N=3 和 K=2

5 4 7

DAG 将是::

注意:我已经构建了上述 DAG 考虑:

设 pi 和 pj 是两个不同的问题。然后我们将画一条从 pi 到 pj 的有向边当且仅当 pj 可以在同一天连续地在 pi 之后直接求解。即必须满足以下条件:

i

|vi - vj| >= K(评级要求)。

然后我构建了二分图考虑::

对于原始 DAG 的每条有向边 (u, v),应在二分图中添加一条无向边 (au, bv),其中 ai 和 bi 是大小为 n 的两个部分。

答案=上面二分图中的最大基数匹配。

上述二部图中的最大基数匹配=1(绿色egde)

但答案是 2。

类似的示例测试用例 2:

5 1

5 3 4 5 6

上图中的最大基数是 MORE THAN ONE,但正确答案是 1。

我认为我没有正确实现它,请你告诉我哪里出错了或者有没有其他方法

谢谢!

【问题讨论】:

【参考方案1】:

我自己找到了答案, 第二天我发布了这个问题。

我的解决方案通过了所有测试用例。

我在最后一步犯了错误。 实际上答案/解决方案是 SET B 中不包含最大二分匹配边缘的顶点总数。

以示例测试用例 1 为例::

最大匹配 M=(1A,3B)。

最大匹配的边没有发生在两个顶点(顶点1和顶点2)上。所以答案等于这样的顶点数=2

对于测试用例 2::

最大匹配 M=(1A,2B),(2A,3B),(3A,4B),(4A,5B)。

最大匹配的边没有发生在一个顶点(顶点1)上。所以答案等于1

【讨论】:

以上是关于有向无环图中的最小路径覆盖的主要内容,如果未能解决你的问题,请参考以下文章

有向无环图的判定及拓扑排序

算法:有向无环图的最短路径

在有向无环图中求最长路径

使用 BFS/DFS 寻找有向无环图中权重最大的路径

1804: 有向无环图

有向无环图的哈希值