我有很多周期的定向图,可能是强连接的,我需要从它获得一个最小的周期。我的意思是我需要得到周期,这是图表中最短的周期,并且每个边缘至少被覆盖一次。
我一直在寻找一些算法或一些理论背景,但我发现的只有中国邮递员算法。但是这个解决方案不适用于有向图。
任何人都可以帮助我吗?感谢
编辑>>该图的所有边都具有相同的成本 - 例如1
答案 0 :(得分:5)
看看这篇论文 - Directed Chinese Postman Problem。这是正确的问题分类(假设没有更多的限制)。
如果您只是阅读理论,请在this page上阅读,这是来自算法设计手册。
关键引用(定向版的后半部分):
可以通过向图G添加适当的边来构造最佳的邮差旅行,以使其成为欧拉。具体来说,我们在G中找到每对奇数顶点之间的最短路径。在G中的两个奇度顶点之间添加一条路径,使它们都变为偶数度,从而使我们更接近欧拉图。找到要添加到G的最佳最短路径集,可以减少识别奇度顶点图中的最小权重完美匹配,其中边(i,j)的权重是从i到最短路径的长度。学家对于有向图,这可以使用二分匹配来解决,其中顶点被分区,这取决于它们是否具有更多的进入边缘或外出边缘。一旦图形是欧拉,就可以使用上述程序以线性时间提取实际周期。
答案 1 :(得分:1)
答案 2 :(得分:0)
我怀疑这是最优的,但你可以做一个基于队列的搜索,假设图表保证有一个周期。每个队列条目都包含表示路径的节点列表。从队列中取出元素时,将所有可能的后续步骤添加到队列中,确保您不再重新访问节点。如果最后一个节点与第一个节点相同,那么您就找到了最小周期。
答案 3 :(得分:0)
网络完全由有向边组成的特殊情况可以在多项式时间内求解。我认为原始论文是Matching, Euler tours and the Chinese postman (1973) - 对有向图问题的算法的清晰描述从第115页开始(pdf的第28页):
当连接图的所有边都是定向时和图 是对称的,有一个特别简单和有吸引力的算法 指定欧拉之旅......
在有向的,对称的,连通的图G中找到欧拉游的算法是首先找到G的跨越树枝。然后,在 任何节点n,除了树枝的根r外,都指定任何顺序 只要在树枝的边缘,边缘指向远离n的边缘 是订购的最后一个。对于根r,指定任何顺序 边缘远离r。
van Aardenne-Ehrenfest和de Bruin使用此算法 列举某个有向图[1]中的所有Euler旅游。