可変長符号のソースを表示
←
可変長符号
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[符号理論]]において、'''可変長符号'''(かへんちょうふごう、{{lang-en|variable-length code}})とは、情報源の記号に対して割り当てる符号を可変長とする[[符号]]である。 可変長符号は、情報源が誤りなしで[[データ圧縮|圧縮]]および解凍([[可逆圧縮]])され、依然として記号として読み取られることを可能にする。正しい符号戦略により、 [[独立同分布]]の情報源は、その[[情報エントロピー|エントロピー]]の近い符号長でほぼ任意に圧縮される。これは、データ圧縮が大量のデータブロックに対してのみ可能な[[固定長符号]]とは対照的であり、可能性の合計の対数を超える圧縮は、有限の(おそらく任意に小さい)失敗確率でもたらされる。 良く知られた可変長符号には、[[ハフマン符号]]、[[LZ77|Lempel-Ziv符号]]、[[算術符号]]などがある。 == 符号とその拡張 == 符号の拡張は、元の符号によって生成された対応する符号語を、情報源配列の各シンボルに対して連結することによって得られる、有限長情報源配列の有限長ビット列へのマッピングである。 [[形式言語|形式言語理論]]の用語を使用すると、正確な数学的定義は次のようになる。 <math>S</math> と <math>T</math> という2つの有限集合があり、<math>S</math> を情報源[[アルファベット (計算機科学)|アルファベット]]、<math>T</math> を[[符号アルファベット]]とする。'''符号''' <math>C:\, S \to T^*</math> は、<math>S</math> の個々のシンボルが <math>T</math> の元を使った[[ワード]](シンボルの並び)に対応する[[写像|全域写像]]であり、<math>S^*</math> から <math>T^*</math> への[[準同型]]写像に拡張すれば、情報源アルファベットの並びを符号アルファベットの並びへと自然に写像できる。 == 可変長符号の分類 == 可変長符号は、一般性が低下する順に、非特異符号、一意復号可能な符号、接頭符号として厳密に入れ子状に分類することができる。接頭符号は常に一意復号可能であり、かつ非特異である。 === 非特異符号 === 情報源の各シンボルが異なる符号語に写像される場合、すなわち、情報源シンボルから符号語への写像が[[単射]]である場合、符号が'''非特異'''(non-singular)であるという。 * 例えば、写像 <math>M_1 = \{\, a\mapsto 0, b\mapsto 0, c\mapsto 1\,\}</math> は、"a"と"b"の両方が同じビット列"0"に写像されるため、非特異ではない(特異(singular)である)。この写像を拡張すると、非可逆符号になる。このような特異符号は、情報の損失が許容可能である場合(音声や映像の圧縮など)には有用である。 * 写像 <math>M_2 = \{\, a \mapsto 1, b \mapsto 011, c\mapsto 01110, d\mapsto 1110, e\mapsto 10011, f\mapsto0\}</math> は非特異である。その拡張は可逆圧縮となり、一般的なデータ送信に有用である(ただし、この機能は必ずしも必要ではない)。非特異符号は情報源よりも必ずしも小さくなる必要はない。多くの応用において、符号長が長くなることが有用な場合もある。例えば、符号化や伝送時の誤りを検出・復旧するため、セキュリティアプリケーションでは検出不能な改竄から情報を保護するためなどである。 === 一意復号可能な符号 === 拡張が非特異である場合、符号が'''一意復号可能'''(uniquely decodable)であるという。符号が一意復号可能であるかどうかは、{{仮リンク|サーディナス=パターソンのアルゴリズム|en|Sardinas–Patterson algorithm}}によって決定することができる。 * 写像 <math>M_3 = \{\, a\mapsto 0, b\mapsto 01, c\mapsto 011\,\}</math> は一意復号可能である。これは、0が符号語の先頭にしか現れないので、符号文字列中に0が現れたら、それが符号語の区切りであることが明白だからである。 * ここで前節の符号 <math>M_2</math> を再度検討する。この符号(実例は<ref>Berstel et al. (2009), Example 2.3.1, p. 63</ref>にある)は一意復号可能ではない。符号文字列 011101110011 は、符号語 01110-1110-011 の列として解釈できるほか、符号語 011-1-110 の列としても解釈できるからである。よって、この符号文字列は ''cdb'' と ''babe'' の2通りに復号しうる。しかし、このような符号は、全て可能な情報源シンボルの集合が完全に既知で有限である場合、またはこの拡張の情報源要素が受け入れられるかどうかを決定する制限(たとえば正式な構文)がある場合に便利である。そのような制限は、同じシンボルに写像される可能性のある情報源シンボルのどれがこれらの制限の下で有効であるかをチェックすることによって、元のメッセージを復号することが可能になる。 === 接頭符号 === {{Main|接頭符号}} 写像内のターゲットビット列が、同じ写像内の異なる情報源シンボルのターゲットビット列の接頭部でない場合、その符号は'''接頭符号'''(prefix code)である。つまり、シンボルは、符号語全体が受信されると即時に復号することができる。そのため、接頭符号は瞬時復号可能符号とも呼ばれる。 * 前節の符号 <math>M_3</math> は接頭符号ではない。符号文字列の"0"を受信した時点で、それが情報源シンボル ''a'' に対応する符号語なのか、情報源シンボル ''b'' や ''c'' に対応する符号語の接頭部なのかが判別できないからである。 * 接頭符号の例を以下に示す。 {| class="wikitable" style="text-align:center; position: relative; left: 1in;" | |- ! シンボル !! 符号語 |- | a || 0 |- | b || 10 |- | c || 110 |- | d || 111 |} :: 符号化と復号の例 ::: aabacdab → 00100110111010 → |0|0|10|0|110|111|0|10| → aabacdab [[ブロック符号]]は接頭符号の特別な場合である。ブロック符号では、符号語が固定長である。ブロック符号は[[情報源符号化]]においてはそれほど有用ではないが、[[通信路符号化]]において[[誤り訂正符号]]として役立つ。 任意の大きな整数を一連のオクテットとして符号化する(すなわち、すべての符号語は8ビットの倍数である)[[可変長数値表現]]もまた、接頭符号の特別な場合である。 == 利点 == 可変長符号の利点は、あまり出現しない情報源シンボルには長い符号語を、よく出現する情報源シンボルには短い符号語を割り当てることができ、それによって符号長の[[期待値]]が短くなることである。前節の接頭符号の例で、(a, b, c, d) の出現確率が <math>\textstyle\left(\frac{1}{2}, \frac{1}{4}, \frac{1}{8}, \frac{1}{8}\right)</math> であったとき、情報源シンボルを表すのに必要な符号文字列の符号長の期待値は、次のようになる。 :: <math>1\times\frac{1}{2}+2\times\frac{1}{4}+3\times\frac{1}{8}+3\times\frac{1}{8}=\frac{7}{4}</math>. この情報源のエントロピーは1シンボル当たり1.7500ビットであるので、この符号は情報源を誤りなしで復号できるように情報源を可能な限り圧縮する。 == 脚注 == <references/> == 出典 == * {{cite book | last1=Berstel | first1=Jean | last2=Perrin | first2=Dominique | last3=Reutenauer | first3=Christophe | title=Codes and automata | series=Encyclopedia of Mathematics and its Applications | volume=129 | location=Cambridge | publisher=[[Cambridge University Press]] | year=2010 | isbn=978-0-521-88831-8 | zbl=1187.94001 }} [http://www-igm.univ-mlv.fr/~berstel/LivreCodes/Codes.html Draft available online] {{データ圧縮}} {{デフォルトソート:かへんちようふこう}} [[Category:符号理論]] [[Category:可逆圧縮アルゴリズム]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Lang-en
(
ソースを閲覧
)
テンプレート:Main
(
ソースを閲覧
)
テンプレート:データ圧縮
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
可変長符号
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報