Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Fast algorithms for finding nearest common ancestors
SIAM Journal on Computing
Matrix multiplication via arithmetic progressions
STOC '87 Proceedings of the nineteenth annual ACM symposium on Theory of computing
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
On some algorithms for multiple inheritance in object-oriented programming
European conference on object-oriented programming on ECOOP '87
On finding lowest common ancestors: simplification and parallelization
SIAM Journal on Computing
Efficient implementation of lattice operations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial order programming (extended abstract)
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursive star-tree parallel data structure
SIAM Journal on Computing
Finding lowest common ancestors in arbitrarily directed trees
Information Processing Letters
New algorithms for the LCA problem and the binary tree reconstruction problem
Information Processing Letters
Finding level-ancestors in trees
Journal of Computer and System Sciences
Tree structure for distributive lattices and its applications
Theoretical Computer Science
Ordal'94 Selected papers from the conference on Orders, algorithms and applications
Optimizing matrix multiply using PHiPAC: a portable, high-performance, ANSI C coding methodology
ICS '97 Proceedings of the 11th international conference on Supercomputing
Proceedings of the tenth annual ACM-SIAM symposium on Discrete algorithms
Applications of Path Compression on Balanced Trees
Journal of the ACM (JACM)
The lowest common ancestor problem on a tree with an unfixed root
Information Sciences: an International Journal
Finding least common ancestors in directed acyclic graphs
SODA '01 Proceedings of the twelfth annual ACM-SIAM symposium on Discrete algorithms
LATIN '00 Proceedings of the 4th Latin American Symposium on Theoretical Informatics
All Pairs Shortest Paths in weighted directed graphs ? exact and almost exact algorithms
FOCS '98 Proceedings of the 39th Annual Symposium on Foundations of Computer Science
Scaling and related techniques for geometry problems
STOC '84 Proceedings of the sixteenth annual ACM symposium on Theory of computing
A linear-time algorithm for a special case of disjoint set union
STOC '83 Proceedings of the fifteenth annual ACM symposium on Theory of computing
Reasoning with taxonomies
On the range maximum-sum segment query problem
Discrete Applied Mathematics
All-pairs bottleneck paths in vertex weighted graphs
SODA '07 Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms
Enabling constant-time interface method dispatch in embedded Java processors
JTRES '07 Proceedings of the 5th international workshop on Java technologies for real-time and embedded systems
All-pairs disjoint paths from a common ancestor in Õ(nω) time
Theoretical Computer Science
Range mode and range median queries in constant time and sub-quadratic space
Information Processing Letters
Retrieving meaningful relaxed tightest fragments for XML keyword search
Proceedings of the 12th International Conference on Extending Database Technology: Advances in Database Technology
Kinetic maintenance of mobile k-centres on trees
Discrete Applied Mathematics
LS(graph & tree): a local search framework for constraint optimization on graphs and trees
Proceedings of the 2009 ACM symposium on Applied Computing
Faster entropy-bounded compressed suffix trees
Theoretical Computer Science
Sub-sentence division for tree-based machine translation
ACLShort '09 Proceedings of the ACL-IJCNLP 2009 Conference Short Papers
Hi-index | 0.00 |
We study the problem of finding lowest common ancestors (LCA) in trees and directed acyclic graphs (DAGs). Specifically, we extend the LCA problem to DAGs and study the LCA variants that arise in this general setting. We begin with a clear exposition of Berkman and Vishkin's simple optimal algorithm for LCA in trees. Their ideas lay the foundation for our work on LCA problems in DAGs. We present an algorithm that finds all-pairs-representative LCA in DAGs in Õ(n2.688) operations, provide a transitive-closure lower bound for the all-pairs-representative-LCA problem, and develop an LCA-existence algorithm that preprocesses the DAG in transitive-closure time. We also present a suboptimal but practical O(n3) algorithm for all-pairs-representative LCA in DAGs that uses ideas from the optimal algorithms in trees and DAGs. Our results reveal a close relationship between the LCA, all-pairs-shortest-path, and transitive-closure problems.We conclude the paper with a short experimental study of LCA algorithms in trees and DAGs. Our experiments and source code demonstrate the elegance of the preprocessing-query algorithms for LCA in trees. We show that for most trees the suboptimal Θ(n log n)-preprocessing Θ(1)-query algorithm should be preferred, and demonstrate that our proposed O (n3) algorithm for all-pairs-representative LCA in DAGs performs well in both low and high density DAGs.