还有这个维基百科
但我不明白如何解决最大匹配问题来解决最小路径覆盖。我知道解决方案是 nm,其中 n 是 G 中的顶点数,m 是最大匹配,但我找不到原因
还有这个维基百科
但我不明白如何解决最大匹配问题来解决最小路径覆盖。我知道解决方案是 nm,其中 n 是 G 中的顶点数,m 是最大匹配,但我找不到原因
这是对这个事实的直观解释(它不是严格的证明):让我们看一下路径覆盖中的每条路径。除了路径中的第一个顶点外,每个顶点都有一个唯一的前驱。此外,每个顶点都有一个后继节点(每条路径中的最后一个除外)。这就是为什么我们可以说每个顶点都与其前身相匹配。如果一个顶点不匹配任何东西,它就是某个路径中的第一个顶点。这就是为什么路径的数量等于不匹配的顶点的数量(每条路径只有一个第一个顶点)。不匹配的顶点数显然等于总的顶点数减去匹配的顶点数。这就是我们得到n - m
公式的方式。不可能得到比最大匹配大小更少的路径(否则n - m1 < n - m
=> m1 > m
=>m
不是最大值)。同时,我们可以n - m
明确地构造一个带有路径的解决方案。
这是一个最小边缘覆盖问题:https ://code.google.com/codejam/contest/11254486/dashboard#s=p2&a=2