0

コードとは、アルファベットの各文字に一意の文字列(コードワード)を割り当てることです。

コードワードに0と1のみが含まれるコードは、バイナリコードと呼ばれます。

すべてのASCIIコードワードは同じ長さです。これにより、プレフィックスプロパティと呼ばれる重要なプロパティがASCIIコードに当てはまることが保証されます。

アルファベット(クリアテキスト)からの文字列のエンコードは、クリアテキストの文字に対応するコードワードを左から右に順番に連結したものです。そのコードを使用するすべての可能なクリアテキストのエンコーディングが一意である場合、コードは一意にデコード可能です。

上記の情報に基づいて、私はいくつかの演習を行おうとしていました。

次のマトリックスを検討します。

  Code1   Code2  Code3  Code4

A  0       0        1      1

B  100     1       01     01

C  10      00     001    001

D  11      11    0001    000

混乱:

  1. codes上記のすべての割り当ては、一意の文字列があるためと見なされますか?
  2. code 1 and code 2長さが等しくないため、プレフィックスがないことを理解しています。そうは言っても、code 4アルファベットD and Cを見ると、3桁で構成されています。code 4プレフィックスフリーと見なされますか?
  3. code 3一意にデコード可能な唯一のコードですか?
4

1 に答える 1

0

プレフィックスプロパティを誤解していると思います。これは主に長さではありません(ただし、各コードポイントに同じ長さを適用するとn、コードにプレフィックスがなくなります。それ以外の場合は、一意のコードを使用できません)。

むしろ、デコーダーが一致する最初の変換を貪欲に実行できるように、各コードポイントを一意に識別できるようにすることです。固定長の場合、デコーダーはn数字を読み取らなければならないことを認識しています。

のような可変長コードの場合、それが変換できるかどうか、または3桁の最初の2桁であるかどうCode1かを読んだときにわかりません-のプレフィックスは。です。同じことが当てはまります:はのプレフィックスであり、はのプレフィックスです。10CB10100Code2000111

シーケンスを100 一度に1桁ずつ読み取ることを検討してください。

Code1:
Read 1
; "1" does not match any code -  Remember the 1 and continue.
Read 0
; "10" matches reduction "C" - or is this the beginning of a "B"? Darn!
Read 0
; Ok, this was either "CA" or "B" - but there is no way of knowing which one.

これがあなたの前進に役立つことを願っています!

于 2012-08-11T06:15:23.980 に答える