A Data Structure for Dynamic Trees

A Data Structure for Dynamic Trees

Vol. 26, No. 3, June 1983 | DANIEL D. SLEATOR AND ROBERT ENDRE TARIAN
The paper introduces a data structure for maintaining a collection of vertex-disjoint trees under two types of operations: linking two trees by adding an edge and cutting a tree into two by deleting an edge. Each operation takes $O(\log n)$ time. The data structure is used to develop efficient algorithms for several graph-theoretic problems, including computing nearest common ancestors, solving network flow problems, finding constrained minimum spanning trees, and implementing the network simplex algorithm for minimum-cost flows. The most significant application is the algorithm for finding maximum flows in a network of $n$ vertices and $m$ edges, which runs in $O(mn \log n)$ time, improving the previous best-known time complexity for sparse graphs. The paper presents two versions of the data structure: one with amortized time complexity $O(\log n)$ per operation and another with worst-case time complexity $O(\log n)$ per operation. The implementation details and analysis of the data structure are provided, along with a discussion of its variations and related work.The paper introduces a data structure for maintaining a collection of vertex-disjoint trees under two types of operations: linking two trees by adding an edge and cutting a tree into two by deleting an edge. Each operation takes $O(\log n)$ time. The data structure is used to develop efficient algorithms for several graph-theoretic problems, including computing nearest common ancestors, solving network flow problems, finding constrained minimum spanning trees, and implementing the network simplex algorithm for minimum-cost flows. The most significant application is the algorithm for finding maximum flows in a network of $n$ vertices and $m$ edges, which runs in $O(mn \log n)$ time, improving the previous best-known time complexity for sparse graphs. The paper presents two versions of the data structure: one with amortized time complexity $O(\log n)$ per operation and another with worst-case time complexity $O(\log n)$ per operation. The implementation details and analysis of the data structure are provided, along with a discussion of its variations and related work.
Reach us at info@study.space