在計算機科學中,最長遞增子序列(longest increasing subsequence)問題是指,在一個給定的數值序列中,找到一個子序列,使得這個子序列元素的數值依次遞增,並且這個子序列的長度儘可能地大。
基本介紹
- 中文名:最長遞增子串列
- 外文名:longest increasing subsequence
- 學科:計算機
簡介,例子,算法,
簡介
最長遞增子序列中的元素在原序列中不一定是連續的。許多與數學、算法、隨機矩陣理論、表示論相關的研究都會涉及最長遞增子序列。解決最長遞增子序列問題的算法最低要求O(nlogn)的時間複雜度,這裡n表示輸入序列的規模。
例子
對於以下的原始序列
- 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15
最長遞增子序列為
- 0, 2, 6, 9, 11, 15.
值得注意的是原始序列的最長遞增子序列並不一定唯一,對於該原始序列,實際上還有以下兩個最長遞增子序列
- 0, 4, 6, 9, 11, 15 或 0, 4, 6, 9, 13, 15
算法
算法(algorithm),在數學(算學)和計算機科學之中,為任何良定義的具體計算步驟的一個序列,常用於計算、數據處理和自動推理。精確而言,算法是一個表示為有限長列表的有效方法。算法應包含清晰定義的指令用於計算函式。