In this paper we propose a new algorithm for finding the blocks (biconnected components) of an undirected graph. A serial implementation runs in O(n plus m) time and space on a graph of n vertices and m edges. A parallel implementation runs in O(log n) time and O(n plus m) space using O(n plus m) processors on a concurrent-read, concurrent-write parallel RAM. An alternative implementation runs in O(n**2/p) time and O(n**2) space using any number p less than equivalent to n**2/log**2 n of processors, on a concurrent-read, exclusive-write parallel RAM. The last algorithm has optimal speedup, assuming an adjacency matrix representation of the input. A general algorithmic technique that simplifies and improves computation of various functions on trees is introduced.
All Science Journal Classification (ASJC) codes
- Computer Science(all)