Probabilities of decoding of random linear fountain codes and a code transmitting checksums of only three randomly selected source packets

 

2006-03-17

 

 

Consider random linear fountain code for a file of size K source packets. At each clock cycle, labeled by n, the encoder generates K random bits , and the transmitted packet  is set to the bitwise sum, modulo 2, of the source packets for which  is 1 [MacKay05].

 

Here are two programs computing the decoding probability of source K packets as a function of the number  of received packets. The first program [ cpp | txt ] uses a brute force method for checking each new packet’s linear independence [MathWorld] from all previously received packets. The brute force method uses all possible subsets of previous packets, resulting therefore to a complexity of a factor of . The second program [ cpp | txt ] uses Gaussian elimination [MathWorld] for computing the rank  of the matrix [MathWorld] resulting therefore to a complexity of a factor of .

 

We computed also the decoding probabilities for random packets, obtained by exclusive-or-ing of only three randomly taken source packets. For this case the decoding probabilities depend on the number of source packets and the three brown non-dashed curves of the below chart show correspondingly the probabilities for 10, 15 and 20 source packets. The black curve, for the random linear fountain code, (remarkably) does not depend on the number of the source packets.

 

[xls]

 

The dashed curves represent:

-         systematic encoding of 9 source packets together with 9 checksums of pairs of the source packets and 9 checksums of triplets of source packets (the pairs and triplets are selected according to a K-ring hypergraph), [ ch | us ] section V

-         systematic encoding of 18 source packets together with 36 checksums of triplets selected according to a K-ring hypergraph, [ ch | us ] section VII

 

 

Related links:

 

-         C++ program computing the solvability with Gaussian elimination [ cpp | txt | out | xls ]

-         C++ program computing the solvability with the brute-force method with subsets (for demo) [ cpp | txt | out | xls ]

-         David J. C. MacKay, “Fountain codes”, Communications, IEE Proceedings Volume 152 Issue 6, December 2005, pages 1062 – 1068 [MacKay05]

-         Gaussian elimination [ MathWorld | PlanetMath | Wikipedia ]

-         Linearly independent [MathWorld]

-         Matrix rank [MathWorld]

-         Computing the decoding probabilities of K-ring hypergraphs with 9 and 18 source packets [ ch | us ]

 

 

*   *   *