We present a parallel algorithm (EREW PRAM algorithm) for linked lists contraction. We show that when we contract a linked list from size $n$ to size $n/c$ for a suitable constant $c$ we can pack the linked list into an array of size $n/d$ for a constant $1 < d\leq c$ in the time of 3 coloring the list. Thus for a set of linked lists with a total of $n$ elements and the longest list has $l$ elements our algorithm contracts them in $O(n\log i/p+(\log^{ (i)}n+\log i )\log \log l+ \log l)$ time, for an arbitrary constructible integer $i$, with $p$ processors on the EREW PRAM, where $\log^{ (1)} n =\log n$ and $\log^{ (t)}n=\log \log^{ (t-1)} n$ and $\log^*n=\min \{ i|\log^{ (i)} n < 10\}$. When $i$ is a constant we get time $O(n/p+\log^{ (i)}n\log \log l+\log l)$. Thus when $l=\Omega (\log^{ (c)}n)$ for any constant $c$ we achieve $O(n/p+\log l)$ time. The previous best deterministic EREW PRAM algorithm has time $O(n/p+\log n)$ and best CRCW PRAM algorithm has time $O(n/p+\log n/\log \log n+\log l)$. Keywords: Parallel algorithms, linked list, linked list contraction, uniform linked list contraction, EREW PRAM.

Categories: cs.DS cs.DC

Uniform Linked Lists Contraction