このコードが一意にデコード可能なのはなぜですか?


21

ソースアルファベット:{a,b,c,d,e,f}

コードのアルファベット:{0,1}

  • a:0101
  • b:1001
  • c:10
  • d:000
  • e:11
  • f:100

コードを一意にデコードできるようにするには、プレフィックスが不要である必要があると思いました。しかし、このコードでは、コードワードcは、たとえばコードワードfのプレフィックスであるため、プレフィックスフリーではありません。しかし、私の教科書は、その逆は接頭辞なしである(私はこれを理解していない)と教えてくれます。誰かがこれが何を意味するのか、またはなぜそれが一意にデコード可能であるのかを説明できますか?クラフトの不等式を満たしていることは知っていますが、それは必要条件であり、十分条件ではありません。


10
接頭辞なしは一意に復号可能であることを意味しますが、「if and only if」ステートメントではないことを意味します。たとえば、こちらをご覧ください
dkaeae

わかりましたが、私の教科書には次のように書かれています:コードAは、その逆がプレフィックスフリーであるため一意にデコード可能であるため、一意にデコード可能であることを意味します。
2000mroliver

1
おそらく、すべてのコードワードを逆にして得られるコードです。
dkaeae

そして、なぜそれが一意に
解読

1
c接頭辞かもしれbfが、余っているサフィックスは、コードには存在しません。コードを逆にすると、接尾辞が接頭辞になり、接頭辞がなくなります。
バルマー

回答:


26

コードには、すべてのコードワードを逆にするとプレフィックスコードを取得するというプロパティがあります。これは、コードが一意にデコード可能であることを意味します。

C=x1,,xnCR:=x1R,,xnRC

w=xi1xim if and only if wR=ximRxi1R.
wCwRCR

プレフィックスコードは一意にデコードできるため、プレフィックスコードの逆も一意にデコードできます。これはあなたの例の場合です。

C

i=1n2|xi|1.

0,01,110.
111001001010

prefix00010011001110codeword001001
1


2
OPの例では、一定量の数字の後の最初のコードワードをデコードすることはできません、無限に多くのケース1001010101010101…があります:fcccccc…またはのいずれかcaaa…であり、決定するために入力の終わりまで待つ必要があるかもしれません。
ベルギ

1
1,10,00

4
@Bergi有限の桁数でも常にデコード可能です。余りなくエンコードをデコードする方法は常に1つしかありません。他の試みは、予備の1または0で終了します。これは、最初に末尾を読むとコードが一意にデコード可能であるためです。理論的には、何かが一方向に一意にデコード可能である場合、他の方向に複数の解決策があることは意味がありません
slebetman

@slebetman私は有限の接頭辞を参照していました(可能な余りがある)。はい、すべての入力を取得する場合、常にデコード可能です。
ベルギ

5

デコードするはずのメッセージを提供すると、次のことができます。最初のビットではなく最後のビットから始めて、メッセージを反転します。コードワードを逆にします。メッセージをデコードします。デコードされた文字列を逆にします。

6つのコードワードを逆にすると、プレフィックスなしのコードが得られるため、これを行うことができます。1010、1001、01、000、11、001はプレフィックスなしです。


0

接頭辞なしが私が思うことを意味する場合、「a」の逆は1、10、または101で始まりますが、いずれも他の有効なコードではありません。

したがって、メッセージが0101で終了する場合、 'a'のみであり、同様のロジックを前のビットに適用できます。

ただし、開始する終わりがない場合はどうなりますか?最初のビットが1であれば、「a」でも「d」でもないことがわかります。2番目のビットは 'e'または{'b'、 'c'、 'f'}を削除します。3番目のビットはそれを1つの選択肢にするかもしれませんが、そうでない場合は4番目のビットで一意です。

一意のシーケンスに到達するとすぐに、次のビットでアルゴリズムを再起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.