LCS(最長(zhǎng)公共子序列)問(wèn)題可以簡(jiǎn)單地描述如下:
一個(gè)給定序列的子序列是在該序列中刪去若干元素后得到的序列。給定兩個(gè)序列X和Y,當(dāng)另一序列Z既是X的子序列又是Y的子序列時(shí),稱(chēng)Z是序列X和Y的公共子序列。例如,若X={A,B,C,B,D,B,A},Y={B,D,C,A,B,A},則序列{B,C,A}是X和Y的一個(gè)公共子序列,但它不是X和Y的一個(gè)最長(zhǎng)公共子序列。序列{B,C,B,A}也是X和Y的一個(gè)公共子序列,它的長(zhǎng)度為4,而且它是X和Y的一個(gè)最長(zhǎng)公共子序列,因?yàn)閄和Y沒(méi)有長(zhǎng)度大于4的公共子序列。
最長(zhǎng)公共子序列問(wèn)題就是給定兩個(gè)序列X={x1,x2,...xm}和Y={y1,y2,...yn},找出X和Y的一個(gè)最長(zhǎng)公共子序列。對(duì)于這個(gè)問(wèn)題比較容易想到的算法是窮舉,對(duì)X的所有子序列,檢查它是否也是Y的子序列,從而確定它是否為X和Y的公共子序列,并且在檢查過(guò)程中記錄最長(zhǎng)的公共子序列。X的所有子序列都檢查過(guò)后即可求出X和Y的最長(zhǎng)公共子序列。X的每個(gè)子序列相應(yīng)于下標(biāo)集{1,2,...,m}的一個(gè)子集。因此,共有2^m個(gè)不同子序列,從而窮舉搜索法需要指數(shù)時(shí)間。
標(biāo)簽:
序列
LCS
元素
上傳時(shí)間:
2015-06-09
上傳用戶(hù):氣溫達(dá)上千萬(wàn)的