▲ | less_less a day ago | |||||||
This will depend on the field, and for F_2^m you want odd powers: sum(x), sum(x^3), sum(x^5) etc. Using sum(x^2) won't help because squaring over F_2^m is a field homomorphism, meaning that sum(x^2) = sum(x)^2. This is also how BCH error-correction codes work (see https://en.wikipedia.org/wiki/BCH_code): a valid BCH codeword has sum(x^i where bit x is set in the codeword) = 0 for t odd powers i=1,3,5, ... Then if some bits get flipped, you will get a "syndrome" s_i := sum(x^i where bit x was flipped) for those odd powers. Solving from the syndrome to get the indices of the flipped bits is the same problem as here. The general decoding algorithm is a bit involved, as you can see in the Wikipedia article, but it's not horribly difficult:
You can of course use a different error-correcting code if you prefer (e.g. binary Goppa codes).Edit: bullets are hard. Further edit just to note: the "^" in the above text refers to powers over the finite field, not the xor operator. | ||||||||
▲ | Straw a day ago | parent | next [-] | |||||||
Good catch, thank you! | ||||||||
▲ | nullc a day ago | parent | prev [-] | |||||||
Yesterday I linked to an implementation (with complexity quadratic in the number of errors) I helped to create in another comment in this thread. > constant factor using Chien's search algorithm Chien's search is only really reasonable for small field sizes... which I think doesn't really make sense in this application, where the list is long and the missing elements are relatively few. Fortunately in characteristic 2 it's quite straight forward and fast to just factor the polynomial using the berlekamp trace algorithm. | ||||||||
|