传递性检查与传递关闭


9

检查图的传递性是否比图的传递闭合要容易(就渐进复杂度而言)?我们是否知道比更好的下界来确定有向图是否可传递?Ω(n2)


1
存储整个传递闭包将花费您额外的空间。对于某些图形,您应该能够在不重新访问边的情况下钩住和缩短传递性检查。参见:并行连接算法,Y Shiloach,U Vishkin-算法学报,1982年O(logn)
Chad Brewbaker,2014年


2
不确定含义,但是的下限很简单-考虑对于某个边。任何算法都将要求检查是否对所有都检查,否则他没有询问的边缘可能就是那个边缘。 是一个上限,因为这是计算传递闭包所需的时间。nΩ(|V|2)Kn{e}e(u,v)Eu,vVO(|V||E|)
RB

2
考虑一个顶点的有向图:源顶点,中间顶点是每个直接后继对象,而宿顶点是每个顶点的直接后继对象。。如果图形中存在每个弧则有向图是可传递的。这需要检查边缘。另一方面,找到传递闭包可以在时间内完成,其中是矩阵乘法的指数。这些是最著名的界限。n=3ks1,,skt1,,tksiu1,,ukti(si,uj)k2=(n/3)2=Ω(n2)O(nω)ω<2.373
AndrásSalamon 2014年

您的DAG是否可能具有任何其他结构,或者您想要完全常规的结果?
Niel de Beaudrap 2014年

Answers:


9

下面,我将显示以下内容:如果您有O()时间算法来检查图对于任何是否可传递,则您有O()时间算法,用于检测节点图中的三角形,因此(根据FOCS'10论文),您将具有O()时间算法,用于将两个数相乘布尔矩阵,因此根据70年代Fischer和Meyer的结果,这也暗示了O()时间算法用于传递闭包。n3εε>0n3εnn3ε/3n×nn3ε/3

假设您要检测节点的三角形。现在,我们可以创建如下图。是三方与分区上每个节点。在此,每个节点在部分具有副本。对于每个边,添加有向边和。对于每个非边,添加有向边。nGHHI,J,KnxGxI,xJ,xKI,J,K(u,v)G(uI,vJ)(uJ,vK)(u,v)G(uI,vK)

首先,如果包含一个三角形,则是不可传递的。这是因为的边在而不在。其次,如果不是可传递的,则必须在存在从某些节点到某些节点定向路径,使得不是的定向边缘。但是,的最长路径具有边,因此任何这样的路径都必须采用和形式Gu,v,wH(uI,vJ),(vJ,wK)H(uI,wK)HstH(s,t)HH2(uI,vJ),(vJ,wK)(uI,wK)H,因此在形成三角形。u,v,wG


1
查找传递闭包本质上与矩阵乘法相同。问题是下限的指数可以从2升高,还是上限的指数可以从2.373降低。您演示的推理链表明,即使是用于检查传递性的最佳算法也只能产生用于传递闭包的时间算法-但我们已经有了时间算法。O(n2)O(n2.667)O(n2.373)
安德拉斯·萨拉蒙

关键是存在黑盒还原。O()时间算法远非实用。然而,通过上述减少,在亚三次时间中运行的实用的传递性检查算法也意味着BMM的实用传递性,因此传递传递性闭合。另外,即使您不关心实用的算法,也很有可能不需要FOCS'10论文中的指数损失,并且三角检测可能等效于BMM。n2.373
virgi 2014年

哦,当然,我们可以仅根据假设的三角形检测硬度来确定传递性问题的难度。请注意,对于三角形检测,没有比更好的下界,最好的上限是。n2O(nω)
virgi 2014年

我们已经有一个subcubic实用的算法,通过使用任何快速矩阵乘法方法:例如见cacm.acm.org/magazines/2014/2/...
安德拉斯·萨拉蒙

2
您引用的Ballard等人的论文特别谈到了Strassen的算法。据我所知,使用边界等级的矩阵乘法算法都不可行。特别是,我不知道针对低于任何限制的实用算法。ω2.78
virgi 2014年

7

看起来是最著名的下界,因为任何下界都意味着布尔矩阵乘法的下界。我们知道可以使用一个布尔矩阵乘法来实现传递性检查,也就是说,当且仅当,是传递性的。Ω(n2)GG=G2


4

确定DAG是否可传递与确定普通图是否可传递一样困难(这使我们回到了前面的问题:))。

假设您有一个算法在时间运行,用于确定DAG是否传递。O(f(n))

给定有向图,您可以使用以下随机算法来确定在时间和错误概率是否可传递:GGO(f(n)log(1δ))δ

 1. for $O(\log{\frac{1}{\delta}})$ iterations:

   1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.

   1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).

   1.3. If $G'$ (which is acyclic) is not transitive return false.

 2. return true.

现在很明显,如果是可传递的,则此算法返回true。G

现在假设不是可传递的。令使得(必须存在这样的边,因为不传递)。的概率为,因此,在每次迭代中,算法认为不传递的概率为并且在迭代,失败概率最大为。Ge1=(vi,vj),e2=(vj,vk)E(vi,vk)EGe1,e2G16G16O(log(δ))δ


1
感谢您的回答。假设我有一种算法来确定DAG是否在可传递,例如。然后,我可以确定有向图G是否在时间内传递。1)在 -时间中获得强连通图。2)检查每个组件是否在时间完成。3)检查在组件图上有边的每对组件是否是双完整的,即在从一个组件的每个顶点到第二个组件的每个顶点都有一条边 -时间。4)检查组件有向图是否在传递。O(f(n))f(n)=Ω(n2)O(f(n))O(n2)O(n2)O(n2)O(f(n))
ekayaaslan 2014年

1

我认为这在线性时间内应该可行,即,其中是顶点数,是边数。也许通过使某些图形遍历方案适应有向设置?一个起点可以是这里描述的LexBFS / LexDFS;对于有向图,似乎我们应该使用拓扑排序而不是DFS,所以也许可以通过LexTSA算法来发现?O(n+m)nm


2
IMO不太可能,因为它将给出概率线性时间算法来检查一般二元图的传递性,请参阅我的答案。
RB

0

关于先前的答案,这是定义这种算法的一种简单方法。为每个顶点分配一个索引,该索引初始化为。对于每个,令表示其邻域的索引的多集。我们通过维护未开发顶点的集合(已初始化为整个集合)来模拟拓扑排序。在每一步中,我们执行以下操作:xi(x)0xM(x)R

  1. 选择一个顶点其多重集最小(按多重集顺序);xRM(x)

  2. 将更新为当前循环计数器,然后从删除。i(x)xR

该算法可以用于您的问题或其他应用程序吗?


这将更适合作为评论。
Suresh Venkat 2014年
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.