Il tuo codice ha la proprietà che se inverti tutte le parole in codice, otterrai un prefisso. Ciò implica che il tuo codice è unicamente decodificabile.
In effetti, considera qualsiasi codice C= x1, ... , xn cui rovescio CR: = xR1, ... , xRn è unicamente decodificabile. Sostengo che ancheC sia unicamente decodificabile. Questo perché
w = xio1... xiom se e solo se wR=xRiom... xRio1.
In parole, decomposizioni di w in parole di codice di C sono in uno-a-uno corrispondenza con decomposizioni di wR in parole di codice di CR . Poiché i secondi sono unici, lo sono anche i primi.
Poiché i codici prefisso sono decodificabili in modo univoco, ne consegue che anche il retro di un codice prefisso è decodificabile in modo univoco. Questo è il caso nel tuo esempio.
La disuguaglianza di McMillan afferma che se C è unicamente decodificabile, allora
Σi = 1n2- | Xio|≤ 1.
In altre parole, un codice decodificabile in modo univoco soddisfa la disuguaglianza di Kraft. Pertanto, se tutto ciò che ti interessa è ridurre al minimo la lunghezza prevista della parola codice, non c'è motivo di guardare oltre i codici prefisso.
Sam Roweis fornisce nelle sue diapositive un bell'esempio di un codice decodificabile in modo univoco che non è né un prefisso né il contrario di un prefisso:
0 , 01 , 110.
Per dimostrare che questo codice è unicamente decodificabile, è sufficiente mostrare come per decodificare il primo codice di una parola. Se la parola inizia con 1 , la prima parola chiave è 110 . Se è nel formato 01* , deve essere 0 o 01 . Altrimenti, deve esserci un prefisso del modulo 01*0 . Ora distinguiamo diversi casi:
prefissocodeword00001001011000111001
Non è possibile decodificare affatto
esecuzioni più lunghe di1.