Algorithm 确定图的传递自反闭包的时间复杂性

Algorithm 确定图的传递自反闭包的时间复杂性,algorithm,complexity-theory,graph-theory,transitive-closure,Algorithm,Complexity Theory,Graph Theory,Transitive Closure,考虑一个任意有向图G(可以包含自循环)和A其各自的邻接矩阵。 在aO(n^4)时间中,是否有一种方法(算法)来计算图G的传递自反闭包对应的邻接矩阵?有没有办法在O(log(n)n^3)中计算它? 传递自反闭包的定义如下: Gt(V,E)是G的传递自反闭包,仅当u=V或G中是从u到V的路径时,G:(u,V)在E中 这就是我们所知道的。如果存在从一个顶点到另一个顶点的有向路径,则需要n×n矩阵为1,否则为0;或者,任何其他允许在O(1)时间内进行查询的数据结构都可能同样满足您的目的 对于有向图,标准

考虑一个任意有向图
G
(可以包含自循环)和
A
其各自的邻接矩阵。 在a
O(n^4)
时间中,是否有一种方法(算法)来计算图
G
的传递自反闭包对应的邻接矩阵?有没有办法在
O(log(n)n^3)
中计算它? 传递自反闭包的定义如下:

Gt(V,E)是G的传递自反闭包,仅当u=V或G中是从u到V的路径时,G:(u,V)在E中

这就是我们所知道的。如果存在从一个顶点到另一个顶点的有向路径,则需要n×n矩阵为1,否则为0;或者,任何其他允许在O(1)时间内进行查询的数据结构都可能同样满足您的目的

对于有向图,标准的解决方案是在O(n3)时间内运行一些算法,或者在O(n2+nm)时间内从所有节点运行一些算法,其中m是边的数目。因为您不需要最短路径,所以来自所有节点的路径与BFS一样好

另一种解决方案是在首先用1s填充对角线之后,对图的邻接矩阵A进行O(logn)矩阵乘法,以找到矩阵幂An。它的运行时间将取决于矩阵乘法算法的运行时间。渐近地,在O(n2.373)时间内运行,因此这给出了O(n2.373 logn)时间内的解。传递闭包的矩阵乘法算法被证明是渐近最优的,但我们不知道矩阵乘法的真正复杂性是什么

在大多数实际应用中,这些算法可以通过首先找到图的可达性,然后仅仅解决组件之间的可达性问题来改进。但是,最坏情况下的运行时间将是相同的,因为可能有多达n个组件

对于某些类型的有向图,有一些特例算法,例如在O(n logn)时间内解决有向图的可达性问题,或者在特定的一类平面图上在O(n)时间内运行


对于无向图,a可以在O(mα(n))时间内构建,其中α是非常缓慢增长的。

除了@Kaya3提到的,还计算了O中DAG的传递闭包(|