A Work-Efficient Parallel Algorithm for Longest Increasing Subsequence

This paper studies parallel algorithms for the longest increasing subsequence (LIS) problem. Let be the input size and be the LIS length of the input. Sequentially, LIS is a simple textbook problem that can be solved using dynamic programming (DP) in work. However, parallelizing LIS is a long-standing challenge. We are unaware of any parallel LIS algorithm that has optimal work and non-trivial parallelism (i.e., or span). Here, the work of a parallel algorithm is the total number of operations, and the span is the longest dependent instructions. This paper proposes a parallel LIS algorithm that costs work, span, and space, and is \emph{much simpler} than the previous parallel LIS algorithms. We also generalize the algorithm to a weighted version of LIS, which maximizes the weighted sum for all objects in an increasing subsequence. Our weighted LIS algorithm has work and span. We also implemented our parallel LIS algorithms. Due to simplicity, our implementation is light-weighted, efficient, and scalable. On input size , our LIS algorithm outperforms a highly-optimized sequential algorithm (with cost) on inputs with . Our algorithm is also much faster than the best existing parallel implementation by Shen et al. on all input instances.
View on arXiv