在计算dag中的可达节点时可以设置什么界限?


23

给定是一个da。您要通过每个节点可访问的节点数来标记每个节点。是一个微不足道的上限;是一个下限(我认为)。有更好的算法吗?是否有理由相信下界可以改善(相关:对于传递闭包的下界到底有什么了解)?Ω V + E O(V(V+E))Ω(V+E)

动机:在将fol公式表示为dag时,我不得不做几次。

编辑:请注意,仅执行计算路径,而不是可到达的节点。(我添加此内容是因为显然很多人认为此简单的解决方案可以按我在现已删除的答案中看到的票数起作用。)实际上,当您想对“共享”部分做一些有趣的事情时,这个问题就出现了,节点可以通过一条以上的道路。另外,我说dag,因为如果解决了这些问题,那么解决有向图就很容易。cx=1+xycy



@Suresh:在我看来,任意权重是否使问题更难解决。
Radu GRIGore 2010年

Answers:


10

一个有边和个顶点的有向图的传递闭包可以比时间稍快一些,但计算起来却不快。一个时间算法,成龙的2005 WADS论文的脚注中提到的APSP(2008年Algorithmica杂志版)。的略微改进可以在ICALP'08论文“稀疏图问题的新组合方法”(Vassilevska的Blelloch)中找到和威廉姆斯。话虽这么说,我不知道计数后代是否比实际找到他们容易n O m n O n 2 + m n / log n O n 2 + m n log n 2 / m / log 2 n mnO(mn)O(n2+mn/logn)O(n2+mnlog(n2/m)/log2n)


4
另外,请参见Edith Cohen的论文“尺寸估计框架及其在传递性闭合和可及性中的应用”。它提供了一种随机算法,可以有效地估计后代的数量。
virgi 2010年

请注意,此结果适用于所有有向图,而不仅仅是DAG。
tonfa



1

可能在您的上下文中没有用,但是您可以使用摘要扩散(http://www.cs.cmu.edu/~sknath/sd.htm)得到近似值。我认为这使它成为O(V + E)。在我看来,在单处理器上模拟概要扩散是O(V + E)(您需要先进行拓扑排序,它也是O(V + E))。

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.