接頭符号とは? わかりやすく解説

接頭符号

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/11/03 01:28 UTC 版)

接頭符号(せっとうふごう、: Prefix code)は、語頭属性(prefix property)を満たす符号の事で、通常可変長符号である。主にデータ圧縮に使われる。接頭符号の例として可変長ハフマン符号がある。

日本語では他に語頭符号、英語では prefix-free codeprefix condition codecomma-free codeinstantaneous code(日本語では瞬時復号可能符号)などとも呼ばれる。ハフマン符号は接頭符号を生成する数あるアルゴリズムの1つに過ぎないが、ハフマンのアルゴリズムを使わずに生成した接頭符号も「ハフマン符号」と呼ぶことがある。

接頭符号はエントロピー符号の一種で、従って可逆圧縮である。 またクラフトの不等式は、接頭符号として可能な符号語の長さの特性を示している。

接頭符号の定義とその意義

符号が語頭属性を満たすとは、任意の符号語が他のいかなる符号語の接頭部になっていないという属性である。ここで符号語接頭部とは、あるを用いての形にかける語の事である。語頭属性を満たす符号を接頭符号という。

例えば、00、100、11という符号語からなる符号は、語頭属性を持つが、一方00、100、10 という符号語からなる符号は語頭属性を持たない(これは、"10" が "100"の接頭部になっている為)。

語頭属性のない符号を使って複数文字からなる文章を符号化すると、符号化された文字列から元の文書を得ることが面倒な場合がある。 たとえば文字a,b,cをそれぞれ00, 100, 10に符号化した場合を考えてみよう。「baa...」で始まる文章は「1000000...」と符号化され、「caa...」で始まる文章は「100000...」と符号化される。「baa...」の場合は 1の後に0が偶数個連なり、「caa...」の場合は0が奇数個連なることに注意すれば、この符号も、かならず一意に復号することは可能である。しかし、初めの「1000...」を見ただけでは最初の文字がbであったのかcであったのかを決めることができないため、あまり好ましくない。

以上のような不都合が生じるのは、文字「c」の符号語「10」が、文字「b」の符号語「100」の接頭部であるからである。

一方、接頭符号の場合は、ある文字の符号語が別の符号語の接頭部になっている事はないので、このような不都合は生じない。 実際、符号語の集合をとするとき、接頭符号の場合は以下の方法で復号できる。

  • 符号化された文字列を入力として受け取る
  • While(空列)
    • の接頭部がになっているようなを見つける。
    • 符号語に対応する文字を出力。
    • の先頭からを取り去ったものを新しくとする。

このように、符号語ごとに順次復号ができることから、接頭符号は「瞬時符号」とも呼ばれる。 接頭符号の復号計算は、入力の長さの線形時間であるため、効率的である。また復号計算アルゴリズムはオートマトンで記述できるほど単純である。

なお、語頭符号でなくても、符号語の切れ目にカンマをいれて「100,00」などとする事で瞬時符号に変換することもできるが、 カンマを何らかの方法で符号化する必要があるため、符号化後の長さが長くなってしまうという欠点がある。

接頭符号を構築する技法には、ハフマン符号シャノン符号化がある。他にもユニバーサル符号があり、以下のような具体的な符号が存在する。


接頭符号が実応用上使われている例として、以下のものがある。

接頭符号は一般には誤り訂正符号ではないので、接頭符号で圧縮した後、誤り訂正符号で符号化した上で送信する事が多い。

参考文献

外部リンク


接頭符号

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/08/04 04:40 UTC 版)

可変長符号」の記事における「接頭符号」の解説

詳細は「接頭符号」を参照 写像内のターゲットビット列が、同じ写像内の異な情報源シンボルのターゲットビット列の接頭部ない場合、その符号は接頭符号(prefix code)である。つまり、シンボルは、符号語全体受信される即時復号することができる。そのため、接頭符号は瞬時復号可能符号とも呼ばれる前節符号 M 3 {\displaystyle M_{3}} は接頭符号ではない。符号文字列の"0"を受信した時点で、それが情報源シンボル a に対応する符号語なのか、情報源シンボル b や c に対応する符号語の接頭部なのかが判別できないからである。 接頭符号の例を以下に示す。 シンボル符号語a 0 b 10 c 110 d 111 符号化復号の例aabacdab → 00100110111010 → |0|0|10|0|110|111|0|10| → aabacdab ブロック符号は接頭符号の特別な場合である。ブロック符号では、符号語固定長である。ブロック符号情報源符号化においてはそれほど有用ではないが、通信路符号化において誤り訂正符号として役立つ。 任意の大きな整数一連のオクテットとして符号化する(すなわち、すべての符号語8ビット倍数である)可変長数値表現また、接頭符号の特別な場合である。

※この「接頭符号」の解説は、「可変長符号」の解説の一部です。
「接頭符号」を含む「可変長符号」の記事については、「可変長符号」の概要を参照ください。

ウィキペディア小見出し辞書の「接頭符号」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「接頭符号」の関連用語

接頭符号のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



接頭符号のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの接頭符号 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの可変長符号 (改訂履歴)、ハフマン符号 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS