Questions tagged «transitive-closure»

1
在线传递闭包效果优于每个边添加的O(N ^ 2)
我正在寻找一种在线算法来维护有向无环图的传递闭合,其时间复杂度小于每个边添加的O(N ^ 2)。我当前的算法是这样的: For every new edge u->v connect all nodes in Pred(u) \cup { u } with all nodes in Succ(v) \ \cup { v }. 对于O(N ^ 2)边,这转化为O(N ^ 4)的总时间复杂度,这比例如Floyd-Warshall更差。

2
计算可传递补全/路径存在预言
已经有几个问题(1,2,3约在这里传递完成),这让我觉得如果这样的事情是可能的: 假设我们得到一个有向图的输入,并想回答“GGG(u,v)∈G+(u,v)∈G+(u,v)\in G^+?”,即询问图的传递完成中两个顶点之间是否存在边 GGG?(等效地,“是否存在从uuu 至 vvv 在 GGG?”)。 给定后 GGG 您可以及时运行预处理 f(n,m)f(n,m)f(n,m) 然后需要及时回答查询 g(n,m)g(n,m)g(n,m)。 显然,如果 f=0f=0f=0 (即不允许进行预处理),最好的办法是及时回答查询 g(n)=Ω(n+m)g(n)=Ω(n+m)g(n)=\Omega(n+m)。(从运行DFSuuu 至 vvv 并返回true(如果存在路径)。 另一个琐碎的结果是,如果 f=Ω(min{n⋅m,nω})f=Ω(min{n⋅m,nω})f=\Omega(min\{n\cdot m,n^\omega\}),您可以计算可传递闭包,然后在 O(1)O(1)O(1)。 中间的东西呢?如果允许,请说f=n2f=n2f=n^2 预处理时间,您可以比 O(m+n)O(m+n)O(m+n)?也许将其改进为O(n)O(n)O(n)? 另一个变化是:假设您有 poly(n,m)poly(n,m)poly(n,m) 预处理时间,但仅 o(n2)o(n2)o(n^2) 空间,您是否可以使用预处理比以下方法更有效地回答查询 O(n+m)O(n+m)O(n+m)? 我们可以说些什么吗? f,gf,gf,g 可以回答此类查询的折衷方案? 在GPS系统中考虑了一种类似的权衡结构,在该系统中,不可能拥有位置之间所有成对距离的完整路由表,因此它使用了距离预言机的思想,该预言表存储了部分表,但在计算整个距离时可以显着提高查询速度图(通常只产生点之间的近似距离)。

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.