Bu kod neden benzersiz bir şekilde çözülebilir?


21

Kaynak alfabe: {a,b,c,d,e,f}

Kod alfabesi: {0,1}

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

Bir kodun benzersiz bir şekilde çözülebilmesi için öneksiz olması gerektiğini düşündüm. Ancak bu kodda, c kodu kelimesi , örneğin f kelimesinin önekidir , bu yüzden önek içermez. Ancak ders kitabım bunun tersinin önek olmadığını (bunu anlamıyorum) ve bu nedenle benzersiz bir şekilde çözülebilir olduğunu söylüyor. Birisi bunun ne anlama geldiğini veya neden benzersiz bir şekilde çözülebilir olduğunu açıklayabilir mi? Kraft'ın eşitsizliğini tatmin ettiğini biliyorum, ama bu sadece gerekli bir koşul, yeterli bir koşul değil.


10
Önek içermeyen benzersiz bir şekilde deşifre edilebilir, ancak "yalnızca ve yalnızca" ifadesi değildir. Örneğin, buraya bakınız .
dkaeae

Tamam görüyorum, ama ders kitabım şöyle diyor: Kod A, tersi olduğu için benzersiz bir şekilde deşifre edilebilir, bu yüzden benzersiz bir şekilde deşifre edilebilir Onların tersi ile ne anlama geldiğini anlıyor musunuz?
2000mroliver

1
Muhtemelen basitçe tüm kodları ters çevirerek elde edilen kod.
dkaeae

ve bu neden benzersiz bir şekilde çözülebilir anlamına geliyor, anlamıyorum
2000mroliver

1
cbve ön eki olabilir f, ancak kalan sonekler kodda mevcut değildir. Kodu ters çevirdiğinizde, sonekler önek haline gelir ve ardından öneksiz hale gelir.
Barmar

Yanıtlar:


26

Kodunuz, tüm kod sözcüklerini ters çevirirseniz bir önek kodu alacağınız özelliğe sahiptir. Bu, kodunuzun benzersiz bir şekilde çözülebildiğini gösterir.

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

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

Önek kodları benzersiz bir şekilde çözülebildiğinden, bir önek kodunun tersi de benzersiz bir şekilde çözülebilir olur. Örneğinizde durum böyledir.

C

i=1n2|xi|1.

0,01,110.
111001001010

prefix00010011001110codeword001001
1


2
OP örneğinde, ilk kod sözcüğünü sabit bir rakamdan sonra çözemeyiz, sonsuz sayıda durum vardır: 1001010101010101…ya olabilir ya fcccccc…da caaa…karar vermek için girişin sonuna kadar beklememiz gerekebilir.
Bergi

1
1,10,00

4
@Bergi Her zaman sınırlı sayıda basamak için deşifre edilebilir. Kodlamanın herhangi bir kalıntı olmadan kodunu çözmenin her zaman sadece bir yolu vardır. Diğer tüm denemeler yedek 1'ler veya 0'lar ile sonuçlanır. Bunun nedeni, önce kuyruğu okursak kodun benzersiz bir şekilde çözülebilir olmasıdır. Teoride, bir şey bir yönde benzersiz bir şekilde çözülebilirse, diğer yönde birden fazla çözüm olabileceği mantıklı değildir
slebetman

@slebetman Sonlu bir önekten bahsediyordum (olası kalıntılarla). Evet, tüm girişi alırsak her zaman kodu çözülebilir.
Bergi

5

Size kodunu çözmeniz gereken herhangi bir mesaj verirseniz, aşağıdakileri yapabilirsiniz: Mesajı, ilk bit yerine son bit ile başlayarak tersine çevirin. Kod sözcüklerini ters çevirin. Mesajı çözün. Çözülmüş dizeyi ters çevirin.

Bunu yapabilirsiniz, çünkü altı kod kelimesini ters çevirdikten sonra öneksiz bir kod alırsınız: 1010, 1001, 01, 000, 11, 001 öneksizdir.


0

Önek içermediğini düşündüğüm anlamına gelirse, 'a'nın tersi 1 veya 10 veya 101 ile başlar, hiçbiri geçerli başka bir kod değildir.

Bu nedenle, bir mesaj 0101 ile biterse, sadece bir 'a' olabilir ve önceki bit (ler) e benzer mantık uygulayabilirsiniz.

Ancak, başlayacak bir son yoksa ne olur? İlk bit 1 ise, bunun 'a' veya 'd' olmadığını biliyorsunuz. İkinci bit 'e' veya {'b', 'c', 'f'} 'yi ortadan kaldıracaktır. Üçüncü bit, onu bir seçeneğe getirebilir, ancak değilse, dördüncü bit tarafından benzersizdir.

Benzersiz bir sekansa ulaşır ulaşmaz, algoritmayı bir sonraki bitte yeniden başlatırsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.