デコーディング【decoding】
読み方:でこーでぃんぐ
⇒デコード
デコーディング
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/08/31 15:26 UTC 版)
「Lempel–Ziv–Welch」の記事における「デコーディング」の解説
デコーディングアルゴリズムは以下の通り。 辞書を初期化する(エンコーディングの1と同じ) 入力からコードを1つ読み込み、入力から削除する そのコードに対応する文字列Wを辞書から得る 出力にWを送出する 入力から次のコードを読み込む 次のコードに対応する文字列の最初の文字sをWに付け足したW + sを辞書に追加する 2に戻る
※この「デコーディング」の解説は、「Lempel–Ziv–Welch」の解説の一部です。
「デコーディング」を含む「Lempel–Ziv–Welch」の記事については、「Lempel–Ziv–Welch」の概要を参照ください。
デコーディング
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/08/31 15:26 UTC 版)
「Lempel–Ziv–Welch」の記事における「デコーディング」の解説
デコーダーはアルファベット大文字しか使わず、初期コード幅が5ビットで可変幅エンコーディングであり、ストップコードが0であるという前提を知っていなければならない。 入力出力する文字辞書への追加コメントビットコード完全推測10100 20 T 27: T? 01111 15 O 27: TO 28: O? 01011 11 K 28: OK 29: K? 11001 25 Y 29: KY 30: Y? 01111 15 O 30: YO 31: O? 11011 27 TO 31: OT 32: TO? コード31を追加する(5ビットで読み取る最後の入力) 001011 11 K 32: TOK 33: K? 6ビットで読み込む 011101 29 KY 33: KK 34: KY? 011100 28 OK 34: KYO 35: OK? 011110 30 YO 35: OKY 36: YO? 001011 11 K 36: YOK 37: K? 000001 1 A 37: KA 38: A? 100010 34 KYO 38: AK 39: KYO? 001011 11 K 39: KYOK 40: K? 010101 21 U 40: KU 41: U? 000000 0 # まず入力ビット列から5ビット読み込み、コード20に対応した文字Tを辞書から得る。次の5ビットを読み込み、同様に文字Oを得る。ここで一回前に得られた文字Tと今回得られた文字Oの先頭の文字Oを連結したTOを辞書に追加する。以下同様にやっていき、復号する。 また、 TANBANANAS# をエンコードしたものを、デコードする際には、 エンコーディングデコーディング現在の文字出力するコード辞書への追加入力コード出力する文字辞書への追加T 20 27: TA 20 T A 1 28: AN 1 A 27: TA N 14 29: NB 14 N 28: AN B 2 30: BA 2 B 29: NB AN 28 31: ANA 28 AN 30: BA ANA 31 32: ANAS 31 ? S 19 19 # 0 0 入力コード31が出てくるが辞書にはない。これはエンコーディングで辞書に追加したばかりのコードを直後に使っているが、デコーディングでは辞書への追加は1コード分遅れておりまだ追加されていないために起こる。しかし、コード31に対応する文字列がANAであることは原理上明らかである。なぜなら、コード31に対応する文字列は1つ前にデコーディングした文字列ANになんらかの1文字を連結したものである。その1文字はコード31に対応する文字列の先頭の文字である。よってその1文字はANの先頭の文字のAであり、31に対応するのはANにAを連結したANAである。 cは文字で、Sは文字列とし、cSはすでに出現しているが、cScは出現していない状況でcScScと並んだ時に起きる。
※この「デコーディング」の解説は、「Lempel–Ziv–Welch」の解説の一部です。
「デコーディング」を含む「Lempel–Ziv–Welch」の記事については、「Lempel–Ziv–Welch」の概要を参照ください。
- デコーディングのページへのリンク