Random linear fountain codes [doc]
Redundant packets are formed as checksums of random subsets
of the original source K packets. A
checksum of some source packets is their XOR packet or, which is the same, a
packet obtained by a bitwise sum, modulo
2, of the considered source packets. Only redundant packets are
transmitted. Once K redundant packets
are received, the probability of decoding the original K packets depends remarkably only on the number of excess packets.
If the number of excess packets is E
the probability of a failure is below , does not matter on the number of original packets [MacKay05].
The below chart shows results of simulations with 10 and 20 source packets. In both cases the probabilities of decoding behave identically in respect to the number of exceeding packets.
[xls]
For example 4 exceeding packets signify 14 received packets for the case with 10 original packets and 24 received packets for the case with 20 original packets. For the 10-packets case 10’000 random matrices (random sequences of redundant packets) were considered and 1’000 random matrices for the 20-packets case.
Using redundant packets formed from pairs of original packets (relying on a K-ring graph as one of the best methods for choosing the pairs) required not only a relative growth of exceeding packets, as the number of source packets increases, but a relative growth which is even faster than that of the number of source packets [ ch | us ].
In contrast with the random linear fountain codes the relative number of exceeding packets decreases as the number of the source packets increases.
Related links:
- David J. C. MacKay, “Fountain codes”, Communications, IEE Proceedings Volume 152 Issue 6, December 2005, pages 1062 – 1068 [MacKay05]
- A C program generating the sequences of redundant packets and computing the decoding probabilities [ cpp | txt | screenshot ]
- Computing the curves of packet recovery probabilities for various numbers of original packets, when the redundant packets are XOR checksums of pairs of original packets selected according to a K-ring graph [ ch | us ]
-
Comparing the recovery probabilities of a Torus graph and a K-ring graph with 9 nodes
and 18 edges [ ch
| us
]
- Computing the recovery probabilities for 2500 random graphs with 18 edges [ ch | us ]
- Computing the recovery probabilities for a double cycle graph [ ch | us ]
- Computing the recovery probabilities for a torus graph [ ch | us ]
* * *