Dynamic Programming21 sections · 916 units
Open in Course

Longest Bitonic Subsequence - Walkthrough

Two-directional LIS

Bitonic sequence: increases then decreases. Find the longest bitonic subsequence. Compute lis[i]lis[i] = LIS ending at ii (left to right). Compute lds[i]lds[i] = longest decreasing subsequence starting at ii (right to left, which is LIS on reversed array).

For each peak position ii: bitonic length = lis[i]+lds[i]1lis[i] + lds[i] - 1 (subtract 11 to not count peak twice). Example: [1,11,2,10,4,5,2,1][1, 11, 2, 10, 4, 5, 2, 1]. At index 33 (value 1010): lis[3]=3lis[3] = 3, lds[3]=4lds[3] = 4. Bitonic = 3+41=63 + 4 - 1 = 6.