10887766
Fully persistent lists with catenation
This paper considers the problem of representing stacks with catenation so that any stack, old or new, is available for access or update operations. This problem arises in the implementation of list-based and functional programming languages. A solution is proposed requiring constant time and space for each stack operation except catenation, which requires O(log log k) time and space. Here k is the number of stack operations done before the catenation. All the resource bounds are amortized over the sequence of operations.
364871
Making data structures persistent
Abstract This paper is a study of persistence in data structures. Ordinary data structures are ephemeral in the sense that a change to the structure destroys the old version, leaving only the new version available for use. In contrast, a persistent structure allows access to any version, old or new, at any time. We develop simple, systematic, and efficient techniques for making linked data structures persistent. We use our techniques to devise persistent forms of binary search trees with logarithmic access, insertion, and deletion times and O (1) space bounds for insertion and deletion.
37146522
Making Data Structures Persistent
18789602
Testing graph connectivity
An algorithm proposed by Dinic for finding maximum flows in networks and by Hopcroft and Karp for finding maximum bipartite matchings is applied to graph connectivity problems. It is shown that the algorithm requires 0(V<supscrpt>1/2</supscrpt>E) time to find a maximum set of node-disjoint paths in a graph, and 0(V<supscrpt>2/3</supscrpt>E) time to find a maximum set of edge disjoint paths. These bounds are tight. Thus the node connectivity of a graph may be tested in 0(V<supscrpt>5/2</supscrpt>E) time, and the edge connectivity of a graph may be tested in 0(V<supscrpt>5/3</supscrpt>E) time.
18699794
Almost-optimum speed-ups of algorithms for bipartite matching and related problems
We present algorithms for matching and related problems that run on an EREW PRAM with <italic>p</italic> processors. Given is a bipartite graph <italic>G</italic> with <italic>n</italic> vertices, <italic>m</italic> edges, and integral edge costs at most <italic>N</italic> in magnitude. We give an algorithm for the assignment problem (minimum cost perfect bipartite matching) that runs in <italic>&Ogr;</italic>(√<italic>nm</italic> log (<italic>nN</italic>)(log(2<italic>p</italic>))/<italic>p</italic>) time and <italic>&Ogr;</italic>(<italic>m</italic>) space, for <italic>p</italic> ≤ <italic>m</italic>/(√<italic>n</italic>log<supscrpt>2</supscrpt><italic>n</italic>). For <italic>p</italic> = 1 this improves the best known sequential algorithm, and is within a factor of log (<italic>nN</italic>) of the best known bound for the problem without costs (maximum cardinality matching). For <italic>p</italic> > 1 the time is within a factor of log <italic>p</italic> of optimum speed-up. Extensions include an algorithm for maximum cardinality bipartite matching with slightly better processor bounds, and similar results for bipartite degree-constrained subgraph problems (with and without costs). Our ideas also extend to general graph matching problems.
18350108
Faster scaling algorithms for general graph matching problems
An algorithm for minimum-cost matching on a general graph with integral edge costs is presented. The algorithm runs in time close to the fastest known bound for maximum-cardinality matching. Specifically, let n, m, and N denote the number of vertices, number of edges, and largest magnitude of a cost, respectively. The best known time bound for maximum-cardinal ity matching M 0( Am). The new algorithm for minimum-cost matching has time bound 0( in a ( m, n )Iog n m log ( nN)). A slight modification of the new algorithm finds a maximum-cardinality matching in 0( fire) time. Other applications of the new algorlthm are given, mchrding an efficient implementa- tion of Christofides' traveling salesman approximation algorithm and efficient solutions to update problems that require the linear programming duals for matching.
705851
A linear-time algorithm for a special case of disjoint set union
This paper presents a linear-time algorithm for the special case of the disjoint set union problem in which the structure of the unions (defined by a “union tree”) is known in advance. The algorithm executes an intermixed sequence of <italic>m</italic> union and find operations on <italic>n</italic> elements in 0(<italic>m</italic>+<italic>n</italic>) time and 0(<italic>n</italic>) space. This is a slight but theoretically significant improvement over the fastest known algorithm for the general problem, which runs in 0(<italic>m</italic>α(<italic>m</italic>+<italic>n, n</italic>)+<italic>n</italic>) time and 0(<italic>n</italic>) space, where α is a functional inverse of Ackermann's function. Used as a subroutine, the algorithm gives similar improvements in the efficiency of algorithms for solving a number of other problems, including two-processor scheduling, the off-line min problem, matching on convex graphs, finding nearest common ancestors off-line, testing a flow graph for reducibility, and finding two disjoint directed spanning trees. The algorithm obtains its efficiency by combining a fast algorithm for the general problem with table look-up on small sets, and requires a random access machine for its implementation. The algorithm extends to the case in which single-node additions to the union tree are allowed. The extended algorithm is useful in finding maximum cardinality matchings on nonbipartite graphs.
7483054
A Linear-Time Algorithm for a Special Case of Disjoint Set Union
This paper presents a linear-time algorithm for the special case of the disjoint set union problem in which the structure of the unions (defined by a “union tree”) is known in advance. The algorithm executes an intermixed sequence of m union and find operations on n elements in O(m+n) time and O(n) space. This is a slight but theoretically significant improvement over the fastest known algorithm for the general problem, which runs in O(mα(m+n, n)+n) time and O(n) space, where a is a functional inverse of Ackermann's function. Used as a subroutine, the algorithm gives similar improvements in the efficiency of algorithms for solving several other problems, including two-processor scheduling, matching on convex graphs, finding nearest common ancestors off-line, testing a flow graph for reducibility, and finding two disjoint directed spanning trees. The algorithm obtains its efficiency by combining the fast algorithm for the general problem with table look-up on small sets, and requires a random access machine for its implementation. The algorithm extends to the case in which single-node additions to the union tree are allowed. The extended algorithm is useful in finding maximum cardinality matchings in nonbipartite graphs.