最長子序列

在數學和計算機科學中,子序列( subsequence )是指一個序列的一部分,它通過從原始序列中刪除一些元素得到。例如,序列 "ABCD" 的子序列包括 "ABCD"、"ABC"、"ABD"、"ACD"、"BCD"、"AB"、"AC"、"AD"、"BC"、"BD"、"CD" 以及空序列。

最長子序列( Longest Subsequence )是一個特殊的子序列,它是所有子序列中元素最多的。例如,序列 "ABCD" 的最長子序列是 "ABCD" 本身,因為它包含了所有四個元素。

在許多情況下,最長子序列問題被定義為尋找一個序列的所有子序列中,元素最大的子序列。這是一個NP-hard 問題, meaning 它對於大數據集來說很難解決。然而,對於某些特殊的序列類型,存在有效的算法來找到最長子序列。

例如,對於一個遞增序列(如 "1234"),最長子序列就是序列本身。對於一個遞減序列(如 "4321"),最長子序列也是序列本身。對於一般的序列,可以使用動態規劃算法(如 LIS 算法)來找到最長子序列。