Move To Front
まず初期化として、符号化の対象とするデータ列をリスト状に並べる。 対象:a b a b a c a c a
次に、符号化対象とするデータ列から記号を1つ読み込む。この読み込んだ記号が以前に出現していなければそのまま出力する。同時に、出現した記号をテーブルに登録する。 出力:a テーブル:a
一度出力したことのある記号まで1と2を繰り返す。出現した記号は常にテーブルの先頭に登録する。 出力:a b テーブル:b a
aは一度出力したことがあるので、以前のaがテーブルの何番目に位置するかを、整数で出力する。そして、この記号をテーブルの先頭位置に移動する。 出力:a b 2 テーブル:a b
データ列のすべての記号を符号化するまでこの操作を繰り返す。 出力:a b 2 2 テーブル:b a 出力:a b 2 2 2 テーブル:a b 出力:a b 2 2 2 c テーブル:c a b 出力:a b 2 2 2 c 2 テーブル:a c b 出力:a b 2 2 2 c 2 2 テーブル:c a b 出力:a b 2 2 2 c 2 2 2 テーブル:a c b
このように、MTFを施すとデータが偏るようになる。これを圧縮すると高い圧縮率が期待できる。