混合图非循环性测试算法的参考?


16

混合图是可能同时具有有向边和无向边的图。通过忘记有向边的方向可以获取其下面的无向图,而在另一个方向上,可以通过为每个无向边分配一个方向来获得混合图的方向。如果一组边可以定向以形成有向环,则它在混合图中形成一个环。混合图只有且没有循环时才是非循环的。

这是所有标准,并且有许多发表的论文提到无环混合图。因此,必须知道以下用于测试混合图的非循环性的算法:

重复以下步骤:

  • 删除任何没有传入有向边和入射无向边的顶点,因为它不能属于任何循环。
  • 如果任何一个顶点都没有传入的有向边,但恰好有一个入射的无向边,那么任何使用无向边的循环都必须进入该边。用传入的有向边替换无向边。

当无法执行更多步骤时,请停止。如果结果为空图,则原始图必须一定是非循环的。否则,可以从剩下的任何顶点开始,在图形上回溯,在每一步中,通过向后进入输入边或沿着非指向性边(不是用来到达当前顶点的那个边)进行后退,直到看到重复的顶点。在该顶点的第一次和第二次重复之间(以相反顺序)跟随的边沿顺序在混合图中形成一个循环。

Wikipedia上有关混合图的文章提到了非循环混合图,但没有提及如何对其进行测试,因此我想向其添加有关此算法的一些信息,但是为此,我需要一个公开的参考。有人可以告诉我它(或其他任何用于测试非周期性的算法)在文献中出现的地方吗?


当一个顶点有两个入射无向边而没有其他边时会发生什么?例如在无向三角形中。我的意思是上面的规则涵盖了这种情况吗?
Mateus de Oliveira Oliveira

在不同的顶点应用确定一条边的方向的规则之前,您无法对此类顶点​​进行任何操作。如果您遇到这样的顶点存在的情况,并且无法再应用任何规则,那么图形将包含一个循环。
David Eppstein

也许可以更清楚地考虑在图形无向的情况下会发生什么。一种测试是否为森林的方法是删除叶子(一个顶点的度)和孤立的顶点,直到得到一个空图(这是一个森林)或一个非平凡的2核(所有顶点的度≥2的子图)。其中必然包含一个循环)。混合图算法在无向情况下会退化为这种情况(除了它定向叶子而不是立即将它们移除),就像它在有向情况下退化为标准拓扑排序算法一样。
David Eppstein

不知道您是否看过:cs.stackexchange上有一个帖子,询问类似的问题ref。答题器提供了一种算法,可以通过定向无向边来在混合图中找到一个循环,如果该图不存在,则拒绝该图。也有论文确定混合图是否是高度可定向的参考,但奇怪的是,在实际找到混合图中的连接组件时找不到任何东西。
Quanquan Liu

谢谢-不,我没有看到。“确定方向以使图形包含有向循环”的问题肯定是相同的,并且答案中的算法看起来正确。但是与我描述的时间不同,它不是线性时间。
David Eppstein

Answers:


1

在混合图中找到混合循环等效于在相应的有向图中找到基本有向循环(长度> = 3)。通过用指向相反方向的两个有向边替换每个无向边,可以从混合图中获得相应的有向图。证明:(1)有向图中的每个基本有向循环(长度> = 3)直接对应于混合图中的一个混合循环。(2)混合图中的每个混合循环包含长度> = 3的基本混合循环,并且每个这样的循环直接对应于有向图中的基本有向循环(长度> = 3)。(1)和(2)一起证明声明的两个方向,QED。因此,我们正在寻找有关如何在有向图中计算(全部?)基本周期(长度> = 3)的参考。

注释表明cs.stackexchange包含此问题的一些 答案,但是尚不清楚如何将结果组织成简洁的答案。这篇博客文章似乎很好地总结了(最重要的)重要参考文献:

R.Tarjan的算法

我包括的最早的算法是R. Tarjan在1973年发布的。

Enumeration of the elementary circuits of a directed graph
R. Tarjan, SIAM Journal on Computing, 2 (1973), pp. 211-216
http://dx.doi.org/10.1137/0202017

DB Johnson的算法

DB Johnson于1975年提出的算法通过其复杂性改进了Tarjan的算法。

Finding all the elementary circuits of a directed graph.
D. B. Johnson, SIAM Journal on Computing 4, no. 1, 77-84, 1975.
http://dx.doi.org/10.1137/0204007

在最坏的情况下,Tarjan算法的时间复杂度为O(n⋅e(c + 1)),而约翰逊算法据称设法保持在O((n + e)(c + 1))处,其中n是顶点,e是边数,c是图中的循环数。

KA Hawick和HA James的算法

KA Hawick和HA James于2008年提出的算法对Johnson算法进行了进一步改进,并消除了其局限性。

Enumerating Circuits and Loops in Graphs with Self-Arcs and Multiple-Arcs.
Hawick and H.A. James, In Proceedings of FCS. 2008, 14-20
www.massey.ac.nz/~kahawick/cstn/013/cstn-013.pdf
http://complexity.massey.ac.nz/cstn/013/cstn-013.pdf

与Johnson的算法相比,KA Hawick和HA James的算法能够处理包含以相同顶点开始和结束的边以及连接相同两个顶点的多个边的图形。

非循环性测试本身似乎很容易:计算图的强连接组件。任何(基本)循环都完全包含在一个紧密连接的组件中。如果它不是非定向树,则强连接的组件包含基本循环。

David Eppstein提出的算法另外计算了一个基本周期作为证据,并且上述算法列举了所有基本周期。基本周期中不包含的任何顶点或边都可以删除,作为预处理步骤,以提高上述算法的速度。David Eppstein的算法可以用于该目的,但是即使仅用于强连接的组件,它也不会删除所有可能删除的顶点或边。但是,即使可以这样做(计算块切割树至少允许删除可以删除的每个可能的顶点),也不清楚这是否真的可以提高上述算法的速度。


这些参考文献中有没有提到混合图?我知道在有向图中找到周期。我的问题是关于将这些算法扩展到混合图。
David Eppstein

@DavidEppstein在混合图中找到混合循环等效于在相应的有向图中找到基本循环(长度> = 3)。为该声明找到参考可能具有挑战性,但是证明该声明很简单。我现在将语句及其证明添加到答案中。(还添加了一条言论,但没有证据表明计算出的砍伐树可删除所有可能删除的顶点,而不会影响基本循环。)
Thomas Klimpel

好的,但是它们仍然不是线性时间。
David Eppstein

@DavidEppstein非循环性测试本身是在线性时间内完成的。但是没错,这些算法中的任何一个都需要找到第一个基本电路(长度> = 3)的时间不是线性的(在最坏的情况下)。更糟糕的是,当将约翰逊算法的大多数可用实现应用于单个有向圆(具有n个顶点,e = n个边且c = 1个基本元素)时,似乎使用的时间超过O((n + e)(c + 1))。周期)。尽管如此,这仍然是一个正确的答案,因为约翰逊的论文似乎是“发现基本电路”中引用最多的参考。
Thomas Klimpel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.