debugMinor
Is Reed Solomon also a Fountain code?
Viewed 0 times
solomonfountainalsocodereed
Problem
Once you encode your message as a polynomial you can effectively generate and stream an endless number of points on that polynomial of which only a finite subset would be required to recover the polynomial.
Why isn't Reed Solomon also a Fountain code? I have never seen it listed as such and I looked.
Why isn't Reed Solomon also a Fountain code? I have never seen it listed as such and I looked.
Solution
It's difficult to call Reed-Solomon a fountain code. This is due to two reasons.
The first reason is rather technical.
Let's assume you use a systematic code. After sending the message itself (the systematic part), the "fountain" is the remaining redundancy symbols = evaluation of the polynomial in other points. In order to be decoded correctly, you must attach to each symbol the index it belongs to, i.e., the point it is evaluated in. You cannot permute the symbols order and still decode correctly, hence the index is crucial.
So RS by itself doesn't fit the decoding properties of fountain codes, where any order of received symbols is OK. However, this is merely a technicality since you can always send the symbol along with its index (this is also done in fountain codes).
The second reason is more meaningful and inherent.
In a (systematic) $[n,k]$ block codes (e.g., Reed-Solomon), there are exactly $n-k$ redundancy symbols. That's it. You don't have a "fountain" of "infinite" number of redundancy symbols you can send. You only have $n-k$, and once the decoder receives enough of them it will be able to decode. Using RS notations, you can evaluate the polynomial only in points in the finite field $\mathbb{F}$, and there is a finite (and relatively small) amount of them.
So the "fountain" in block-codes reduces to only be re-sending the $n-k$ redundancy symbols again and again, and requiring the decoder to collect (almost) all of them. This is not as good as the properties fountain codes are providing.
The first reason is rather technical.
Let's assume you use a systematic code. After sending the message itself (the systematic part), the "fountain" is the remaining redundancy symbols = evaluation of the polynomial in other points. In order to be decoded correctly, you must attach to each symbol the index it belongs to, i.e., the point it is evaluated in. You cannot permute the symbols order and still decode correctly, hence the index is crucial.
So RS by itself doesn't fit the decoding properties of fountain codes, where any order of received symbols is OK. However, this is merely a technicality since you can always send the symbol along with its index (this is also done in fountain codes).
The second reason is more meaningful and inherent.
In a (systematic) $[n,k]$ block codes (e.g., Reed-Solomon), there are exactly $n-k$ redundancy symbols. That's it. You don't have a "fountain" of "infinite" number of redundancy symbols you can send. You only have $n-k$, and once the decoder receives enough of them it will be able to decode. Using RS notations, you can evaluate the polynomial only in points in the finite field $\mathbb{F}$, and there is a finite (and relatively small) amount of them.
So the "fountain" in block-codes reduces to only be re-sending the $n-k$ redundancy symbols again and again, and requiring the decoder to collect (almost) all of them. This is not as good as the properties fountain codes are providing.
Context
StackExchange Computer Science Q#106272, answer score: 4
Revisions (0)
No revisions yet.