Ihr Code hat die Eigenschaft, dass Sie einen Präfixcode erhalten, wenn Sie alle Codewörter umkehren. Dies impliziert, dass Ihr Code eindeutig dekodierbar ist.
Betrachten Sie in der Tat jeden Code dessen Umkehrung eindeutig decodierbar ist. Ich behaupte, dass auch eindeutig dekodierbar ist. Dies liegt daran, dass
In Worten, Zersetzungen von in Codewörter von sind in einer Eins-zu-Eins - Entsprechung mit Zerlegungen von in Codewörter von . Da letztere einzigartig sind, sind auch die ersteren einzigartig.C= x1, … , XnCR: = xR1, … , XRnCw = xich1… Xichm wenn und nur wenn wR= xRichm… XRich1.
wCwRCR
Da Präfixcodes eindeutig decodierbar sind, folgt, dass die Umkehrung eines Präfixcodes ebenfalls eindeutig decodierbar ist. Dies ist in Ihrem Beispiel der Fall.
Die McMillan-Ungleichung besagt, dass, wenn eindeutig dekodierbar ist,
Mit anderen Worten, ein eindeutig dekodierbarer Code erfüllt Krafts Ungleichung. Wenn Sie also nur die erwartete Codewortlänge minimieren möchten, gibt es keinen Grund, über Präfixcodes hinauszuschauen.C∑i = 1n2- | xich|≤ 1.
Sam Roweis gibt in seinen Folien ein schönes Beispiel für einen eindeutig dekodierbaren Code, der weder ein Präfixcode noch die Umkehrung eines Präfixcodes ist:
Um zu zeigen, dass dieser Code eindeutig decodierbar ist, genügt es zu zeigen, wie das erste Codewort eines Wortes decodiert wird. Beginnt das Wort mit einer , ist das erste Codewort . Wenn es die Form , muss es entweder oder . Andernfalls muss ein Präfix der Form . Wir unterscheiden nun mehrere Fälle:0 , 01 , 110.
111001∗00101∗0
PräfixCodewort00001001011000111001
Längere Läufe von sind nicht möglich überhaupt dekodiert werden.1