Can you summarize the following document?
        
  一個數列formula_1,如果分別是兩個或多個已知數列的子序列,且是所有符合此條件序列中最長的,則formula_1稱為已知序列的最長公共子序列。

  對於一般性的LCS問題(即任意數量的序列)是屬於NP-hard。但當序列的數量確定時,問題可以使用動態規劃(Dynamic Programming)在多項式時間內解決。

  最長公共子序列問題存在最優子結構:這個問題可以分解成更小,更簡單的“子問題”,這個子問題可以分成更多的子問題,因此整個問題就變得簡單了。最長公共子序列問題的子問題的解是可以重複使用的,也就是說,更高階別的子問題通常會重用低階子問題的解。擁有這個兩個屬性的問題可以使用動態規劃演算法來解決,這樣子問題的解就可以被儲存起來,而不用重複計算。這個過程需要在一個表中儲存同一級別的子問題的解,因此這個解可以被更高階的子問題使用。  動態規劃的一個計算最長公共子序列的方法如下,以兩個序列formula_3、formula_4為例子:  設有二維陣列formula_5表示formula_3的formula_7位和formula_4的formula_9位之前的最長公共子序列的長度,則有: 其中,formula_12當formula_3的第formula_14位與formula_4的第formula_16位完全相同時為“1”,否則為“0”。  此時,formula_5中最大的數便是formula_3和formula_4的最長公共子序列的長度,依據該陣列回溯,便可找出最長公共子序列。  該演算法的空間、時間複雜度均為formula_20,經過優化後,空間複雜度可為formula_21。

  下面演算法計算了所有子問題的最長公共子序列長度codice_1。
最長公共子序列(LCS)是一個在一個序列集合中(通常為兩個序列)用來查詢所有序列中最長子序列的問題。這與查詢最長公共子串的問題不同的地方是:子序列不需要在原序列中佔用連續的位置 。最長公共子序列問題是一個經典的電腦科學問題,也是資料比較程式,比如Diff工具,和生物資訊學應用的基礎。它也被廣泛地應用在版本控制,比如Git用來調和檔案之間的改變。