kirancodes.me
To Proof Maintenance & Beyond!

Truly Functional Solutions to the Longest Uptrend Problem (Functional Pearl)

Alexander Dinges, Ralf Hinze

Abstract

Solutions to the longest increasing subsequence problem are typically implemented imperatively, relying on arrays for constant-time lookups and updates. Replacing these arrays with functional sequences allows a purely functional solution with the same asymptotic running time, but with significantly worse practical performance. In this pearl, we present a purely functional approach that is not only asymptotically optimal, but also efficient in practice. The core idea is to exploit the interplay between search, lookup, and update operations through Huet's zipper. In addition, we improve the adaptive behaviour of imperative solutions commonly found in the literature.

Related papers