Fast algorithms for finding nearest common ancestors
SIAM Journal on Computing
On finding lowest common ancestors: simplification and parallelization
SIAM Journal on Computing
Matrix multiplication via arithmetic progressions
Journal of Symbolic Computation - Special issue on computational algebraic complexity
Finding level-ancestors in trees
Journal of Computer and System Sciences
Rectangular matrix multiplication revisited
Journal of Complexity
Fast rectangular matrix multiplication and applications
Journal of Complexity
All pairs shortest paths using bridging sets and rectangular matrix multiplication
Journal of the ACM (JACM)
Lowest common ancestors in trees and directed acyclic graphs
Journal of Algorithms
Faster algorithms for finding lowest common ancestors in directed acyclic graphs
Theoretical Computer Science
Unique lowest common ancestors in dags are almost as easy as matrix multiplication
ESA'07 Proceedings of the 15th annual European conference on Algorithms
Fast lowest common ancestor computations in dags
ESA'07 Proceedings of the 15th annual European conference on Algorithms
LCA queries in directed acyclic graphs
ICALP'05 Proceedings of the 32nd international conference on Automata, Languages and Programming
A Path Cover Technique for LCAs in Dags
SWAT '08 Proceedings of the 11th Scandinavian workshop on Algorithm Theory
Hi-index | 5.23 |
A common ancestor of two vertices u,v in a directed acyclic graph is a vertex w that can reach both. A {u,v}-junction is a common ancestor w so that there are two paths, one from w to u and the other from w to v, that are internally vertex-disjoint. A lowest common ancestor (LCA) of u and v is a common ancestor w so that no other common ancestor of u and v is reachable from w. Every {u,v}-LCA is a {u,v}-junction, but the converse is not true. Similarly, not every common ancestor is a junction. The all-pairs common ancestor (APCA) problem computes (or determines the non-existence of) a common ancestor for all pairs of vertices. Similarly defined are the all-pairs junction (APJ) and the all-pairs LCA (APLCA) problems. The APCA problem also has an existence version. Bender et al. obtained an algorithm for APCA existence by reduction to transitive closure. Their algorithm runs in O@?(n^@w) time where @w=2, the k-APCA and the k-APLCA problems are to find, respectively, a common ancestor and a lowest common ancestor for each k-set of vertices. We prove that for all fixed k=8, the k-APCA problem can be solved in O@?(n^k) time, thereby obtaining an essentially optimal algorithm. We also prove that for all k=4, the k-APLCA problem can be solved in O@?(n^k^+^1^/^2) time.