MTF變換

MTF(move to front)變換是一種可逆變換,也稱為前移編碼

基本介紹

  • 中文名:MTF
  • 外文名:move to front
  • 也稱:前移編碼
  • 定義:一種可逆變換
MTF變換,關於最佳化,

MTF變換

MTF(move to front)變換是一種可逆變換
也稱為前移編碼
常用在BWT變換後
其維護一張"索引->數值"的表
以BYTE數據為例,假設對一字串S[1]S[2]...S[n]進行前移編碼
開始初始化表
索引
0
1
2
3
...
252
253
254
255
數值
0
1
2
3
...
252
253
254
255
逐個地進行如下步驟:
1.找到數值S[i]在表中對應的索引進行輸出(作為S'[i])
索引
0
1
2
3
...
S'[i]
...
254
255
數值
0
1
2
3
...
S[i]
...
254
255
2.將數值S[i]移動到表的開頭(索引行不變動)
索引
0
1
2
3
...
S'[i]
...
254
255
數值
S[i]
0
1
2
...
S[i]-1
...
254
255
拼接所有輸出的字元可得轉換後的串S'
解碼字串S'[1]S'[2]...S'[n]時同樣初始化表
索引
0
1
2
3
...
252
253
254
255
數值
0
1
2
3
...
252
253
254
255
逐個地進行如下步驟:
1.找到索引S'[i]在表中對應的數值進行輸出(作為S[i])
索引
0
1
2
3
...
S'[i]
...
254
255
數值
0
1
2
3
...
S[i]
...
254
255
2.將數值S[i]移動到表的開頭(索引行不變動)
索引
0
1
2
3
...
S'[i]
...
254
255
數值
S[i]
0
1
2
...
S[i]-1
...
254
255
拼接所有輸出的字元可得轉換後的串S
顯然正變換和逆變換是對稱的
同時可以發現,變換前後的字元集是一樣的,但是字元的數值會"前移"(向0值移動)
此變換很適合處理連續的相同字元組成的串(比如AAAAAAABBBBBBBCCCCCCC)
而BWT變換後的正是這種串

關於最佳化

從上面的介紹可以發現
MTF變換的速度和字元集大小以及串長有關(實際過程中則受串內容影響較大)
不加任何最佳化的計算,其最壞情況為O(字元集大小*串長)
如果採用BIT或跳躍表等高效數據結構進行最佳化,可達O(log(字元集大小)*串長)

相關詞條

熱門詞條

聯絡我們