在带循环的有向图中找到至少覆盖所有边一次的最小路径
Finding minimal paths that cover all edges at least once in directed graphs with cycles
我有一个有限的、有向的和强连接的图。我想通过该图找到至少访问每条边一次的最短路径。
此问题与任何“标准”问题(例如旅行推销员或在无向图中寻找欧拉路径)之间是否存在同构?
这是一个众所周知的问题,称为 Route inspection problem,(在文献中通常也称为“中国邮递员问题”),在一般情况下,它会在无向图上找到最小长度的闭合游走至少访问每条边一次。这可以在多项式时间内完成;您的具体问题要求不需要 return 到起点(即开放行走)的强连接有向图解决方案。
有几篇论文描述了基于欧拉旅行或最小成本流问题的减少的有向、封闭步行问题的算法,这导致 O(|V|^3) 解。 This paper on the directed Chinese postman problem 给出了开放式和封闭式步行版本的完整 Java 代码,并给出了他们如何为开放式步行变体修改封闭式步行程序的基本思想:
Imagine that the optimal open solution starts at vertex u and finishes at v. The open solution
can be obtained from a closed solution, found by introducing a new ‘virtual’ arc (v,u), provided
the cost associated with this arc is so high that it is used only once in the closed tour
论文没有提到算法的运行时间是多项式以外的;然而,封闭行走版本是 O(n^3),而开放版本是 O(n^5)。很多复杂性来自算法的通用性:它可以处理多个边和实数权重(包括一些负边),因此可以更有效地解决更具体的问题。论文的开头还给作者的网站提供了一个 link 的 Mathematica 实现。
我有一个有限的、有向的和强连接的图。我想通过该图找到至少访问每条边一次的最短路径。
此问题与任何“标准”问题(例如旅行推销员或在无向图中寻找欧拉路径)之间是否存在同构?
这是一个众所周知的问题,称为 Route inspection problem,(在文献中通常也称为“中国邮递员问题”),在一般情况下,它会在无向图上找到最小长度的闭合游走至少访问每条边一次。这可以在多项式时间内完成;您的具体问题要求不需要 return 到起点(即开放行走)的强连接有向图解决方案。
有几篇论文描述了基于欧拉旅行或最小成本流问题的减少的有向、封闭步行问题的算法,这导致 O(|V|^3) 解。 This paper on the directed Chinese postman problem 给出了开放式和封闭式步行版本的完整 Java 代码,并给出了他们如何为开放式步行变体修改封闭式步行程序的基本思想:
Imagine that the optimal open solution starts at vertex u and finishes at v. The open solution can be obtained from a closed solution, found by introducing a new ‘virtual’ arc (v,u), provided the cost associated with this arc is so high that it is used only once in the closed tour
论文没有提到算法的运行时间是多项式以外的;然而,封闭行走版本是 O(n^3),而开放版本是 O(n^5)。很多复杂性来自算法的通用性:它可以处理多个边和实数权重(包括一些负边),因此可以更有效地解决更具体的问题。论文的开头还给作者的网站提供了一个 link 的 Mathematica 实现。