Why is this code uniquely decodable?
$begingroup$
Source alphabet: ${a, b, c, d, e, f}$
Code alphabet: ${0, 1}$
- $acolon 0101$
- $bcolon 1001$
- $ccolon 10$
- $dcolon 000$
- $ecolon 11$
- $fcolon 100$
I thought that for a code to be uniquely decodable, it had to be prefix-free.
But in this code, the codeword $c$ is the prefix of codeword $f$ for example, so it is not prefix-free. However my textbook tells me that its reverse is prefix free (I don't understand this), and therefore it is uniquely decodable. Can someone explain what this means, or why it is uniquely decodable? I know it satisfies Kraft's inequality, but that is only a necessary condition, not a sufficient condition.
encoding-scheme
New contributor
$endgroup$
add a comment |
$begingroup$
Source alphabet: ${a, b, c, d, e, f}$
Code alphabet: ${0, 1}$
- $acolon 0101$
- $bcolon 1001$
- $ccolon 10$
- $dcolon 000$
- $ecolon 11$
- $fcolon 100$
I thought that for a code to be uniquely decodable, it had to be prefix-free.
But in this code, the codeword $c$ is the prefix of codeword $f$ for example, so it is not prefix-free. However my textbook tells me that its reverse is prefix free (I don't understand this), and therefore it is uniquely decodable. Can someone explain what this means, or why it is uniquely decodable? I know it satisfies Kraft's inequality, but that is only a necessary condition, not a sufficient condition.
encoding-scheme
New contributor
$endgroup$
3
$begingroup$
Prefix-free implies uniquely decodable, but that it is not an "if and only if" statement. See, for example, here.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
Okay I see, but my text book says this: Code A is uniquely decodable since its reverse it is prefixfree, so uniquely decodable Do you understand what they mean by its reverse?
$endgroup$
– 2000mroliver
12 hours ago
1
$begingroup$
Probably simply the code obtained by reversing all codewords.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
and why does that imply uniquely decodable, I don't get it
$endgroup$
– 2000mroliver
12 hours ago
add a comment |
$begingroup$
Source alphabet: ${a, b, c, d, e, f}$
Code alphabet: ${0, 1}$
- $acolon 0101$
- $bcolon 1001$
- $ccolon 10$
- $dcolon 000$
- $ecolon 11$
- $fcolon 100$
I thought that for a code to be uniquely decodable, it had to be prefix-free.
But in this code, the codeword $c$ is the prefix of codeword $f$ for example, so it is not prefix-free. However my textbook tells me that its reverse is prefix free (I don't understand this), and therefore it is uniquely decodable. Can someone explain what this means, or why it is uniquely decodable? I know it satisfies Kraft's inequality, but that is only a necessary condition, not a sufficient condition.
encoding-scheme
New contributor
$endgroup$
Source alphabet: ${a, b, c, d, e, f}$
Code alphabet: ${0, 1}$
- $acolon 0101$
- $bcolon 1001$
- $ccolon 10$
- $dcolon 000$
- $ecolon 11$
- $fcolon 100$
I thought that for a code to be uniquely decodable, it had to be prefix-free.
But in this code, the codeword $c$ is the prefix of codeword $f$ for example, so it is not prefix-free. However my textbook tells me that its reverse is prefix free (I don't understand this), and therefore it is uniquely decodable. Can someone explain what this means, or why it is uniquely decodable? I know it satisfies Kraft's inequality, but that is only a necessary condition, not a sufficient condition.
encoding-scheme
encoding-scheme
New contributor
New contributor
edited 4 hours ago
Yuval Filmus
194k14181346
194k14181346
New contributor
asked 12 hours ago
2000mroliver2000mroliver
432
432
New contributor
New contributor
3
$begingroup$
Prefix-free implies uniquely decodable, but that it is not an "if and only if" statement. See, for example, here.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
Okay I see, but my text book says this: Code A is uniquely decodable since its reverse it is prefixfree, so uniquely decodable Do you understand what they mean by its reverse?
$endgroup$
– 2000mroliver
12 hours ago
1
$begingroup$
Probably simply the code obtained by reversing all codewords.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
and why does that imply uniquely decodable, I don't get it
$endgroup$
– 2000mroliver
12 hours ago
add a comment |
3
$begingroup$
Prefix-free implies uniquely decodable, but that it is not an "if and only if" statement. See, for example, here.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
Okay I see, but my text book says this: Code A is uniquely decodable since its reverse it is prefixfree, so uniquely decodable Do you understand what they mean by its reverse?
$endgroup$
– 2000mroliver
12 hours ago
1
$begingroup$
Probably simply the code obtained by reversing all codewords.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
and why does that imply uniquely decodable, I don't get it
$endgroup$
– 2000mroliver
12 hours ago
3
3
$begingroup$
Prefix-free implies uniquely decodable, but that it is not an "if and only if" statement. See, for example, here.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
Prefix-free implies uniquely decodable, but that it is not an "if and only if" statement. See, for example, here.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
Okay I see, but my text book says this: Code A is uniquely decodable since its reverse it is prefixfree, so uniquely decodable Do you understand what they mean by its reverse?
$endgroup$
– 2000mroliver
12 hours ago
$begingroup$
Okay I see, but my text book says this: Code A is uniquely decodable since its reverse it is prefixfree, so uniquely decodable Do you understand what they mean by its reverse?
$endgroup$
– 2000mroliver
12 hours ago
1
1
$begingroup$
Probably simply the code obtained by reversing all codewords.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
Probably simply the code obtained by reversing all codewords.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
and why does that imply uniquely decodable, I don't get it
$endgroup$
– 2000mroliver
12 hours ago
$begingroup$
and why does that imply uniquely decodable, I don't get it
$endgroup$
– 2000mroliver
12 hours ago
add a comment |
3 Answers
3
active
oldest
votes
$begingroup$
Your code has the property that if you reverse all codewords, then you get a prefix code. This implies that your code is uniquely decodable.
Indeed, consider any code $C = x_1,ldots,x_n$ whose reverse $C^R := x_1^R,ldots,x_n^R$ is uniquely decodable. I claim that $C$ is also uniquely decodable. This is because
$$
w = x_{i_1} ldots x_{i_m} text{ if and only if } w^R = x_{i_m}^R ldots x_{i_1}^R.
$$
In words, decompositions of $w$ into codewords of $C$ are in one-to-one correspondence with decompositions of $w^R$ into codewords of $C^R$. Since the latter are unique, so are the former.
Since prefix codes are uniquely decodable, it follows that the reverse of a prefix code is also uniquely decodable. This is the case in your example.
The McMillan inequality states that if $C$ is uniquely decodable then
$$
sum_{i=1}^n 2^{-|x_i|} leq 1.
$$
In other words, a uniquely decodable code satisfies Kraft's inequality. Therefore if all you're interested in is minimizing the expected codeword length, there is no reason to look beyond prefix codes.
Sam Roweis gives in his slides a nice example of a uniquely decodable code which is neither a prefix code nor the reverse of a prefix code:
$$
0,01,110.
$$
In order to show that this code is uniquely decodable, it suffices to show how to decode the first codeword of a word. If the word starts with a $1$, then the first codeword is $110$. If it is of the form $01^*$, then it must be either $0$ or $01$. Otherwise, there must be a prefix of the form $01^*0$. We now distinguish several cases:
$$
begin{array}{c|cccc}
text{prefix} & 00 & 010 & 0110 & 01110 \hline
text{codeword} & 0 & 01 & 0 & 01
end{array}
$$
Longer runs of $1$ cannot be decoded at all.
$endgroup$
1
$begingroup$
In seems that in the OP's example, we cannot decode the first codeword after a fixed amount of digits, there are infinitely many cases:1001010101010101…
can be eitherfcccccc…
orcaaa…
, and we might need to wait until the end of the input to decide.
$endgroup$
– Bergi
4 hours ago
$begingroup$
This also happens for $1,10,00$.
$endgroup$
– Yuval Filmus
4 hours ago
$begingroup$
@Bergi It is always decodable for any finite amount of digits. There is always only one way to decode the encoding without any remainders. Any other attempt will end up with spare 1's or 0s. This is because the code is uniquely decodable if we read it tail first. In theory if something is uniquely decodable in one direction it makes no sense that there can be more than one solution in the other direction
$endgroup$
– slebetman
2 hours ago
add a comment |
$begingroup$
If I give you any message that you are supposed to decode, then you can do the following: Reverse the message, starting with the last bit instead of the first bit. Reverse the code words. Decode the message. Reverse the decoded string.
You can do that because after reversing the six code words, you get a prefix-free code: 1010, 1001, 01, 000, 11, 001 is prefix free.
$endgroup$
add a comment |
$begingroup$
If prefix-free means what I think, the reverse of ‘a’ starts with 1, or 10, or 101, none of which is any other whole valid code.
Therefore, if a message ends with 0101, it can only be an ‘a’ and you can apply similar logic to the preceding bit(s).
However, what if there is no end to start from? Well, if the first bit is 1, you know it isn’t ‘a’ or ‘d’. The second bit will eliminate ‘e’ or {‘b’,’c’,’f’}. The third bit might bring it down to one choice, but if not, it is unique by the fourth bit.
As soon as you get to a unique sequence, you restart the algorithm on the next bit.
New contributor
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "419"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
2000mroliver is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f105065%2fwhy-is-this-code-uniquely-decodable%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Your code has the property that if you reverse all codewords, then you get a prefix code. This implies that your code is uniquely decodable.
Indeed, consider any code $C = x_1,ldots,x_n$ whose reverse $C^R := x_1^R,ldots,x_n^R$ is uniquely decodable. I claim that $C$ is also uniquely decodable. This is because
$$
w = x_{i_1} ldots x_{i_m} text{ if and only if } w^R = x_{i_m}^R ldots x_{i_1}^R.
$$
In words, decompositions of $w$ into codewords of $C$ are in one-to-one correspondence with decompositions of $w^R$ into codewords of $C^R$. Since the latter are unique, so are the former.
Since prefix codes are uniquely decodable, it follows that the reverse of a prefix code is also uniquely decodable. This is the case in your example.
The McMillan inequality states that if $C$ is uniquely decodable then
$$
sum_{i=1}^n 2^{-|x_i|} leq 1.
$$
In other words, a uniquely decodable code satisfies Kraft's inequality. Therefore if all you're interested in is minimizing the expected codeword length, there is no reason to look beyond prefix codes.
Sam Roweis gives in his slides a nice example of a uniquely decodable code which is neither a prefix code nor the reverse of a prefix code:
$$
0,01,110.
$$
In order to show that this code is uniquely decodable, it suffices to show how to decode the first codeword of a word. If the word starts with a $1$, then the first codeword is $110$. If it is of the form $01^*$, then it must be either $0$ or $01$. Otherwise, there must be a prefix of the form $01^*0$. We now distinguish several cases:
$$
begin{array}{c|cccc}
text{prefix} & 00 & 010 & 0110 & 01110 \hline
text{codeword} & 0 & 01 & 0 & 01
end{array}
$$
Longer runs of $1$ cannot be decoded at all.
$endgroup$
1
$begingroup$
In seems that in the OP's example, we cannot decode the first codeword after a fixed amount of digits, there are infinitely many cases:1001010101010101…
can be eitherfcccccc…
orcaaa…
, and we might need to wait until the end of the input to decide.
$endgroup$
– Bergi
4 hours ago
$begingroup$
This also happens for $1,10,00$.
$endgroup$
– Yuval Filmus
4 hours ago
$begingroup$
@Bergi It is always decodable for any finite amount of digits. There is always only one way to decode the encoding without any remainders. Any other attempt will end up with spare 1's or 0s. This is because the code is uniquely decodable if we read it tail first. In theory if something is uniquely decodable in one direction it makes no sense that there can be more than one solution in the other direction
$endgroup$
– slebetman
2 hours ago
add a comment |
$begingroup$
Your code has the property that if you reverse all codewords, then you get a prefix code. This implies that your code is uniquely decodable.
Indeed, consider any code $C = x_1,ldots,x_n$ whose reverse $C^R := x_1^R,ldots,x_n^R$ is uniquely decodable. I claim that $C$ is also uniquely decodable. This is because
$$
w = x_{i_1} ldots x_{i_m} text{ if and only if } w^R = x_{i_m}^R ldots x_{i_1}^R.
$$
In words, decompositions of $w$ into codewords of $C$ are in one-to-one correspondence with decompositions of $w^R$ into codewords of $C^R$. Since the latter are unique, so are the former.
Since prefix codes are uniquely decodable, it follows that the reverse of a prefix code is also uniquely decodable. This is the case in your example.
The McMillan inequality states that if $C$ is uniquely decodable then
$$
sum_{i=1}^n 2^{-|x_i|} leq 1.
$$
In other words, a uniquely decodable code satisfies Kraft's inequality. Therefore if all you're interested in is minimizing the expected codeword length, there is no reason to look beyond prefix codes.
Sam Roweis gives in his slides a nice example of a uniquely decodable code which is neither a prefix code nor the reverse of a prefix code:
$$
0,01,110.
$$
In order to show that this code is uniquely decodable, it suffices to show how to decode the first codeword of a word. If the word starts with a $1$, then the first codeword is $110$. If it is of the form $01^*$, then it must be either $0$ or $01$. Otherwise, there must be a prefix of the form $01^*0$. We now distinguish several cases:
$$
begin{array}{c|cccc}
text{prefix} & 00 & 010 & 0110 & 01110 \hline
text{codeword} & 0 & 01 & 0 & 01
end{array}
$$
Longer runs of $1$ cannot be decoded at all.
$endgroup$
1
$begingroup$
In seems that in the OP's example, we cannot decode the first codeword after a fixed amount of digits, there are infinitely many cases:1001010101010101…
can be eitherfcccccc…
orcaaa…
, and we might need to wait until the end of the input to decide.
$endgroup$
– Bergi
4 hours ago
$begingroup$
This also happens for $1,10,00$.
$endgroup$
– Yuval Filmus
4 hours ago
$begingroup$
@Bergi It is always decodable for any finite amount of digits. There is always only one way to decode the encoding without any remainders. Any other attempt will end up with spare 1's or 0s. This is because the code is uniquely decodable if we read it tail first. In theory if something is uniquely decodable in one direction it makes no sense that there can be more than one solution in the other direction
$endgroup$
– slebetman
2 hours ago
add a comment |
$begingroup$
Your code has the property that if you reverse all codewords, then you get a prefix code. This implies that your code is uniquely decodable.
Indeed, consider any code $C = x_1,ldots,x_n$ whose reverse $C^R := x_1^R,ldots,x_n^R$ is uniquely decodable. I claim that $C$ is also uniquely decodable. This is because
$$
w = x_{i_1} ldots x_{i_m} text{ if and only if } w^R = x_{i_m}^R ldots x_{i_1}^R.
$$
In words, decompositions of $w$ into codewords of $C$ are in one-to-one correspondence with decompositions of $w^R$ into codewords of $C^R$. Since the latter are unique, so are the former.
Since prefix codes are uniquely decodable, it follows that the reverse of a prefix code is also uniquely decodable. This is the case in your example.
The McMillan inequality states that if $C$ is uniquely decodable then
$$
sum_{i=1}^n 2^{-|x_i|} leq 1.
$$
In other words, a uniquely decodable code satisfies Kraft's inequality. Therefore if all you're interested in is minimizing the expected codeword length, there is no reason to look beyond prefix codes.
Sam Roweis gives in his slides a nice example of a uniquely decodable code which is neither a prefix code nor the reverse of a prefix code:
$$
0,01,110.
$$
In order to show that this code is uniquely decodable, it suffices to show how to decode the first codeword of a word. If the word starts with a $1$, then the first codeword is $110$. If it is of the form $01^*$, then it must be either $0$ or $01$. Otherwise, there must be a prefix of the form $01^*0$. We now distinguish several cases:
$$
begin{array}{c|cccc}
text{prefix} & 00 & 010 & 0110 & 01110 \hline
text{codeword} & 0 & 01 & 0 & 01
end{array}
$$
Longer runs of $1$ cannot be decoded at all.
$endgroup$
Your code has the property that if you reverse all codewords, then you get a prefix code. This implies that your code is uniquely decodable.
Indeed, consider any code $C = x_1,ldots,x_n$ whose reverse $C^R := x_1^R,ldots,x_n^R$ is uniquely decodable. I claim that $C$ is also uniquely decodable. This is because
$$
w = x_{i_1} ldots x_{i_m} text{ if and only if } w^R = x_{i_m}^R ldots x_{i_1}^R.
$$
In words, decompositions of $w$ into codewords of $C$ are in one-to-one correspondence with decompositions of $w^R$ into codewords of $C^R$. Since the latter are unique, so are the former.
Since prefix codes are uniquely decodable, it follows that the reverse of a prefix code is also uniquely decodable. This is the case in your example.
The McMillan inequality states that if $C$ is uniquely decodable then
$$
sum_{i=1}^n 2^{-|x_i|} leq 1.
$$
In other words, a uniquely decodable code satisfies Kraft's inequality. Therefore if all you're interested in is minimizing the expected codeword length, there is no reason to look beyond prefix codes.
Sam Roweis gives in his slides a nice example of a uniquely decodable code which is neither a prefix code nor the reverse of a prefix code:
$$
0,01,110.
$$
In order to show that this code is uniquely decodable, it suffices to show how to decode the first codeword of a word. If the word starts with a $1$, then the first codeword is $110$. If it is of the form $01^*$, then it must be either $0$ or $01$. Otherwise, there must be a prefix of the form $01^*0$. We now distinguish several cases:
$$
begin{array}{c|cccc}
text{prefix} & 00 & 010 & 0110 & 01110 \hline
text{codeword} & 0 & 01 & 0 & 01
end{array}
$$
Longer runs of $1$ cannot be decoded at all.
edited 12 hours ago
answered 12 hours ago
Yuval FilmusYuval Filmus
194k14181346
194k14181346
1
$begingroup$
In seems that in the OP's example, we cannot decode the first codeword after a fixed amount of digits, there are infinitely many cases:1001010101010101…
can be eitherfcccccc…
orcaaa…
, and we might need to wait until the end of the input to decide.
$endgroup$
– Bergi
4 hours ago
$begingroup$
This also happens for $1,10,00$.
$endgroup$
– Yuval Filmus
4 hours ago
$begingroup$
@Bergi It is always decodable for any finite amount of digits. There is always only one way to decode the encoding without any remainders. Any other attempt will end up with spare 1's or 0s. This is because the code is uniquely decodable if we read it tail first. In theory if something is uniquely decodable in one direction it makes no sense that there can be more than one solution in the other direction
$endgroup$
– slebetman
2 hours ago
add a comment |
1
$begingroup$
In seems that in the OP's example, we cannot decode the first codeword after a fixed amount of digits, there are infinitely many cases:1001010101010101…
can be eitherfcccccc…
orcaaa…
, and we might need to wait until the end of the input to decide.
$endgroup$
– Bergi
4 hours ago
$begingroup$
This also happens for $1,10,00$.
$endgroup$
– Yuval Filmus
4 hours ago
$begingroup$
@Bergi It is always decodable for any finite amount of digits. There is always only one way to decode the encoding without any remainders. Any other attempt will end up with spare 1's or 0s. This is because the code is uniquely decodable if we read it tail first. In theory if something is uniquely decodable in one direction it makes no sense that there can be more than one solution in the other direction
$endgroup$
– slebetman
2 hours ago
1
1
$begingroup$
In seems that in the OP's example, we cannot decode the first codeword after a fixed amount of digits, there are infinitely many cases:
1001010101010101…
can be either fcccccc…
or caaa…
, and we might need to wait until the end of the input to decide.$endgroup$
– Bergi
4 hours ago
$begingroup$
In seems that in the OP's example, we cannot decode the first codeword after a fixed amount of digits, there are infinitely many cases:
1001010101010101…
can be either fcccccc…
or caaa…
, and we might need to wait until the end of the input to decide.$endgroup$
– Bergi
4 hours ago
$begingroup$
This also happens for $1,10,00$.
$endgroup$
– Yuval Filmus
4 hours ago
$begingroup$
This also happens for $1,10,00$.
$endgroup$
– Yuval Filmus
4 hours ago
$begingroup$
@Bergi It is always decodable for any finite amount of digits. There is always only one way to decode the encoding without any remainders. Any other attempt will end up with spare 1's or 0s. This is because the code is uniquely decodable if we read it tail first. In theory if something is uniquely decodable in one direction it makes no sense that there can be more than one solution in the other direction
$endgroup$
– slebetman
2 hours ago
$begingroup$
@Bergi It is always decodable for any finite amount of digits. There is always only one way to decode the encoding without any remainders. Any other attempt will end up with spare 1's or 0s. This is because the code is uniquely decodable if we read it tail first. In theory if something is uniquely decodable in one direction it makes no sense that there can be more than one solution in the other direction
$endgroup$
– slebetman
2 hours ago
add a comment |
$begingroup$
If I give you any message that you are supposed to decode, then you can do the following: Reverse the message, starting with the last bit instead of the first bit. Reverse the code words. Decode the message. Reverse the decoded string.
You can do that because after reversing the six code words, you get a prefix-free code: 1010, 1001, 01, 000, 11, 001 is prefix free.
$endgroup$
add a comment |
$begingroup$
If I give you any message that you are supposed to decode, then you can do the following: Reverse the message, starting with the last bit instead of the first bit. Reverse the code words. Decode the message. Reverse the decoded string.
You can do that because after reversing the six code words, you get a prefix-free code: 1010, 1001, 01, 000, 11, 001 is prefix free.
$endgroup$
add a comment |
$begingroup$
If I give you any message that you are supposed to decode, then you can do the following: Reverse the message, starting with the last bit instead of the first bit. Reverse the code words. Decode the message. Reverse the decoded string.
You can do that because after reversing the six code words, you get a prefix-free code: 1010, 1001, 01, 000, 11, 001 is prefix free.
$endgroup$
If I give you any message that you are supposed to decode, then you can do the following: Reverse the message, starting with the last bit instead of the first bit. Reverse the code words. Decode the message. Reverse the decoded string.
You can do that because after reversing the six code words, you get a prefix-free code: 1010, 1001, 01, 000, 11, 001 is prefix free.
answered 1 hour ago
gnasher729gnasher729
11k1217
11k1217
add a comment |
add a comment |
$begingroup$
If prefix-free means what I think, the reverse of ‘a’ starts with 1, or 10, or 101, none of which is any other whole valid code.
Therefore, if a message ends with 0101, it can only be an ‘a’ and you can apply similar logic to the preceding bit(s).
However, what if there is no end to start from? Well, if the first bit is 1, you know it isn’t ‘a’ or ‘d’. The second bit will eliminate ‘e’ or {‘b’,’c’,’f’}. The third bit might bring it down to one choice, but if not, it is unique by the fourth bit.
As soon as you get to a unique sequence, you restart the algorithm on the next bit.
New contributor
$endgroup$
add a comment |
$begingroup$
If prefix-free means what I think, the reverse of ‘a’ starts with 1, or 10, or 101, none of which is any other whole valid code.
Therefore, if a message ends with 0101, it can only be an ‘a’ and you can apply similar logic to the preceding bit(s).
However, what if there is no end to start from? Well, if the first bit is 1, you know it isn’t ‘a’ or ‘d’. The second bit will eliminate ‘e’ or {‘b’,’c’,’f’}. The third bit might bring it down to one choice, but if not, it is unique by the fourth bit.
As soon as you get to a unique sequence, you restart the algorithm on the next bit.
New contributor
$endgroup$
add a comment |
$begingroup$
If prefix-free means what I think, the reverse of ‘a’ starts with 1, or 10, or 101, none of which is any other whole valid code.
Therefore, if a message ends with 0101, it can only be an ‘a’ and you can apply similar logic to the preceding bit(s).
However, what if there is no end to start from? Well, if the first bit is 1, you know it isn’t ‘a’ or ‘d’. The second bit will eliminate ‘e’ or {‘b’,’c’,’f’}. The third bit might bring it down to one choice, but if not, it is unique by the fourth bit.
As soon as you get to a unique sequence, you restart the algorithm on the next bit.
New contributor
$endgroup$
If prefix-free means what I think, the reverse of ‘a’ starts with 1, or 10, or 101, none of which is any other whole valid code.
Therefore, if a message ends with 0101, it can only be an ‘a’ and you can apply similar logic to the preceding bit(s).
However, what if there is no end to start from? Well, if the first bit is 1, you know it isn’t ‘a’ or ‘d’. The second bit will eliminate ‘e’ or {‘b’,’c’,’f’}. The third bit might bring it down to one choice, but if not, it is unique by the fourth bit.
As soon as you get to a unique sequence, you restart the algorithm on the next bit.
New contributor
New contributor
answered 2 hours ago
WGroleauWGroleau
1011
1011
New contributor
New contributor
add a comment |
add a comment |
2000mroliver is a new contributor. Be nice, and check out our Code of Conduct.
2000mroliver is a new contributor. Be nice, and check out our Code of Conduct.
2000mroliver is a new contributor. Be nice, and check out our Code of Conduct.
2000mroliver is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Computer Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f105065%2fwhy-is-this-code-uniquely-decodable%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
$begingroup$
Prefix-free implies uniquely decodable, but that it is not an "if and only if" statement. See, for example, here.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
Okay I see, but my text book says this: Code A is uniquely decodable since its reverse it is prefixfree, so uniquely decodable Do you understand what they mean by its reverse?
$endgroup$
– 2000mroliver
12 hours ago
1
$begingroup$
Probably simply the code obtained by reversing all codewords.
$endgroup$
– dkaeae
12 hours ago
$begingroup$
and why does that imply uniquely decodable, I don't get it
$endgroup$
– 2000mroliver
12 hours ago