连接图中的最小总路径数

时间:2013-04-03 08:24:43

标签: algorithm

我正在看TopCoder上的PenLift问题,在阅读this editorial之后我现在明白了怎么做,但有一点我不明白。

  

一个众所周知的定理指出,要遍历连通图中的所有边需要numOfOddVertices / 2个总路径。

这是什么理论?为什么会这样呢?我的第一个想法是通过添加边来找到欧拉路径,使所有顶点具有除2之外的偶数度,因为这将允许欧拉路径。我不确定这是否正确,如果是这样,我怎么知道这是最好的方式,它似乎贪婪但我没有看到任何证据。有人可以把我链接到理论或解释它是如何工作的吗?提前致谢。

3 个答案:

答案 0 :(得分:3)

  

这是什么理论?

图论。

  

为什么会这样呢?

我们需要假设至少有一对奇度顶点。

下界:证明具有2k个奇度顶点的图需要至少k个路径。基本情况k = 1:无关紧要。步骤k> 1:从具有2k个奇度顶点的图中移除路径,留下至少2k-2 = 2(k-1)个奇度顶点。

上限:用k个边连接奇数度顶点的成对不相交对来扩充图。现在所有顶点都具有均匀度,因此存在欧拉电路。删除此电路的新边沿; k路径仍然存在。

答案 1 :(得分:2)

在图中,奇数顶点(n)的数量始终为零或偶数。如果n = 0,您可以从任何点开始遍历整个图形。如果n> 0,要遍历图形,你应该总是从一个奇数顶点开始,你将从另一个奇数顶点结束。假设你连续绘制的路径数是K.

  • 如果n = 2,您仍然可以一次遍历图表。即从一个奇数顶点开始到另一个奇数顶点结束。 K = 1
  • 如果在遍历后n = 4,则将留下具有2个奇数顶点的子图。你可以一次遍历那个子图。 K = 2
  • 如果n = 6,则必须遍历图3次。 K = 3 等等......

请阅读我的博客文章了解更多信息。 http://jeewanthad.blogspot.com/2012/11/eulerian-trail.html

答案 2 :(得分:0)

首先,原始问题中提出的方法肯定是正确的:将所有奇数顶点配对,但将两个奇偶顶点配对,在每对顶点之间添加一条边,然后计算欧拉路径。添加的边对应于最终遍历中的移动。

如果希望使笔式绘图仪等的运动最小化,请考虑以下事项:画线的运动始终等于边长的总和,因此保存运动的唯一方法是使运动最小化。添加的边缘代表移动,因此目标是以最小化添加的边缘的长度的方式对奇数顶点进行配对。这实际上是一个众所周知但相当困难的问题,称为“普通图上的最小成本完美匹配”(请注意, general 图,而不是 bipartite )。有一种称为Blossom算法的算法可以在O ^ 3的时间内解决它,但我从未找到完整算法的令人满意的描述-都相当模糊和混乱。