Optimal erasure codes with arbitrary parameters
From Wikipedia, the free encyclopedia
An erasure code is used to encode data in such a way that the original message can be decoded without receiving all the encoded data.
[edit] Err-mail
Alice wants to send her telephone number (555629) to Bob using err-mail. Err-mail works just like e-mail, except
- About half of all the mail sent gets lost. (Some versions of this story refer to the err-mail daemon)
- Messages longer than 5 characters are illegal.
- It is very expensive (Similar to air-mail).
Instead of asking Bob to acknowledge the messages she sends, Alice devises the following scheme :
- She breaks her telephone number up into two messages : "A=555" and "B=629".
- Now she constructs the following diagram, using her infinitely sharp pencil on a grid
- She measures the values for C, D, E from the grid and then transmit 3 more redundant messages : "C=703", "D=777" and "E=851"
Now suppose Bob receives "D=777" and "E=851". Then he can make the following drawing :
Because there is exactly one unique line passing through the marks he made, he can reconstruct the value of A and B.
Clearly Bob can perform this procedure using any 2 err-mails.
It is also easy to prove that Alice cannot encode her telephone number in just one err-mail. This is because Alice can have 106 possible telephone numbers, which is less than the number of possible err-mails.
Therefore this system is truly efficient.
Err-mail 2
When the err-mail 2 arrives (the upgrade), it turns out that it can only send messages with 4 characters. Alice will now start by sending "A=55", "B=56" and "C=29". She will then place markers called A through E on the floor in a configuration that is known to Bob. She will then fit a plane such that its height above A is 55, its height above B is 56 and its height above C is 29. The redundant messages is then the height of that plane above D and E. If Bob receives 3 messages he should be able to reconstruct the plane and Alice's phone number.
[edit] Implementation
This process commonly implemented in a finite field using a Vandermonde matrix.