通过多次传递来减少st-connectivity的空间使用?


20

假设将具有个顶点的图表示为m个边的流,但是允许对该流进行多次遍历。Ñ Gnm

Monika Rauch Henzinger,Prabhakar Raghavan和Sridar Rajagopalan观察到Ω(n/k)空间对于确定G中两个给定顶点之间是否存在路径是必要的G,如果允许对数据进行k次传递。(另请参阅技术报告版本。)但是,它们没有提供实际实现此限制的算法。我假设一种最佳算法实际上将在现实的计算模型中占用O((nlogn)/k)空间,因为如果一个人不能使用恒定大小的指针索引内存,则必须区分n不同的顶点。

如何使用O((n \,\ log \,n)/ k)空间确定k传递的图形连通性?O((nlogn)/k)

如果只允许一次通过,则输入数据可以存储为一组顶点的分区,如果在两个不同集合中的顶点之间看到一条边,则合并这些集。显然,这最多需要O(nlogn)空间。我的问题是关于k>1:如何才能使用更多的通道来减少所需的空间?

(为避免琐碎性,k是不能被常数先验限制的参数,而空间界限是涉及nk的函数的表达式k。)


更新:即使对于k=2,也有一种只存储n/2个顶点的方法确实很有用。还是实际上对于某个常数c都存在一个更强的下界cn,而与k无关?cnck


如何不考虑k?如果它很大,则可以在O(log2n)空间中解决st-连通性,因此有机会使用一种算法,但正如azotlichid所示,可能不在O(nlogn/k)
domotorp

请注意,针对随机算法的Guha和McGregor的通过消除在相反的方向上起作用,使用更多的空间来允许更少的通过(尽管如果期望的误差较小,则额外的空间很大)。这个问题问是否通过使用更多的通道可以减少空间使用。
安德拉斯·萨拉蒙

Answers:


8

寻找一种用于st-connectivity的算法同时在亚线性空间和多项式时间中运行是一个长期存在的难题,这是您要针对的一项较简单的任务。这样的算法对于无向版本是已知的,但是即使这些算法也需要大量的多项式时间(而不是k-pass算法所隐含的O(km)时间)。尤其请参阅对Tompa论文的参考,以了解为何定向案例很难。


1
M. Tompa,两个不容许多项式时间的熟悉的传递闭包算法,亚线性空间实现,SIAM J. Comput。11(1),130-137。 dx.doi.org/10.1137/0211010
安德拉斯·萨拉蒙

本文给出了“一种用于st-连通性的算法,该算法同时在子线性空间和多项式时间中运行”。

4

这不是答案,但我只是想指出,如果您可以解决,那么您可以解决空间和时间的st-连通性(在离线情况下,您可以通过随机游走以> 1/2的概率进行处理;但是,当边缘来自流时,似乎要困难一些)。IMO,这是一个非常有趣的问题。O log n O n m k=Θ(n)O(logn)O(nm)


3

尤西·希洛奇(Yossi Shiloach),乌兹·维斯金(Uzi Vishkin)。O(log n)并行连接算法。J.算法,1982:57〜67-我最喜欢的论文之一。如果可以在轮中用p个处理器在O((nlogn / k)/ p)空间中进行处理,这将很有趣,其中每个轮次每个处理器只允许读取边缘的O(n / p)。k


感谢您的指导,这是一篇有趣的论文。处理器可以访问至少与图形一样大的数据结构,因此这无助于减少空间使用。如果有一种方法可以利用轮数和处理器数来减少空间使用,的确很有趣。
安德拉斯·萨拉蒙


1

也不是答案,但是您可以通过次传递来确定非确定性空间中的。只是猜测第节点的的路径,并检查它们连接在第一轮,然后从最后这些的继续的顶点和检查下从路径等。k n / k s t n / k n / k s tO(nlogn/k)kn/kstn/kn/kst

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.