Alphabet source:
Alphabet de code:
Je pensais que pour qu'un code soit uniquement décodable, il devait être sans préfixe. Mais dans ce code, le mot de code est le préfixe du mot de code par exemple, il n'est donc pas sans préfixe. Cependant, mon manuel me dit que son revers est sans préfixe (je ne comprends pas cela), et qu'il est donc uniquement décodable. Quelqu'un peut-il expliquer ce que cela signifie ou pourquoi il est uniquement décodable? Je sais que cela satisfait l'inégalité de Kraft, mais ce n'est qu'une condition nécessaire, pas une condition suffisante.
encoding-scheme
2000mroliver
la source
la source
c
peut être un préfixe deb
etf
, mais les suffixes qui restent n'existent pas dans le code. Lorsque vous inversez le code, les suffixes deviennent des préfixes, puis il devient sans préfixe.Réponses:
Votre code a la propriété que si vous inversez tous les mots de code, vous obtenez un code de préfixe. Cela implique que votre code est uniquement décodable.
En effet, considérons tout code dont l'inverse est uniquement décodable. Je prétends que est également uniquement décodable. En effet, En d'autres termes, les décompositions de en mots de code de sont dans une correspondance univoque avec des décompositions de dans les mots de code de . Étant donné que ces derniers sont uniques, les premiers le sont également.C= x1, … , Xn CR: = xR1, … , XRn C w = xje1… Xjem si et seulement si wR= xRjem… XRje1. w C wR CR
Étant donné que les codes de préfixe sont uniquement décodables, il s'ensuit que l'inverse d'un code de préfixe est également uniquement décodable. C'est le cas dans votre exemple.
L'inégalité de McMillan indique que si est uniquement décodable, alors En d'autres termes, un code uniquement décodable satisfait l'inégalité de Kraft. Par conséquent, si tout ce qui vous intéresse est de minimiser la longueur de mot de code attendue, il n'y a aucune raison de regarder au-delà des codes de préfixe.C ∑i = 1n2- | Xje|≤ 1.
Sam Roweis donne dans ses diapositives un bel exemple d'un code décodable unique qui n'est ni un code préfixe ni l'inverse d'un code préfixe: Afin de montrer que ce code est uniquement décodable, il suffit de montrer comment décoder le premier mot de code d'un mot. Si le mot commence par , le premier mot de code est . Si elle est de la forme , elle doit être ou . Sinon, il doit y avoir un préfixe de la forme . On distingue maintenant plusieurs cas:0 , 01 , 110. 1 110 01∗ 0 01 01∗0
la source
1001010101010101…
peut être soitfcccccc…
oucaaa…
, et nous pourrions avoir besoin d'attendre la fin de l'entrée pour décider.Si je vous donne un message que vous êtes censé décoder, vous pouvez faire ce qui suit: Inversez le message, en commençant par le dernier bit au lieu du premier bit. Inversez les mots de code. Décodez le message. Inverse la chaîne décodée.
Vous pouvez le faire car après avoir inversé les six mots de code, vous obtenez un code sans préfixe: 1010, 1001, 01, 000, 11, 001 est sans préfixe.
la source
Si sans préfixe signifie ce que je pense, l'inverse de 'a' commence par 1, ou 10 ou 101, dont aucun n'est un autre code valide.
Par conséquent, si un message se termine par 0101, il ne peut s'agir que d'un «a» et vous pouvez appliquer une logique similaire aux bits précédents.
Mais que faire s'il n'y a pas de fin pour commencer? Eh bien, si le premier bit est 1, vous savez que ce n'est pas «a» ou «d». Le deuxième bit éliminera 'e' ou {'b', 'c', 'f'}. Le troisième bit peut le ramener à un choix, mais sinon, il est unique par le quatrième bit.
Dès que vous arrivez à une séquence unique, vous redémarrez l'algorithme sur le bit suivant.
la source