Boosted decoders for reed-muller codes
Patent Information
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)
- Filing Date
- 2024-07-22
- Publication Date
- 2026-05-27
AI Technical Summary
Existing decoding methods for Reed-Muller codes are inefficient and fail to effectively handle noisy codewords, particularly in binary input memoryless channels.
The proposed solution involves a method that processes each received noisy codeword by finding subspace cosets where the codeword is approximately equal to a valid codeword, and then expanding these cosets until the entire space is covered, using recursive projections and aggregations to improve decoding accuracy.
This approach significantly improves the decoding efficiency and accuracy of Reed-Muller codes by leveraging the self-similarity of RM codes and employing list-decoding and code concatenation techniques, making it suitable for emerging communication standards like 6G and IoT applications.
Smart Images

Figure IB2024000389_23012025_PF_FP_ABST
Abstract
Description
BOOSTED DECODERS FOR REED-MULLER CODES CROSS REFERENCE TO RELATED APPLICATION
[0001] This application claims the benefit of the filing date of U.S. Provisional Patent Application No.63 / 527,856 filed July 20, 2023, the disclosure of which is incorporated herein by reference in its entirety. FIELD OF THE DISCLOSURE
[0002] The present disclosure relates generally to systems and methods for information encoding and decoding and, more particularly, to methods for decoding Reed-Muller (RM) codes and variants thereof. BACKGROUND
[0003] This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described and / or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
[0004] Reed-Muller (RM) codes are among the oldest families of error-correcting codes. As compared to polar codes, RM codes have in particular the advantage of having a simple and universal code construction, and RM codes were recently determined to achieve Shannon capacity universally.
[0005] Background information may be found in a published patent application PCT / WO 2020 / 150600, and in a paper “A Proof That Reed-Muller Codes Achieve Shannon Capacity On Symmetric Channels” by Abbe-Sandon. SUMMARY
[0006] Various deficiencies in the prior art are addressed below by the disclosed systems, methods and apparatus configured for decoding Reed-Muller codes (and variants thereof) over binary input memoryless channels.
[0007] Various embodiments are directed to Reed-Muller decoding systems and methods configured to decode RM codes by processing each received noisy codeword ^^ of the received RM encoded data to determine therefrom a respective decoding that best fits theAttorney Docket No.: EPFL-6.2463PCT noisy codeword ^^ by (1) finding a subspace coset ^^ on which the noisy codeword ^^ is approximately equal to a valid codeword; (2) finding another subspace coset ^^⋆that is partially contained in ^^ such that the restriction of the combination of the noisy codeword ^^ and the alleged codeword on ^^ to ^^⋆is close to a valid codeword; (3) using the alleged decodings of the codeword on the union of subspace cosets ^^ and ^^⋆, determine a decoding of the codeword on the entire subspace coset spanned by subspace cosets ^^ and ^^⋆and declaring this coset the new value of subspace coset ^^ ; (4) repeating steps 2-3 to keep expanding the subspace coset it has a decoding on until the expanded subspace coset ^^ covers the entire space; and (5) repeating steps 1-4 at least once to determine therefrom a respective decoding that best fits the noisy codeword ^^.
[0008] Additional objects, advantages, and novel features of the invention will be set forth in part in the description which follows, and in part will become apparent to those skilled in the art upon examination of the following or may be learned by practice of the invention. The objects and advantages of the invention may be realized and attained by means of the instrumentalities and combinations particularly pointed out in the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the present invention and, together with a general description of the invention given above, and the detailed description of the embodiments given below, explain the principles of the present invention.
[0010] FIG.1 is a functional block diagram of a block coding system benefiting from the various embodiments;
[0011] FIG.2. depicts a flow diagram of a methods according to various embodiments;
[0012] FIG.3. depicts a flow diagram of methods according to various first embodiments;
[0013] FIG.4 depicts a pseudocode listing of a method according to an embodiment;
[0014] FIGS.5A-5B together depict a flow diagram of a buildDecode method for decoding a noisy codeword ^^ within RM(m, r);
[0015] FIG.6 depicts a flow diagram of a subspace coset selection method suitable for use in the embodiments of FIG.3;
[0016] FIG.7 depicts an alternate method of aggregating decoded restrictions suitable for use in the various embodiments; ~2~ Attorney Docket No.: EPFL-6.2463PCT
[0017] FIG.8 depicts a high-level block diagram of a computing device suitable for use within the context of the various embodiments.
[0018] It should be understood that the appended drawings are not necessarily to scale, presenting a somewhat simplified representation of various features illustrative of the basic principles of the invention. The specific design features of the sequence of operations as disclosed herein, including, for example, specific dimensions, orientations, locations, and shapes of various illustrated components, will be determined in part by the particular intended application and use environment. Certain features of the illustrated embodiments have been enlarged or distorted relative to others to facilitate visualization and clear understanding. In particular, thin features may be thickened, for example, for clarity or illustration. DETAILED DESCRIPTION
[0019] The following description and drawings merely illustrate the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the invention and are included within its scope. Furthermore, all examples recited herein are principally intended expressly to be only for illustrative purposes to aid the reader in understanding the principles of the invention and the concepts contributed by the inventor(s) to furthering the art and are to be construed as being without limitation to such specifically recited examples and conditions. Additionally, the term, "or," as used herein, refers to a non- exclusive or, unless otherwise indicated (e.g., “or else” or “or in the alternative”). Also, the various embodiments described herein are not necessarily mutually exclusive, as some embodiments can be combined with one or more other embodiments to form new embodiments.
[0020] The numerous innovative teachings of the present application will be described with particular reference to the presently preferred exemplary embodiments. However, it should be understood that this class of embodiments provides only a few examples of the many advantageous uses of the innovative teachings herein. In general, statements made in the specification of the present application do not necessarily limit any of the various claimed inventions. Moreover, some statements may apply to some inventive features but not to others. Those skilled in the art and informed by the teachings herein will realize that the invention is also applicable to various other technical areas or embodiments. ~3~ Attorney Docket No.: EPFL-6.2463PCT
[0021] Various deficiencies in the prior art are addressed below by the disclosed systems, methods and apparatus configured for decoding Reed-Muller codes and related code variants, such as received via a binary input memoryless channels. The various embodiments described herein have applicability in a number of technical areas, including classical data transmission and compression as well as in quantum data transmission and compression.
[0022] Various embodiments comprise methods to decode RM codes by (step 1) selecting a collection of subspaces, (step 2) decoding the restrictions of the noisy codeword to cosets of those subspaces, and (step 3) aggregating the decoded restrictions to obtain a decoding of the original codeword.
[0023] This approach is based on combining weak estimates for the codeword or codeword’s coordinates decodings for some ranges of the code parameters and combine these to get stronger estimates for other ranges of the code parameter. These embodiments rely on various restrictions and projections of the codewords, on well-chosen subset of coordinates, and exploit the strong symmetries (affine group in particular) of the code and list-decoding techniques among various techniques described here. Extensions of these first embodiments include decoding groups of coordinates with such boosted constructions and using list- decoding (such as with CRC-list decoding) on top of these procedures. It is noted that these methods are amenable to parallelization implementation.
[0024] Various embodiments are directed to Reed-Muller decoding systems and methods configured to decode RM codes by processing each received noisy codeword ^^ of the received RM encoded data to determine therefrom a respective decoding that best fits the noisy codeword ^^ by (1) finding a subspace coset ^^ on which the noisy codeword ^^ is approximately equal to a valid codeword; (2) finding another subspace coset ^^⋆that is partially contained in ^^ such that the restriction of the combination of the noisy codeword ^^ and the alleged codeword on ^^ to ^^⋆is close to a valid codeword; (3) using the alleged decodings of the codeword on the union of subspace cosets ^^ and ^^⋆, determine a decoding of the codeword on the entire subspace coset spanned by subspace cosets ^^ and ^^⋆and declaring this coset the new value of subspace coset ^^ ; (4) repeating steps 2-3 to keep expanding the subspace coset it has a decoding on until the expanded subspace coset ^^ covers the entire space; and (5) repeating steps 1-4 at least once to determine therefrom a respective decoding that best fits the noisy codeword ^^.
[0025] Various embodiments include decoders based on recursive projections, restrictions and aggregations of cosets decoding, exploiting the self-similarity of RM codes, ~4~ Attorney Docket No.: EPFL-6.2463PCT and extended with list-decoding procedures and with outer-code concatenations. Various embodiments include RM decoders of particular utility within the context of specific regimes of interest, such as short code length (e.g., ≤ 1024 bits) and low code rate (e.g., ≤ 0:5) regimes contemplated for use within the emerging 6G communications and Internet of Things (IoT), satellite or quantum applications.
[0026] Various embodiments are based on projecting-aggregation decoding the RM code; reducing the problem space associated with the RM code and its various parameters or interest, recursively decoding the projected codes, and aggregating the reconstructions. These exploit in particular the self-similarity structure of RM codes ensuring that quotient space codes for RM codes are again RM codes. Also provided are embodiments further providing list-decoding and code concatenation extensions of the various embodiments.
[0027] Note: In various embodiments, terms such as “sufficiently good” and the like are generally intended to mean at least “viable” or “possible” rather than “not viable” or “not possible” such as used when evaluating subspace cosets for inclusion in a collection thereof or evaluating whether (as discussed above) a decoded codeword may be viable such that when compared with a number of other possible / viable decoded codewords the process over time resolves toward a correct result. A goal in such processing is to avoid expending processing time and resources where a correct outcome is unlikely or impossible.
[0028] FIG.1 depicts a high level block diagram of a block coding / decoding system benefiting from the various embodiments. Specifically, FIG.1 depicts a block diagram of a block coding / decoding system 100 including a transmit side 102 and a receive side 104.
[0029] On the transmit side 102, the system 100 includes an (n,k;d) linear block channel encoder 106 wherein a block of "k" information bits received from an information source encoder 108 is encoded to output a codeword of "n" bits in length (wherein n>k). The channel encoder 106 preferably implements an error control code. An example of the information source encoder 108 is a vocoder or data compressor. The code words output from the channel encoder 106 are then optionally rearranged by an interleaver 110. A modulator 112 then maps the rearranged code words into waveforms suited for transmission over a communications channel 114. Modulator 112 may comprise, illustratively, a known modulator having an M-ary signal constellation (e.g., quadrature amplitude modulation (QAM), phase shift keying (PSK) and the like). The communications channel 114 may comprise a wired or wireless medium which suffering from error and / or distortion introducing problems such as fading, interference, noise and the like. ~5~ Attorney Docket No.: EPFL-6.2463PCT
[0030] On the receive side 104, the system 100 includes an appropriate demodulator 116 that demodulates the communications channel 114 transmitted communication and outputs the rearranged code words. The estimated code words are then reordered (i.e., de-rearranged) by a de-interleaver 118 if necessary. An (n,k;d) linear block channel decoder 120 then processes the reordered estimated code words to generate estimates of the information bits for output to an information source decoder 122. The channel decoder 120 preferably comprises a maximum likelihood decoder for the selected error control code which utilizes soft decision decoding.
[0031] The block coding / decoding system 100 of FIG.1 benefits from the use of RM channel encoding / decoding functions such as discussed herein. The remaining discussion will assume that RM encoded data generated by, for example, the channel encoder 106 is subsequently decoded by the channel decoder 120. As such, the functions of the channel decoder 120 and similar structures will be the focus of the following discussion.
[0032] The system 100 of FIG.1 is illustrative of only one example of a use for the various embodiments described herein. In particular, it is noted that while FIG.1 depicts a system wherein various embodiments of decoders and / or decoding methods are used within the context of a data transmitting / receiving system, the various embodiments also find utility within the context of data storage systems.
[0033] Generally speaking, the various embodiments find utility within the context of any system, method or component thereof wherein RM or related encoding / decoding is used. Further, the various embodiments may be used in conjunction or concatenation with other codes, such as in the form of outer-codes, inner-codes, or any other components of various coding schemes. Force decode
[0034] Consider attempting to recover a codeword ^^ ∈ ^^ ^^^ ^^, ^^^ from a noisy version of it, ^^. Let ^^ ൌ 2^and ^^ ൌ ^^^^^^^ / ^^. Assume that ^^ is ^^ with gaussian noise added, and to make the calculations simpler, regard the entries in ^^ as being േ1. The ratio of two gaussian distributions with different means but the same variance is an exponential function, so finding the most likely value of ^^ given ^^ is equivalent to finding ^^⋆∈ ^^ ^^^ ^^, ^^^ maximizing the value of ∑௫^^௫⋅ ^^௫⋆.~6~ Attorney Docket No.: EPFL-6.2463PCT forceDecode1
[0035] A straightforward method to perform the above-described function is to simply check all elements of ^^ ^^^ ^^, ^^^, such as in the following algorithm. It is noted that the various Algorithms are depicted as pseudo-codes in a mathematical fashion for the ease of understanding. These pseudo-codes may be implemented as hardware or as a combination of hardware and software using almost any programming language as known by those skilled in the art.
[0036] Algorithm 0 Pseudo-Code: forceDecode1 Input: ^ ^^, ^^, ^^^ where ^^ and ^^ are the parameters of the RM code and ^^ is the noisy codeword.Output: ^ ^^⋆, ^^^ where ^^⋆ is the most likely value of ^^ and ^^ ൌ ∑^^^^⋅ ^^^⋆.1. ^^ ^^ ^^ ^^ ^^ ← ∅2. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← െ∞ 3. for ^^′ ∈ ^^ ^^^ ^^, ^^^: 4. if ∑௫ ^^௫ ⋅ ^^′௫ ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^:5. ^^ ^^ ^^ ^^ ^^ ← ^^′6. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ∑௫ ^^௫ ⋅ ^^′௫7. return ^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^^
[0037] It is noted that the above algorithm 0 is not very efficient. It requires 2^ோା^multiplications, 2^ோା^െ 2^ோadditions, 2^ோcomparisons, and an unclear number of operations used to compute every ^^′ ∈ ^^ ^^^ ^^, ^^^. forceDecode2
[0038] In order to perform this function more efficiently, it is observed that for any ^^′ ∈ ^^ ^^^ ^^, ^^^ there exist ^^ା∈ ^^ ^^^ ^^ െ 1, ^^ െ 1^ and ^^ି∈ ^^ ^^^ ^^ െ 1, ^^^ such that extending ^^ାand ^^ିto ^0,1^^by having ^^௫ାൌ 1 whenever ^^^ൌ 0 and making ^^ independent of ^^^then ^^′௫ൌ ^^௫ା⋅ ^^ for all ^^. Therefore: ∑௫∈ ^^^మ^^௫⋅ ^^′௫ൌ ∑௫∈ ^^^మ^^௫⋅ ^^௫ା ⋅ ^^ ൌ ∑௫∈ ^^^మషభ ^ ^^௫,^^ ^^௫,^⋅ ^^௫ା^ ⋅ ^^
[0039] solving the original problem with a value of ^^ one lower. That means that the method may try all possible values of ^^ାand recurse on each of them. Once ^^ is reduced to ^^ ^ 1, the method can take advantage of the fact that every possible bitstring with an even number of 1’s is a valid RM code to simplify finding the optimal decoding. Finally, the method saves time by trying to have each codeword processed be close to the previous one in order to reduce the number of terms needed to recalculate each time. This leads to the following algorithm. ~7~ Attorney Docket No.: EPFL-6.2463PCT
[0040] Algorithm 1 Pseudo-Code: forceDecode2 Input: ^ ^^, ^^, ^^^ where ^^ and ^^ are the parameters of the RM code with ^^ ^ ^^ and ^^ is the noisy codeword.Output: ^ ^^⋆, ^^^ where ^^⋆ is the most likely value of ^^ and ^^ ൌ ∑^^^^⋅ ^^^⋆.1. if ^^ ൌ ^^ ^ 1:2. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ∑௫| ^^௫|3. ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^^ ^^^4. if the number of positive elements in ^^ is odd:5. find ^^ minimizing the value of | ^^௫|.6. ^^ ^^ ^^ ^^ ^^௫ ← െ ^^ ^^ ^^ ^^ ^^௫7. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ െ 2| ^^௫|8.9. else: 10. ^^ ^^ ^^ ^^11. ^^ ^^ ^^ ^^ െ∞ 12. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ 13. for sets of indices ^^ ⊆ ^ ^^ െ 1^ of length at most ^^ െ 1, starting with the largest sets:14. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^ ^^ ∈ ^^^ଶ : ^^^ ൌ 1forall ^^ ∈ ^^ ∪ ^ ^^^^.15. Append ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ to ^^ ^^ ^^ ^^ ^^ ^^ ^^.16. Append ∅ to ^^ ^^ ^^ ^^ ^^ ^^ ^^. 17. ^^ ← 0 18. while ^^ ^ 2൫^షభರ^షభ൯: 19. Set ^^′௫← ^^௫,^^ ^^௫,^for all ^^ ∈ ^^^ଶି^. 20. ^ ^^⋆, ^^ ^^ ^^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^2^ ^^ െ 1, ^^, ^^′^ 21. if ^^ ^^ ^^ ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^: 22. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ 23. Set ^^ ^^ ^^ ^^ ^^௫,^← ^^௫⋆and ^^ ^^ ^^ ^^ ^^௫,^← ^^௫⋆for all ^^ ∈ ^^^ଶି^. 24. for ^^ ∈ ^^ ^^ ^^ ^^ ^^൫^ି^൯: ^ஸ^ି^25. if ⌊ ^^ / 2 ⌋ is congruent to 1 or 2 mod 4: 26. for ^^ ∈ ^^ ^^ ^^ ^^ ^^ ^^ ^^^:27. ^^ ^^ ^^ ^^ ^^௫ ← െ ^^ ^^ ^^ ^^ ^^௫28. ^^ ← ^^ ^ 129. Find the largest integer ^^ such that ^^ is divisible by 2^. 30. for ^^ ∈ ^^ ^^ ^^ ^^ ^^ ^^ ^^^:31. ^^௫ ← െ ^^௫32. return ^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^^forceDecode3
[0041] The inventors observe that one key idea that can be used to streamline the above algorithm 1 is that if ^ ^^⋆, ^^^ ൌ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^2^ ^^, ^^, ^^^, then it will always be the case that ^^ ^ ∑^| ^^^|. Therefore, given a known lower bound on ∑^^^^⋅ ^^^the algorithm may skip any calls that are clearly incapable of finding athat is good. Generally, this would not be known bound on ∑^^^^⋅ ^^^, but a work-around is repeating the algorithm with~8~ Attorney Docket No.: EPFL-6.2463PCT increasingly loose bounds until the algorithm works. That approach leads to the following algorithms:
[0042] Algorithm 2 Pseudo-Code: forceDecode3Attempt Input: ^ ^^, ^^, ^^, ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ and ^^ are the parameters of the RM code with ^^ ^ ^^, ^^ isthe noisy codeword, and ^^ ^^ ^^ ^^ ^^ ^^ is the minimum value of ∑^ ^^^ ⋅ ^^^that the algorithm isconsidering.Output: If there exists ^^′ ∈ ^^ ^^^ ^^, ^^^ such that ∑^^^^⋅ ^^′^^ ^^ ^^ ^^ ^^ ^^ ^^ then this outputs^ ^^⋆, ^^^ where ^^⋆ is the most likely value of ^^ and ^^ ൌ ∑^^^^⋅ ^^^⋆. Otherwise, it outputs^∅, െ∞^.1. if ^^ ൌ ^^ ^ 1:2. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ∑௫ | ^^௫|3. ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^^ ^^^4. if the number of positive elements in ^^ is odd:5. find ^^ minimizing the value of | ^^௫|.6. ^^ ^^ ^^ ^^ ^^௫ ← െ ^^ ^^ ^^ ^^ ^^௫7. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ െ 2| ^^௫|8.9. else: 10. ^^ ^^ ^^ ^^ ^^11. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← െ∞ 12. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ 13. for sets of indices ^^ ⊆ ^ ^^ െ 1^ of length at most ^^ െ 1, starting with the largest sets:14. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^ ^^ ∈ ^^^ଶ : ^^^ ൌ 1forall ^^ ∈ ^^ ∪ ^ ^^^^.15. Append ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ to ^^ ^^ ^^ ^^ ^^ ^^ ^^.16. Append ∅ to ^^ ^^ ^^ ^^ ^^ ^^ ^^. 17. ^^ ← 0 18. while ^^ ^ 2൫^షభರ^షభ൯: ^ ^^ ^^^ି^.28. ^^ ^^ ^^ ^^ ^^௫ ← െ ^^ ^^ ^^ ^^ ^^௫29. ^^ ← ^^ ^ 130. Find the largest integer ^^ such that ^^ is divisible by 2^. 31. for ^^ ∈ ^^ ^^ ^^ ^^ ^^ ^^ ^^^:32. ^^௫ ← െ ^^௫33. return ^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^^
[0043] Algorithm 3 Pseudo-Code: forceDecode3 ~9~ Attorney Docket No.: EPFL-6.2463PCT Input: ^ ^^, ^^, ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ and ^^ are the parameters of the RM code with ^^ ^ ^^, ^^ is the noisy codeword, and ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ is a list of possible lower bounds on how well the best codeword matches ^^. Output: ^ ^^⋆, ^^^ where ^^⋆is the most likely value of ^^ and ^^ ൌ ∑^^^^⋅ ^^^⋆. 1. for ^^ ^^ ^^ ^^ ^^ ^^ ∈ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^: 2. ^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^3 ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^, ^^,^^ ^^ ^^ ^^ ^^^ 3. if ^^ ^^ ^^ ^^ ^^ ് ∅: 4. return ^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^^ 5. return ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^3 ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^, ^^, ^^, 0^ forceDecode4
[0044] Our next observation in attempting to optimize this is that forceDecode3 iterates over every ^^ା∈ ^^ ^^^ ^^ െ 1, ^^ െ 1^, if only to calculate the value of ∑௫∈ ^^^ మ షభ | ^^௫,^^ ^^௫,^⋅ ^^௫ା| in order to determine if there is any possibility of generating a sufficiently good ^^ ∈ ^^ ^^^ ^^, ^^^ from that ^^ା.
[0045] However, for any ^^ା∈ ^^ ^^^ ^^ െ 1, ^^ െ 1^ it is always the case that: ∑௫∈ ^^^ ା^ మషభห^^௫,^^ ^^௫,^⋅ ^^௫ หൌଶ∑ ^ ௫∈ ^^^ మ షభ | ^^௫,^^ ^^௫,^| ^ | ^^௫,^െ ^^௫,^| ^ଶ∑௫∈ ^^^ మ షభ ^| ^^௫,^^yield a good enough value of ^^ is equivalent to finding all codewords ^^ା∈ ^^ ^^^ ^^ െ 1, ^^ െ 1^ that are sufficiently good matches for the "noisy codeword" having a value at x that is ^| ^^௫,^^ ^^௫,^| െ | ^^௫,^െ ^^௫,^|^ / 2. Thus, by modifying the decoding algorithm to give an option of listing every sufficiently good codeword instead of finding the best one, the method can use a recursive call to the algorithm to find all viable values of ^^ାinstead of needing to go through every ^^ା∈ ^^ ^^^ ^^ െ 1, ^^ െ 1^. Subspace Search
[0047] Given a list ^^ and set ^^, let ^^ௌdenote the restriction of ^^ to ^^. Now, consider the below algorithm 4: smallErrorSubspaceSearch, which may be used to find a subspace coset on which the restriction of the noisy coset is close to a valid codeword. The implementation of this algorithm can be loosely summarized as the following simplified approach:
[0048] Algorithm 4 Pseudo-Code: smallErrorSubspaceSearch Input: ^ ^^, ^^2, ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ is a parameter of the RM code, ^^2 is the dimension of the subspace coset being sought, ^^ is the noisy codeword, and ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ is the largest difference between the noisy codeword’s restriction to a subspace coset and a valid codeword ~10~ Attorney Docket No.: EPFL-6.2463PCT the algorithm will accept. Output: If the algorithm is successful, it finds an ^^2-dimensional subspace coset ^^ such that the restriction of ^^ to ^^ is within ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ of a valid codeword in ^^ ^^^ ^^2, ^^2 െ 3^. Then it returns ^ ^^, ^^′, ^^^ where ^^′ is the codeword that ^^^is within ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ bit flips of, and ^^ is the number of bitflips between ^^′ and ^^^. If it is unsucessful at finding a suitable subspace coset, it returns ^∅, ∅, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^ 1^. 1. Repeat a large number of times: 2. Select a coset ^^ of an ^^2-dimensional subspace.3. if ^^^ is within ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ bitflips of a valid codeword:4. Set ^^′ equal to the closest codeword to ^^^5. return ^ ^^, ^^′, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^, ^^′^^6. return ^∅, ∅, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^ 1^ Checking subspaces
[0049] If one were to implement the approach above in an obvious way, it would probably spend most of its time checking if various restrictions of ^^ are within ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ bitflips of a valid codeword. So, the first order of business to make it more efficient is to find a faster way to check that. Also, buildDecode currently sets ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ to 2 or 3 when it calls smallErrorSubspaceSearch, so it only needs to work well for very small values of ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^. In order to do that, first observe that if ^^ ∈ ^^ ^^^ ^^2, ^^2 െ 3^ and ^^, ^^ ∈ ^ ^^^, then ^^ ^^ ^^௫:௫^ୀ௫ೕୀ^^^௫ൌ 0. So, if ^^ is a noisy version of ^^ and ^^^,^ൌ ^^ ^^ ^^௫:௫^ୀ௫ೕୀ^^^௫then ^^^,^isthat if ^^^^^, ... ^^^^^are the bits that were flipped and ^^ is the matrix whose entries are given by that formula then ^^ ൌ ^^^^^⊗ ^^^^^xor ^^^ଶ^⊗ ^^^ଶ^xor... xor ^^^^^⊗ ^^^^^, and for small values of ^^ this is fairly easy to solve. In particular, if this is the case then the diagonal of ^^ is the xor of all the ^^’s. Also, for each ^^, ^^^is an xor of an odd number of ^^’s if ^^^,^ൌ 1 and an even number of ^^’s if ^^^,^ൌ 0. Therefore, it is possible to determine if a given string in ^0,1^ଶ^మis within 3 bit flips of a valid codeword in ^^ ^^^ ^^2, ^^2 െ 3^ using those facts and some case analysis, as follows.
[0050] Algorithm 5 Pseudo-Code: smallErrorCheck Input: ^ ^^, ^^^ where ^^ is the number of dimensions of the codeword in question, and ^^ is the noisy codeword, written as a binary string with indices from 0 to 2^െ 1. Output: If there is a codeword in ^^ ^^^ ^^, ^^ െ 3^ that is within 3 bitflips of ^^ it returns ^ ^^ ^^ ^^ ^^ ^^ ^^, ^^^ where coords is a list of the bits where ^^ disagrees with that codeword and ^^ is the number of such bitflips. If no such codeword exists, it returns ^∅, 4^. 1. ^^ ← 0^ൈ^~11~ Attorney Docket No.: EPFL-6.2463PCT 2. ^^′ ← ^^ 3. while ^^′ ^ ^^: 4. ^^′ ← ^^′ െ 1 5. ^^⋆← 0 6. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^2^ᇱ, 2^ᇱା^^:7. if ^^^ ൌ 1:8. ^^⋆ ← ^^⋆ xor ^^9. ^^^ଶ^ᇲ^← ^^^ଶ^ᇲ^xor ^^^ଶ^ᇲశభ^\^ଶ^ᇲ^10. ^^ ⋆^ᇱ ← ^^11. for ^^ ^ ^^ ^ ^^:12. ^^^,^← ^^^,^13. ^^ ^^ ^^ ^^ ^^ ← 0 14. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^: 15. ^^ ^^ ^^ ^^ ^^^← ^^^,^16. ^^ ^^ ^^ ^^ ^^ ^^ ← ^^^17. if ^^ ^^ ^^ ^^ ^^ ^^ ൌ 018. if ^^ ൌ 0^ൈ:^: 19. return ^^^,0^ 20. ^^ ^^ ^^ ^^ ^^ ← ^0, ^^ ^^ ^^ ^^ ^^^ 21. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^:22. if ^^^ ∈ ^^ ^^ ^^ ^^ ^^:23. Add ^^^to ^^ ^^ ^^ ^^ ^^.24. if ^^ ^^ ^^ ^^ ^^ℎ^ ^^ ^^ ^^ ^^ ^^^ ^ 4:25. return ^∅, 4^. 26. else if ^^ ^^ ^^ ^^ ^^ℎ^ ^^ ^^ ^^ ^^ ^^^ ൌ 2: 27. return ^^0, ^^ ^^ ^^ ^^ ^^^,2^. 28. else:29. ^^ ^^ ^^ ^^ ^^1 ← ^^ ^^ ^^ ^^ ^^ଶ30. ^^ ^^ ^^ ^^ ^^2 ← ^^ ^^ ^^ ^^ ^^1 xor ^^ ^^ ^^ ^^ ^^31. if ^^ ൌ ^^ ^^ ^^ ^^ ^^1 ⊗ ^^ ^^ ^^ ^^ ^^1 xor ^^ ^^ ^^ ^^ ^^2 ⊗ ^^ ^^ ^^ ^^ ^^2: 32. return ([coord1,coord2],2) 33. else: 34. return ^∅, 4^ 35. else: 36. ^^ ^^ ^^ ^^ ^^ ← ^0^ 37. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^:38. ^^ ← ^^^ xor ^^ ^^ ^^ ^^ ^^^ ⋅ ^^ ^^ ^^ ^^ ^^39. if ^^ ∈ ^^ ^^ ^^ ^^ ^^:40. Add ^^ to ^^ ^^ ^^ ^^ ^^. 41. if ^^ ^^ ^^ ^^ ^^ℎ^ ^^ ^^ ^^ ^^ ^^^ ^ 4: 42. return ^∅, 4^. 43. else if ^^ ^^ ^^ ^^ ^^ℎ^ ^^ ^^ ^^ ^^ ^^^ ^ 2:44. ^^ ^^ ^^ ^^ ^^1 ← ^^ ^^ ^^ ^^ ^^^ xor ^^ ^^ ^^ ^^ ^^45. ^^ ^^ ^^ ^^ ^^2 ← ^^ ^^ ^^ ^^ ^^ଶxor ^^ ^^ ^^ ^^ ^^46. ^^ ^^ ^^ ^^ ^^3 ← ^^ ^^ ^^ ^^ ^^1 xor ^^ ^^ ^^ ^^ ^^2 xor ^^ ^^ ^^ ^^ ^^47. if ^^ ൌ ^^ ^^ ^^ ^^ ^^1 ⊗ ^^ ^^ ^^ ^^ ^^1 xor ^^ ^^ ^^ ^^ ^^2 ⊗ ^^ ^^ ^^ ^^ ^^2 xor ^^ ^^ ^^ ^^ ^^3 ⊗ ^^ ^^ ^^ ^^ ^^3: 48. return ([coord1,coord2,coord3],3) 49. else: 50. return ^∅, 4^ ~12~ Attorney Docket No.: EPFL-6.2463PCT 51. else if ^^ ^^ ^^ ^^ ^^ℎ^ ^^ ^^ ^^ ^^ ^^^ ൌ 2: 52. return ^∅, 4^ 53. else: 54. return ^^ ^^ ^^ ^^ ^^ ^^^,1^ An example
[0051] As an example, consider running ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ℎ ^^ ^^ ^^^6, ^^^ for ^^ ൌ 0001100010100010111100111010011101011101010101111100001000000010.
[0052] First, the algorithm computes the overall parity of ^^, as well as the parity of the substring of ^^ consisting of bits with indices whose ^^th and ^^th bits are 1 for each ^^ and ^^. It é101001ù ê010111calculates that ^^ ^^ ^^ ^^ ^^ ^^ ൌ 0, ^^ ൌ 101úê 010ú, and ^^ ^^ ^^ ^^ ^^ ൌ 111010. ê 010000úê 011010úë110000û
[0053] Next, the algorithm makes a list, ^^ ^^ ^^ ^^ ^^, containing 0, ^^ ^^ ^^ ^^ ^^, and every row of ^^. These are all distinct, so it ends up with a list of length 8. If ^^ is a codeword in ^^ ^^^6,3^ and coords is a list of all bits where ^^ differs from ^^, then every element of ^^ ^^ ^^ ^^ ^^ must be a linear combinations of elements of coords, so coords would need to have at least 3 elements. However, the length of coords must be even, so it would need to have at least 4 elements. Therefore, there is no valid codeword within 3 bitflips of ^^ and the algorithm returns ^∅, 4^. Branched subspace collections and other optimizations
[0054] This is a start towards finding a subspace coset on which the noisy codeword’s restriction is close to a valid codeword. However, there is still quite a bit of room for improvement. First of all, there will generally be enough noise that the restriction of the noisy codeword to most noisy cosets will be significantly more than 3 bit flips from any valid codeword. In that case, one would intuitively expect that ^^ would be nearly random and would want the algorithm to reject that restriction as fast as possible. In particular, one would expect that most of the time ^^^would be different from 0, ^^ ^^ ^^ ^^ ^^, and all of the previous rows. Therefore, time may be saved by checking if the length of ^^ ^^ ^^ ^^ ^^ is greater than 4 every time a new element is added to it and immediately returning ^∅, 4^ if it is.
[0055] If this is done, the algorithm will be able to determine whether or not a given value of ^^ and ^^ ^^ ^^ ^^ ^^ ^^ corresponds to a possible set of 3 or fewer bitflips quite quickly. However, computing ^^ and ^^ ^^ ^^ ^^ ^^ ^^ in the first place is relatively slow. The solution to that is ~13~ Attorney Docket No.: EPFL-6.2463PCT not to compute them from scratch every time. In order to avoid that, consider two cosets ^^ and ^^′ of some ^^-dimensional subspace, and let ^^^, ^^^ᇱ, ^^ ^^ ^^ ^^ ^^ ^^^, and ^^ ^^ ^^ ^^ ^^ ^^^ᇱbe the analogues of ^^ and ^^ ^^ ^^ ^^ ^^ ^^ on these subspace cosets. In that case, compute their versions for ^^ ∪ ^^′ using the following formulas. ^^ ^^ ^^ ^^ ^^ ^^^∪^ᇱൌ ^^ ^^ ^^ ^^ ^^ ^^^xor ^^ ^^ ^^ ^^ ^^ ^^^ᇱ. For any ^^, ^^ ^ ^^, ^^^^,^∪^ᇱൌ ^^^^,^xor ^^^^,^ᇱ, ^^^^,^∪^ᇱൌ ^^^^,^∪^ᇱൌ ^^^^,^, and ^^^^,^∪^ᇱൌ ^^ ^^ ^^ ^^ ^^ ^^^. of ^^ andand then use the formulas above (and herein) to compute the values of ^^ and parity for the restrictions of the function to every coset of any subspace one dimension higher containing that one. As a further improvement, it is noted that since the algorithm is likely to return before using the values of every row of ^^, time may be saved by only computing the value of ^^^if or when it is needed, such as provided via the following algorithms.
[0057] Algorithm 6 Pseudo-Code: smallErrorCheckVersion2 Input: ^ ^^, ^^, ^^′, ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ is the number of dimensions of the codeword in question, ^^ and ^^′ are the matrices such that ^^^,^is the parity of the subset of the bits in the noisy codeword for which ^^^ൌ ^^^ൌ ^^^ൌ 1 and ^^′^,^is the parity of the subset of the bits in the noisy codeword for which ^^^ൌ ^^^ൌ 1, ^^^ൌ 0, ^^ ^^ ^^ ^^ ^^ is the diagonal of ^^ xor ^^′, and ^^ ^^ ^^ ^^ ^^ ^^ is the overall parity of the noisy codeword. Output: If there is a codeword in ^^ ^^^ ^^, ^^ െ 3^ that is within 3 bitflips of the noisy codeword it returns ^ ^^ ^^ ^^ ^^ ^^ ^^, ^^^ where coords is a list of the bits where ^^ disagrees with that codeword and ^^ is the number of such bitflips. If no such codeword exists, it returns ^∅, 4^. 1. if ^^ ^^ ^^ ^^ ^^ ^^ ൌ 0: 2. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^ 3. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^:4. ^^ ^^ ^^ ← ^^^ xor ^^′^5. if ^^ ^^ ^^ ^^ ^^^ൌ 0:6. if ^^ ^^ ^^ ് 0and ^^ ^^ ^^ ് ^^ ^^ ^^ ^^ ^^:7. return ^∅, 4^ 8. else: 9. if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^: 10. ^^ ^^ ^^ ^^ ^^1 ← ^^ ^^ ^^ 11. ^^ ^^ ^^ ^^ ^^2 ← ^^ ^^ ^^xor ^^ ^^ ^^ ^^ ^^ 12. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^ ^^ 13. else: 14. if ^^ ^^ ^^ ് ^^ ^^ ^^ ^^ ^^1and ^^ ^^ ^^ ് ^^ ^^ ^^ ^^ ^^2: 15. 16. if ^^ ^^ ^^ ^^ ^^ ൌ 17.18. else: 19. if ^^xor ^^′ ൌ ^^ ^^ ^^ ^^ ^^1 ⊗ ^^ ^^ ^^ ^^ ^^1xor ^^ ^^ ^^ ^^ ^^2 ⊗ ^^ ^^ ^^ ^^ ^^2: 20. return ^^ ^^ ^^ ^^ ^^ ^^1, ^^ ^^ ^^ ^^ ^^2^,2^ 21. else: ~14~ Attorney Docket No.: EPFL-6.2463PCT 22. return ^∅, 4^ 23. else: 24. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← 0 25. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^:26. ^^ ^^ ^^ ← ^^^ xor ^^′^ xor ^^ ^^ ^^ ^^ ^^^ ⋅ ^^ ^^ ^^ ^^ ^^27. if ^^ ^^ ^^ ൌ 0:28. Do nothing 29. else if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ൌ 0: 30. ^^ ^^ ^^ ^^ ^^ ^^ ^^1 ← ^^ ^^ ^^ 31. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← 1 32. else if ^^ ^^ ^^ ൌ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^1: 33. Do nothing 34. else if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ൌ 1: 35. ^^ ^^ ^^ ^^ ^^ ^^ ^^2 ← ^^ ^^ ^^ 36. ^^ ^^ ^^ ^^ ^^ ^^ ^^3 ← ^^ ^^ ^^ ^^ ^^ ^^ ^^1xor ^^ ^^ ^^ ^^ ^^ ^^ ^^2 37. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← 3 38. else if ^^ ^^ ^^ ൌ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^2or ^^ ^^ ^^ ൌ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^3: 39. Do nothing 40. else: 41. return ^∅, 4^ 42. if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ൌ 0: 43. return ^^ ^^ ^^ ^^ ^^ ^^^,1^ 44. else if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ൌ 1: 45. return ^∅, 4^ 46. else: 47. ^^ ^^ ^^ ^^ ^^1 ← ^^ ^^ ^^ ^^ ^^xor ^^ ^^ ^^ ^^ ^^ ^^ ^^1 48. ^^ ^^ ^^ ^^ ^^2 ← ^^ ^^ ^^ ^^ ^^xor ^^ ^^ ^^ ^^ ^^ ^^ ^^2 49. 50. 51. 52.53. return ^∅, 4^
[0058] Algorithm 7 Pseudo-Code: smallErrorSubspaceSearchVersion2 Input: ^ ^^, ^^2, ^^^ where ^^ is a parameter of the RM code, ^^2 is the dimension of the subspace coset being sought, and ^^ is the noisy codeword. Output: If the algorithm is successful, it finds an ^^2-dimensional subspace coset ^^ such that the restriction of ^^ to ^^ is within 3 bit flips of a valid codeword in ^^ ^^^ ^^2, ^^2 െ 3^. Then it returns ^ ^^, ^^′, ^^^ where ^^′ is the codeword that ^^^is within ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ bit flips of, and ^^ is the number of bitflips between ^^′ and ^^^. If it is unsucessful at finding a suitable subspace coset, it returns ^∅, ∅, 4^.1. Select a random ^ ^^2 െ 1^-dimensional subspace of ^^^ଶ , ^^^.2. Let ^^^, ... , ^^ଶ^ష^మశభି^ be the other cosets of ^^^.3. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ to empty lists.4. 5.~15~ Attorney Docket No.: EPFL-6.2463PCT6. Set ^^′ equal to ^^^^ଷ^, formatted as an array of length 2 .7. ^^ ← 0^ଶൈ^ଶ8. ^^′ ← ^^3 9. while ^^′ ^ ^^: 10. ^^′ ← ^^′ െ 1 11. ^^⋆← 0 12. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^2^ᇱ, 2^ᇱା^^:13. if ^^′^ ൌ 114. ^^⋆:←^^⋆ xor ^^15. ^^′^ଶ^ᇲ^← ^^′^ଶ^ᇲ^xor ^^′^ଶ^ᇲశభ^\^ଶ^ᇲ^16. ^^ ⋆^ᇱ ← ^^17. for ^^ ^ ^^ ^ ^^3:18. ^^^,^← ^^^,^19. ^^ ^^ ^^ ^^ ^^ ← 0 20. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^3^: 21. ^^ ^^ ^^ ^^ ^^^← ^^^,^22. ^^ ^^ ^^ ^^ ^^ ^^ ← ^^′^23. Append ^^ to ^^ ^^ ^^ ^^ ^^.24. Append ^^ ^^ ^^ ^^ ^^ to ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^. 25. Append ^^ ^^ ^^ ^^ ^^ ^^ to ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^. 26. for ^^ ∈ ^^ ^^ ^^ ^^ ^^^2^ି^ଷ^:27. ^^ ← ^^ ^^ ^^ ^^ ^^^^^′^41. return ^ ^^^∪ ^^^, ^^′, ^^^ 42. return ^∅, ∅, 4^ Further optimization
[0059] There are several optimizations contemplated by the inventors to improve processing speed, as will now be described.
[0060] First, instead of calculating the values of ^^ and parity corresponding to each ^ ^^2 െ 1^-dimensional subspace coset directly, various embodiments add another layer of ~16~ Attorney Docket No.: EPFL-6.2463PCT computing the values of ^^ for a subspace coset from its value on smaller cosets. In other words, various embodiments could start with, illustratively, an ^ ^^2 െ 2^-dimensional subspace, compute ^^ on all of its cosets, and then start selecting ^ ^^2 െ 1^-dimensional subspaces that contain ^^ and computing the values of ^^ for the cosets of those spaces from the values of ^^ for the cosets of the original subspace.
[0061] In this manner, a collection of subspaces may be selected such as described herein with respect to the various embodiments.
[0062] Secondly, given cosets ^^^, ... , ^^ଶ^ష^మశభି^of ^^^, the only ways the restriction of the noisy codeword to ^^^∪ ^^^can have three or fewer bits flipped are if either at least one of ^^^and ^^^had no bit flips or neither ^^^nor ^^^had more than 2 bit flips and at least one of them had an odd number of bits flipped. The restriction of the noisy codeword to an ^ ^^2 െ 1^-dimensional subspace coset will usually not be a valid codeword, so the method may check any pair where at least one coset might not have had any bits flipped fairly easily.
[0063] Once the method has checked all possibilities in which one of the cosets has no bit flips, the only other way that any ^^^with an odd number of bit flips can potentially be used to make a pair of cosets ^^^∪ ^^^with three or fewer bit flips is if it only has one bit flipped. Furthermore, the bit in question would have to have the coordinates given by that ^^^’s copy of ^^ ^^ ^^ ^^ ^^, and so be able to calculate its value of ^^ with that suspected bit flip corrected and ignore its previous value. At that point, two ^^^that each had an even nonzero number of bit flips cannot possibly combine to yield a coset with three or fewer bit flips. Two ^^^that each had an odd number of bit flips can only combine to yield a coset on which the noisy codeword is within three or fewer bit flips of a valid codeword if their modified values of ^^ match exactly. Finally, given ^^^that had an odd number of bit flips and ^^^that had a nonzero even number of bit flips, the method can check if ^^^∪ ^^^is within three bit flips of a valid codeword using smallErrorCheckVersion2, and if using the corrected version of the ^^ value for ^^^it will have ^^ ^^ ^^ ^^ ^^ ^^ ൌ 0, and thus run relatively quickly.
[0064] The method may be accelerated by adaptations made using the following observations. First of all, if ^^^and ^^^both have odd numbers of bit flips and corrected values of ^^ ^^⋆^and ^^⋆^then if the restriction of the noisy codeword to ^^^∪ ^^^is within 3 bit flips of a valid codeword then for all indices ^^ and ^^′, ^^^⋆^xor ^^^⋆ᇱ^ൌ ^^⋆^^ xor ^^⋆^^ᇱ. Similarly, if ^^^has an odd number of bit flips and correctedeven number of bit flips, ^^ value of ^^′, and diagonal ^^ ^^ ^^ ^^ ^^ then if the restriction of the noisy codeword to ~17~ Attorney Docket No.: EPFL-6.2463PCT ^^^∪ ^^^is within 3 bit flips of a valid codeword then for all indices ^^ and ^^′ such that ^^ ^^ ^^ ^^ ^^^ൌ ^^ ^^ ^^ ^^ ^^^ᇱ, it is the case that ^^^⋆xor ^^^⋆ᇱ is either ^^′^xor ^^′^ᇱor ^^′^xor ^^′^ᇱxor ^^ ^^ ^^ ^^ ^^. Therefore, the method may be configured to generate a lookup table holding values of ^^^⋆^xor ^^^⋆ᇱ^, ^^′^xor ^^′^ᇱ, and ^^′^xor ^^′^ᇱxor ^^ ^^ ^^ ^^ ^^ and then check for collisions. This would clearly improve the asymptotic runtime significantly, though at the cost of extra overhead for the values of ^^ and ^^ that are being processed. Build decode for binary symmetric channel
[0065] Given a list ^^ and set ^^, let ^^ௌdenote the restriction of ^^ to ^^. Terms such as “proper cosets of ^^” as discussed herein are primarily intended to mean cosets of ^^ other than ^^ itself.
[0066] Algorithm 8 Pseudo-Code: forceDecode3 Input: ^ ^^, ^^, ^^^ where ^^ and ^^ are the parameters of the RM code and ^^ is the noisy codeword. Output: ^ ^^′, ^^^ where ^^′ is a codeword in ^^ ^^^ ^^, ^^^ of minimal distance from ^^ and ^^ is the distance between ^^ and ^^′
[0067] Algorithm 9 Pseudo-Code: smallErrorSubspaceSearch Input: ^ ^^, ^^2, ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ is a parameter of the RM code, ^^2 is the dimension of the subspace coset being sought, ^^ is the noisy codeword, and ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ is the largest difference between the noisy codeword’s restriction to a subspace coset and a valid codeword the algorithm will accept. Output: If the algorithm is successful, it finds an ^^2-dimensional subspace coset ^^ such that the restriction of ^^ to ^^ is within ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ of a valid codeword in ^^ ^^^ ^^2, ^^2 െ 3^. Then it returns ^ ^^, ^^′, ^^^ where ^^′ is the codeword that ^^^is within ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ bit flips of, and ^^ is the number of bitflips between ^^′ and ^^^. If it is unsucessful at finding a suitable subspace coset, it returns ^∅, ∅, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^ 1^.
[0068] Algorithm 10 Pseudo-Code: buildDecode Input: ^ ^^, ^^, ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ and ^^ are the parameters of the RM code, ^^ is the noisy codeword, and ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ and ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ are parameters determining the algorithm’s willingness to conclude something is wrong and backtrack or give up. Output: ^ ^^⋆, ^^^ where ^^⋆is the algorithm’s “guess” of the true codeword and ^^ is the distance between ^^ and ^^⋆, or alternately ^∅, 2^^ 1^ if its search goes sufficiently wrong. 1. ^^ ← 4 2. While ^^ ^ 3: 3. ^ ^^, ^^′, ^^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ℎ^ ^^, ^^ ^ 3, ^^, 3^4. ^^⋆^ ← ^^′.5. ^^′ ← ^^ ^ 3~18~ Attorney Docket No.: EPFL-6.2463PCT 6. ^^ ^^ ^^ ← ^0 ^^ ^^ ^^ ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^^ 7. While ^^′ ^ ^^: 8. for all proper cosets ^^′ of ^^:9. ^^ ^^^ᇱ ൌ ^^⋆^ ^^ ^^ ^^ ^^^ᇱ10. ^^ ← 311. While ^^ ^ 2 and ^^ ^^ ^^^ ^^′^ ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^′^: 12. ^^ ^^ ^^^ ^^′^ ← ^^ ^^ ^^^ ^^′^ ^ 1 13. been chosen in as few previous iterations of 14.^^ ^^ ^^ ^^ ^^ ^^ℎ^ ^^′, ^^ ^ 2, ^^ ^^^ᇱ, 2^ 15. if ^^ ^ 2: 16. 17. 18.19. ^^′ ← ^^′ െ 1 20. Reset ^^ to the value it had the last time it was an ^^′-dimensional subspace coset. 21. else: 22. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← 023. ^^⋆^⋆ ← ^^′^⋆ xor ^^⋆^^^^^^௧^^^ೈ^^⋆^24. for proper cosets ^^ା of ^^⋆ in ^^′:25. Let ^^′′ be the largest subspace coset containing ^^ାthat can be expressed as a union of elements of ^^ and values of ^^ାthat were used in this loop 26. Set ^^ ^^2 to be the xor over all proper cosets of ^^ାin ^^′′ of the restriction of ^^⋆to those cosets.27. ^^ ^^3 ← ^^ ^^2 ^^ ^^ ^^ ^^^శ.28. ^ ^^′, ^^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^3^ ^^ ^ 2, ^^ െ logଶ^| ^^′′| / | ^^ା|^, ^^ ^^3^29. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^ ^^30. ^^⋆^శ ← ^^′ ^^ ^^ ^^ ^^ ^^231. if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^′^:32. ^^′ ← ^^′ ^ 1 33. ^^ ← ^^ ∪ ^^′ 34. return ^ ^^⋆, ^^ ^^ ^^^ ^^⋆^^ ^^ ^^ ^^^^ An example of buildDecode
[0069] In order to demonstrate this, consider using buildDecode to decode a codeword in ^^ ^^^8,3^. To formalize this, imagine that ^^ ∼ ^^ ^^^8,3^, ^^ is a noisy version of ^^, and the goal is to decode it with buildDecode.
[0070] FIGS.5A-5B together depict a flow diagram of a buildDecode method for decoding a noisy codeword ^^ within RM(m, r), illustratively a codeword in ^^ ^^^8,3^.
[0071] At step 510, the method 500 finds a 6-dimensional subspace coset ^^ such that the restriction of ^^ to ^^ is within 3 bitflips of a valid codeword in ^^ ^^^6,3^. Then it calls this codeword ^^⋆and “guesses” that it is the true restriction of ^^ to ^^. At this point, the space can be regarded as the union of ^^ and 3 cosets of ^^. ~19~ Attorney Docket No.: EPFL-6.2463PCT
[0072] Assuming step 510 correctly finds ^^⋆ ⋆^ being ^^ , the xor of ^^ and the restriction of ^^ to any such coset would be a noisy version of a codeword from ^^ ^^^6,2^. Therefore, at step 520 the method 500 attempts to find a 5-dimensional subspace coset ^^⋆such that the xor of the restriction of ^^ to ^^⋆and the restriction of ^^⋆to the corresponding coset in ^^ is within 2 bitflips of a valid codeword in ^^ ^^^5,2^.
[0073] If the search at step 520 search takes too long, the method 500 exits; concluding that it was probably wrong about ^^^being ^^⋆. In some embodiments, the method 500 then restarted with different parameters.
[0074] Otherwise, at step 520 the method sets ^^⋆^⋆ equal to the xor of the codeword it found and the restriction of ^^⋆to the coset of ^^⋆concludes that this is probably thevalue of ^^^⋆.
[0075] At this point, ^^ and ^^⋆are contained in a 7-dimensional subspace coset that also contains one more coset of ^^⋆. ^^ can be divided into 2 cosets of ^^⋆, and the xor of the restrictions of ^^ to these 4 cosets of ^^⋆is a codeword in ^^ ^^^5,1^.
[0076] At step 530, the method xors its best guesses of those restrictions together, finds the closest valid codeword to that, and then xors the codeword with the restrictions of ^^⋆to the other cosets to get a guess of the restriction of ^^ to the last coset of ^^⋆in the 7- dimensional subspace coset. It then adds this to ^^⋆. If the distance between this alleged true restriction and the restriction of ^^ to this coset is too high, it concludes that it got a bad value of ^^⋆and looks for a new one, but the assumption is that still does not happen. So, it renames the entire 7-dimensional subspace ^^ and continues on.
[0077] At this point, the space consists of ^^ and one of its cosets and the xor of the restrictions of ^^ to these two subspace cosets is in ^^ ^^^7,2^.
[0078] At step 540, the method 500 searches this xor for a 5-dimensional subspace coset on which the restriction of the xor of ^^^⋆and ^^ is within 2 bit flips of a valid codeword, ^^⋆. If this takes too long it assumes it did something wrong in the previous step and backtracks, but the assumption is that still does not happen. Otherwise, the method 500 selects the xor of this codeword and the corresponding restriction of ^^⋆in order to determine a guess of ^^^⋆, ^^⋆^⋆ , at which point the only parts of the space on which the method 500 does know the are the last three cosets of ^^⋆. Call these ^^ଶ⋆, ^^ଷ⋆, and ^^ସ⋆and the corresponding cosets of ^^⋆in ^^ ^^^, ^^ଶ, ^^ଷ, and ^^ସ. For each ^^ ^ 1, The xor of the restrictions of ^^ to ^^^⋆, ^^^, ^^⋆, and ^^^is a codeword in ^^ ^^^5,1^. At step 550, the method~20~ Attorney Docket No.: EPFL-6.2463PCT finds the xor of ^^^మ⋆, ^^^⋆మ , ^^⋆^⋆ , and ^^^⋆భ , finds the closest codeword in ^^ ^^^5,1^ to that, and sets ^^⋆^మ⋆ equal to the xor of that codeword and the restrictions of ^^⋆to the other cosets used. Then it computes ^^⋆^య⋆ the same way. is observed that the xor of the restrictions of ^^ to all of the cosets of ^^⋆is a codeword inAt step 560, the method finds the closest codeword in ^^ ^^^5,0^ to the xor of ^^^య⋆and the restrictions of ^^⋆to all the other cosets of ^^⋆, and sets ^^⋆^య⋆ to the xor of that codeword with all of the other restrictions of ^^⋆. Finally, it checks the codewords it found in this step differ from the noisy versions in order towhether it should return ^^⋆or restart the step and look for a new value of ^^⋆.
[0080] It is noted that the above example and the method 500 of FIGS.5A-5B are described within the context of a specific example; namely, decoded a codeword in ^^ ^^^8,3^. It will be appreciated that this method, as with all the methods described herein with respect to the various figures, may be used with any codeword of the form ^^ ^^^ ^^, ^^^. It will be noted that variations in the parameters of m and r will correspondingly modify the number of steps and the elements of those steps as will be appreciated by those skilled in the art.
[0081] Regarding the terms “guess” and “guesses” as used herein, ^^⋆is the list of guesses the algorithm has for the true codeword so far (e.g., “guesses that it is the true restriction of ^^ to ^^" is the explanation of what ^^⋆). As stated above, the algorithm’s best guess of the restriction of the codeword to a coset of ^^⋆is the corresponding restriction of ^^⋆if that is defined and the corresponding restriction of ^^ otherwise. The guess for the restriction of ^^ that it generates is then the xor of the codeword from the previous part of the sentence and the restrictions of ^^⋆to the other cosets of ^^⋆. The algorithm then sets the restriction of ^^⋆to ^^ equal to the xor of the codeword from the second sentence of and the restriction of ^^⋆to the projection of ^^⋆onto ^^; referring to ^^⋆^⋆ as its guess of ^^^⋆is intended to improve reader understanding of the operation of theembodiments. Gaussian noise extensions
[0082] Throughout this, given a list ^^ and set ^^, let ^^ௌdenote the restriction of ^^ to ^^. When referring to proper cosets of ^^, this means cosets of ^^ other than ^^ itself. When treating binary values as real numbers they are mapped to േ1.
[0083] In the gaussian noise model the buildDecode algorithm is fairly similar to the version for a binary symmetric channel. However, there are a few changes. ~21~ Attorney Docket No.: EPFL-6.2463PCT
[0084] Instead of starting by looking for an ^ ^^ ^ 3^-dimensional subspace coset on which the noisy codeword is within 3 bit flips of a valid codeword, the method starts by looking for an ^ ^^ ^ 2^-dimensional subspace coset on which the binary version of the noisy codeword is a valid codeword. On a subspace coset that small, anything with an even number of 1s and the coordinates of the 1s xoring to 0 is a valid codeword, so finding such a subspace coset simply consists of finding two cosets of an ^ ^^ ^ 1^-dimensional subspace that both have even numbers of 1s thats coordinates xor to the same value. Also, instead of judging the likelihood that an alleged partial decoding is correct primarily based on the number of bits where it disagrees with the noisy codeword, the gaussian noise model also takes into account a level of confidence of the determination of the correct value of the bits from their noisy values.
[0085] Algorithm 11 Pseudo-Code: buildDecodeGaussian Input: ^ ^^, ^^, ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^′, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ and ^^ are the parameters of the RM code, ^^ is the noisy codeword, ^^ ^^ ^^ ^^ ^^ ^^ ^^ is the noisy codeword with each entry rounded to േ1, ^^ ^^ ^^ ^^ ^^ and ^^ ^^ ^^ ^^ ^^′ are measures of how uncertain each bit is, and ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ is a parameter determining the algorithm’s willingness to conclude something is wrong and backtrack or give up. Output: ^ ^^⋆, ^^^ where ^^⋆is the algorithm’s guess of the true codeword and ^^ is the dot product of ^^ and ^^⋆, or alternately ^∅, െ∞^ if its search goes sufficiently wrong. 1. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^∅for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^^ 2. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^∅for ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^^ 3. ^^′ ← ^^ ^ 14. Choose an ^^′-dimensional subspace ^^^ ⊆ ^^^ଶ at random.5. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^∅for ^^ ∈ ^^^6. ^^ ← ∅ 7. for cosets ^^′ of ^^^: 8. if the number of 1s in the restriction of ^^ ^^ ^^ ^^ ^^ ^^ ^^ to ^^′ is even:9. ^^ ← ∑ ^^ ^^ ∈ ^^′: ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ൌ 1^^10. ^^ ^^ ^^ ^^ ^^ ^^11.12.13.14. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ ൌ ∑ ^ ^^ ^^ ^^ ^^ ^^′^^.15. if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ is too high relative to ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^:16. ^^ ← ∅17. ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ← ∅18. else:19. ^^′ ← ^^′ ^ 120. Set ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ based on ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱି^ and the valueof ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^.21. exit the for loop 22. if ^^ ൌ ∅: 23. return ^∅, െ∞^ ~22~ Attorney Docket No.: EPFL-6.2463PCT24. ^^⋆^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^^.25. ^^ ^^ ^^ ← ^0 ^^ ^^ ^^ ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^^^^^′ ^ ^^:ൌ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ29. ^^ ← 330. While ^^ ^ 2 and ^^ ^^ ^^^ᇱ ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ:31. ^^ ^^ ^^^ᇱ ← ^^ ^^ ^^^ᇱ ^ 132. Select a proper coset ^^′ of ^^ that has been chosen in as few previousiterations of this loop as possible. 33. ^ ^^⋆, ^^ ^^ ^^ ^^ ^^ ^^, ^^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ℎ^ ^^′, ^^ ^ 2, ^^ ^^^ᇱ, 2^ 34. if ^^ ^ 2: 35. 36.37.38. ^^′ ← ^^′ െ 139. Reset ^^ to the value it had the last time it was an ^^′-dimensional subspace coset. 40. else:41. ^^⋆ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ⋆^ᇱ^ ^^ ^42. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱି^ ^ ∑ ^ ^^ ^^ ^^ ^^ ^^′^⋆^ ^ 2 ∑^∈^^^^ௗ^ | ^^^^^^^^௧ೈᇲ^^^|be expressed as a union of elements of ^^ and values of ^^ାthat were used in this loop 48. Set ^^ ^^2 to be the xor over all proper cosets of ^^ାin ^^′′ of the restriction of ^^⋆to those cosets.49. ^^ ^^3 ← െ ^^ ^^2 ൈ ^^^శ. (i.e. make a list of the negative productsof the corresponding elements of ^^ ^^2 and ^^^శ)50. ^ ^^′, ^^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^3^ ^^ ^ 2, ^^ െ log ାଶ^| ^^′′| / | ^^ |^, ^^ ^^3^51. ^^ ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱ ^ ∑ ^ ^^ ^^ ^^ ^^ ^^^శ^ െ ^^52. ^^ ^^ ^^ ^^253. is sufficiently low relative to ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^:54. 155. ^^′56. ^^ ^^ ^^^ᇱbased on ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ᇱି^and the valueof ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^.57. ^ ^^⋆⋅ ^^^
[0086] buildDecode would is useful but may gain improved reliability by being executed multiple times, and not returning a value until it has found its best decoding multiple times. Also, if the method fails to decode the codeword quickly then it likely that partial decodings are not looking very plausible and standards should be lowered.
[0087] Algorithm 12 Pseudo-Code: buildDecodeSeries ~23~ Attorney Docket No.: EPFL-6.2463PCT Input: ^ ^^, ^^, ^^, ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ where ^^ and ^^ are the parameters of the RM code, ^^ is the noisy codeword, ^^ is the noise level or an estimate thereof, ^^ ^^ ^^ ^^ ^^ ^^ ^^ is the maximum number of attempts the algorithm will make before giving up, and ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ is a function determining the algorithm’s willingness to conclude something is wrong and backtrack or give up in each given step. Output: ^ ^^⋆, ^^^ where ^^⋆is the algorithm’s guess of the true codeword and ^^ is the distance between ^^ and ^^⋆, or alternately ^∅, െ∞^ if its search goes sufficiently wrong. 1. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^ ^^ ^^ ^^ ^^^ ^^^^for ^^ ∈ ^^^^ 2. ^^ ^^ ^^ ^^ ^^′ ← ^ln൫1 ^ ^^ଶ|^^| / ఙమଶି ൯ ⋅ ^^ଶfor ^^ ∈ ^^^ଶ ൧ If this is too computationally expensive an approximation would probably work fine3. ^^ ^^ ^^ ^^ ^^ ← ^ ^^ ^^ ^^ ^^ ^^′ ^^ ^ | ^^^|for ^^ ∈ ^^ଶ ^4. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ∅5. ^^ ^^ ^^ ^^ ^^ ← െ∞ 6. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← 0 7. for ^^ ^^ ^^ ∈ ^^ ^^ ^^ ^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^: 8. ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^, ^^^ ൌ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^, ^^, ^^, ^^ ^^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^′, ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^ ^^^^ 9. if ^^ ^ ^^ ^^ ^^ ^^ ^^: 10. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 11. ^^ ^^ ^^ ^^ ^^ ← ^^ 12. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← 1 13. else if decoding=bestDecoding: 14. ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ← ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^ 1 15. if ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ is sufficiently large (possibly taking ^^ ^^ ^^ or ^^ ^^ ^^ ^^ ^^ ^^ ^^ into account): 16. return ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^^ 17. return ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^, ^^ ^^ ^^ ^^ ^^^
[0088] The various algorithms described above may be used individually and in combination to enable new decoding mechanisms for RM codes and related code variants. Further, the various algorithms described above may also be used to improve existing mechanisms for decoding RM codes and related code variants Embodiments Related to New Decoding Mechanisms
[0089] As described in detail herein and above, various embodiments comprise systems, methods, apparatus, mechanisms, algorithms and the like for efficiently decoding RM codes over binary input (typically) memoryless channels.
[0090] Various embodiments are based on projecting or decoding the code and reducing its parameters, recursively decoding the projected codes, and aggregating the reconstructions. These exploit in particular the self-similarity structure of RM codes ensuring that quotient ~24~ Attorney Docket No.: EPFL-6.2463PCT space codes for RM codes are again RM codes. Also provided are embodiments further providing list-decoding and code concatenation extensions of the various embodiments.
[0091] First Embodiments. In these first embodiments, the various methods decode RM codes by (step 1) selecting a collection of subspaces, (step 2) decoding the restrictions of the noisy codeword to cosets of those subspaces, and (step 3) aggregating the decoded restrictions to obtain a decoding of the original codeword.
[0092] This approach is based on combining weak estimates for the codeword or codeword’s coordinates decodings for some ranges of the code parameters and combine these to get stronger estimates for other ranges of the code parameter. These embodiments rely on various restrictions and projections of the codewords, on well-chosen subset of coordinates, and exploit the strong symmetries (affine group in particular) of the code and list-decoding techniques among various techniques described here. Extensions of these first embodiments include decoding groups of coordinates with such boosted constructions and using list- decoding (such as with CRC-list decoding) on top of these procedures. It is noted that these methods are amenable to parallelization implementation.
[0093] FIG.2. depicts a flow diagram of a methods according to various embodiments. Specifically, the methods 200 of FIG.2 are suitable for execution at a receiver configured to receive and process Reed-Muller (RM) coded data such as via a computing device or various computing / memory resources within the receiver. The method 200 uses various algorithms such as the buildDecode, smallErrorSubspaceSearch, and various forceDecode algorithms as discussed in more detail above and herein.
[0094] At step 210, data encoded with a Reed-Muller (RM) code is received.
[0095] At step 220, a number of steps (221-225) are performed for each received noisy codeword ^^ of the received RM encoded data to determine therefrom a decoding that best fits the noisy codeword ^^, as follows.
[0096] At step 221, the method 200 using the buildDecode algorithm finds a subspace coset, ^^, on which the noisy codeword ^^ is approximately equal to a valid codeword; concluding therefore that the restriction of the true codeword to this coset is likely equal to this valid codeword. The various embodiments avoid brute force inefficient methods such as described above (e.g., pick random subspace cosets and check how well the noisy codeword’s restriction to it matches the nearest codeword, and repeat until one finds a sufficiently good coset) by a version of smallErrorSubspaceSearch in order to find an appropriate subspace coset more efficiently / quickly. ~25~ Attorney Docket No.: EPFL-6.2463PCT
[0097] At step 222, the method 200 using the buildDecode algorithm finds another subspace coset ^^⋆that is partially contained in subspace coset ^^ such that the restriction of the combination of the noisy codeword ^^ and the alleged codeword on subspace coset ^^ to ^^⋆is close to a valid codeword. Then it concludes that the restriction of the true codeword to this coset is likely to be the closest codeword to aforementioned restriction. Again, buildDecode may use the smallErrorSubspaceSearch algorithm to find such a coset faster.
[0098] At step 223, the method 200 using the buildDecode algorithm uses the alleged decodings of the codeword on the union of subspace cosets ^^ and ^^⋆as starting points to determine a reasonable decoding of the codeword on the entire subspace coset spanned by subspace coset ^^ and ^^⋆, and then declares this coset the new value of subspace coset ^^. That is, the buildDecode algorithm uses the fact that the coset it is trying to decode on is composed of cosets of the union of subspace cosets ^^ and ^^⋆. Furthermore, for any of these cosets that it does not already have an alleged decoding on, there are 3 or more cosets that it does have an alleged decoding on that combine with it to form a higher dimensional subspace coset. The buildDecode algorithm uses the fact that the xor of the restrictions of the codeword to these cosets is an RM code with a lower value of ^^ to reduce the problem of determining the restriction of the codeword to the subspace in question to a decoding problem on an RM code with more favorable parameters. In this manner, an appropriate version of forceDecode may then be used to get a reasonable decoding of that restriction.
[0099] At step 224, the method 200 repeats steps 222-223 to keep expanding the subspace coset it has a decoding on until the expanded subspace coset covers the entire space. Each iteration of the second and third steps increases the dimension of the space on which it has a decoding by 1.
[0100] At step 225, the method 200 repeats steps 221-224 using the buildDecode algorithm at least once, to then return the decoding that fits the noisy codeword ^^ the best. In some embodiments, the first through fourth steps are repeated a fixed number of times (e.g., 1, 2, 3, 5, 10, …). In some embodiments, the repetition of the first through fourth steps is terminated when the buildDecode algorithm has found a “best” decoding, which may be defined at a repeatedly found decoding.
[0101] FIG.3. depicts a flow diagram of methods according to various first embodiments. The methods 300 of FIG.3 are suitable for execution at a receiver configured to receive and process Reed-Muller (RM) coded data such as via a computing device or various computing / memory resources within the receiver. Specifically, as described in detail ~26~ Attorney Docket No.: EPFL-6.2463PCT above and further illustrated in FIG.3, one embodiment is a method of decoding Reed-Muller (RM) data utilizing variations of the buildDecode algorithm, the speed and efficacy of which benefits from efficient embodiments of the subspaceSearch and forceDecode algorithms. As shown and described herein, the buildDecode algorithm operates to build up an increasingly large subspace coset of the bits on which one has a reasonable guess of the true codeword (e.g., subspace cosets where finding a codeword is at least possible).
[0102] At step 310, data encoded with a Reed-Muller (RM) code is received.
[0103] At step 320, for each received noisy codeword ^^ of the received RM encoded data, a collection of subspace cosets w is selected; namely, cosets w where a distance between restriction fw of the noisy codeword ^^ and a nearest codeword being less than a predetermined amount / distance (e.g., a few bits).
[0104] It is noted at box 325 that in some embodiments when processing subspace cosets W, the vector P as previously discussed is computed for smaller subspace cosets or sub-cosets (i.e., smaller portions of cosets of interest).
[0105] Generally speaking, the various methods described herein as well as the above- described algorithms contemplate that for every one-dimensional subspace, the method first obtains the corresponding projection of the original received word onto a selected collection of cosets of this subspace, wherein those subspace cosets included within the collection of cosets of this subspace are selected based on likelihood of the subspace coset being worth further processing (e.g., recursive decoding, aggregations, etc.). This determination may be made for a subspace coset by determining for that subspace coset a difference between a received noisy codeword ^^ and a valid codeword. If the difference between a received noisy codeword f and a valid codeword is greater than some amount (e.g., maxFlips or some other fixed or variable amount) then the subspace coset is not included within the collection of subspace cosets to be further processed for that received noisy codeword ^^.
[0106] Thus, various embodiments gain efficiency, speed or processing, and other advantages by reducing the problem space necessary to be processed to achieve a desired result; namely, recovering RM encoded data.
[0107] At step 330, restrictions of the noisy codeword f projected to each of the subspace cosets W of the selected collection of subspace cosets W are decoded (e.g., recursively decoded). For example, the projected vector of the noisy codeword f restrictions may be projected onto each selected subspace cosets W within the collection and a lower-order RM code used to decode the projected vector for each subspace. ~27~ Attorney Docket No.: EPFL-6.2463PCT
[0108] Optionally, in various embodiments, the collection of subspace cosets W is allocated across multiple parallel processing / decoding modules, wherein each processing / decoding module is configured to sequentially decode noisy codeword f restrictions projected thereto.
[0109] At step 340, the decoded restrictions of the noisy codeword f from the collection of selected subspace cosets W are aggregated to obtain a decoding of the corresponding received word of RM encoded data.
[0110] Aggregation mechanisms according to the various embodiments are discussed in more detail above. Further embodiments contemplate an aggregation function comprising a tuning parameter, a majority voting parameter, and so on. Multi-step power iteration methods, multi-step power iteration methods, spectral methods, semi-definite programming methods and the like may also be used.
[0111] Steps 330-340 may be recursively performed or iterated until the process of decoding RM encoded word converges to a stable point. Various embodiments contemplate at step 330 recursively decoding each of the respective plurality of projected words to form a respective plurality of decoded projected words for subsequent aggregation at step 340.
[0112] Second Embodiments. These second embodiments address some choices of parameters where the approach of the first embodiments may result in a few bits of the codeword being wrong. In these cases, a cleanup step is added to address the remaining errors.
[0113] This clean up step may consist of, per optional step 350 of the method 300 of FIG.3, running the same algorithm on its output from the first iteration in the expectation that the reduction in noise from the first iteration would allow it to decode subspaces more accurately and thus get a more accurate result. That is, in response to execution of the method resulting in a failure to obtain a decoding of the received word of RM encoded data, the method is repeated using data obtained during the failed execution of the method. Alternately, the method uses a simpler algorithm in the expectation that the smaller amount of noise after the original aggregation of decoded subspace cosets would make more complicated measures unnecessary.
[0114] Third embodiments. In these third embodiments, restrictions are made on various different collections of subsets or subspaces, such as collections with a controlled intersection or random selections, collections arranged as overlapping branches with or without sub- branches, collections or relatively larger subsets or subspaces overlapping with one or a small ~28~ Attorney Docket No.: EPFL-6.2463PCT number of relatively smaller subsets or subspaces, or subsets or subspaces different in some other manner such as noted in box 335 of the method 300 of FIG.3.
[0115] It is noted at box 325 that in some embodiments when identifying subspace cosets (SSC) to be processed for possible inclusion in the collection of SSCs W, the subsets to be processed are selected based on one or more criteria, such as random selection, intersecting and / or overlapping SSCs, SSCs forming a branched structure (with or without sub-branches), SSCs including or emanating from a single initial SSC, and so on.
[0116] In this manner, values calculated for a first or initial SSC such as for purposes of inclusion in the collection of SSCs may be use as a shortcut or proxy for other SSCs including the first or initial SSC (e.g., the value of vector P, or the difference between a noisy codeword f and a valid codeword, and so on).
[0117] Fourth embodiments. These fourth embodiments use a cauliflower collection defined by selecting subspaces of some given dimensionality independently at random. That is, as noted at box 225, in some embodiments when identifying subspace cosets (SSC) to be processed for possible inclusion in the collection of SSCs W, the subsets to be processed are selected based cauliflower boosting such as by randomly selecting subspaces of a given dimensionality.
[0118] FIG.4 depicts a pseudocode listing of a method according to an embodiment. Specifically, the method 400 of FIG.4 implements various first embodiments such as described herein, using structures described herein with respect to fourth embodiments. In particular, the example illustrates one simple case without the additional components described herein with respect to the various other embodiments.
[0119] The method 400 of FIG.4 illustrates various decoding operations associated with a given string on a plurality of subspaces in an attempt to recover the codeword’s value at 0. In order to recover the full code with this method 400, the method 400 one would need to either modify the program or run it on an appropriately reordered version of the noisy codeword ^^ for every input bit. The code is written in python. Rather than recovering the full codeword by running this for every bit, the method 400 uses every decoded restriction as a source of information about every bit in that subspace to accelerate the decoding. More complicated embodiments use a base decoding algorithm that returns all codewords at minimum length from the input string rather than just finding one such codeword so that one can check which bit flips bring the restriction closer to a valid codeword. ~29~ Attorney Docket No.: EPFL-6.2463PCT
[0120] Portion 410 of the method 400, denoted as restrict(b,x), returns the restriction of an array to the subspace spanned by the indices in b, where such indices are regarded as elements of F2mwritten in binary.
[0121] Portion 420 of the method 400, denoted as areIndependent(b), checks if a set of indices are linearly independent, again regarding them as elements of F2mwritten in binary.
[0122] Portion 420 of the method 400, denoted as boostDecode1(m,r,f,m2,base,steps), attempts to use cauliflower boosting with random m2-dimensional subspaces to determine the true value of f[0], wherein ^^ and ^^ are the parameters of the code in question, ^^ is the noisy codeword, and “steps” is the number of subspaces used. A called subroutine, denoted as base, is a program used to decode the restrictions of the code to the subspaces, which is configured to return an ordered pair of a codeword a minimum distance from its input and the distance between said codeword and its input.
[0123]
[0124] Fifth embodiments. These fifth embodiments use a branched collection of subspaces where for each branch the method selects a small subspace that will be in all subspaces in that branch and then divides it into subbranches that each have a subspace containing that one that they will contain selected and so on until one gets to the actual subspaces in the collection.
[0125] In this manner, values calculated for a first or initial SSC such as for purposes of inclusion in the collection of SSCs may be use as a shortcut or proxy for other SSCs including the first or initial SSC (e.g., the value of vector P, or the difference between a noisy codeword f and a valid codeword, and so on).
[0126] FIG.6 depicts a flow diagram of a subspace coset selection method suitable for use in the embodiments 300 of FIG.3. Specifically, FIG.6 depicts a method 620 suitable for use in implementing step 320 of the method 300 of FIG.3. The method 620 contemplates that for each received noisy codeword f of the received RM encoded data, a collection of subspace cosets W is selected; namely, cosets w where distance between restriction fw of the noisy codeword f and a nearest codeword being less than a predetermined amount / distance (e.g., a few bits). The method 620 further contemplates that the SSCs of interest are arranged in a branch structure divided into sub-branches, wherein for each branch or sub-branch at least one SSC contained in each of its corresponding sub-branches is evaluated to determine if at least some of the SSCs of the sub-branches of that branch or sub-branch should be included in the collection of subspace cosets W. ~30~ Attorney Docket No.: EPFL-6.2463PCT
[0127] Sixth embodiments. In these sixth embodiments, rather than aggregating the decoded restrictions by comparing them on individual points (step 340 and box 345 of FIG.3), as shown in FIG.7 the method selects a subspace, then list decodes the noisy codeword ^^ on a collection of larger subspaces containing the selected subspace. Then the method checks for possible values of the small subspace such that most or all of the lists have at least one element that restricts to that one on the small subspace.
[0128] That is, decoding the restrictions of the noisy codeword f projected to a selected subspace coset W comprises list decoding the noisy codeword ^^ on a collection of larger subspaces containing the selected subspace selected subspace coset W, and identifying possible values of the selected subspace coset W such that most or all of the lists have at least one element that restricts to a corresponding at least one element of the selected subspace coset W. The initial subspace or subspace coset may be selected at random.
[0129] Seventh embodiments. These seventh embodiments provide for a parallel processing architecture in which any of the methodologies described herein are implemented in a parallelized manner by dividing the subspaces in the collection between a number of processing modules (e.g., modules having processor(s), memory, input / output functions such as described herein with respect to FIG.8 and / or other figures) and having each processing module decode the restrictions of the noisy codeword ^^ to its subspaces. Then each processing module can aggregate the information obtained from its subspaces and send its conclusions back to be combined with the aggregated data from the other processing modules. In some embodiments, each processing module is configured to select its own collection of subspaces to decode on rather than having the collection of subspaces generated in a centralized manner.
[0130] These embodiments may be implemented by corresponding modifications to, for example, step 330 of the method 300 of FIG.3. Thus, in some embodiments, there is an allocation of the collection of subspace cosets W is across multiple parallel processing modules, wherein each processing module isto decode noisy codeword f restrictions thereto. In further embodiments, each parallel processing module is configured to select for itself a respective portion of the allocation of subspace cosets W. ~31~ Attorney Docket No.: EPFL-6.2463PCT Base decoding methods
[0131] Eighth embodiments. In these eighth embodiments, a mechanism is used to reduce the dimensionality of the problem space, thereby reducing computational complexity and increasing efficiency.
[0132] One way to decode a noisy codeword in RM(m, r) is to simply compare it to all codewords in RM(m, r) and then determine which of those codewords is the closest. This can be made significant more efficient than the naïve implementation as follows.
[0133] First, consider all possible assignments of coefficients to the terms containing ^^^, and observe that the sum of the remaining terms in the code will be independent of ^^^. The number of bits on which ^^⋆disagrees with ^^′ ^ ^^^^^′′ is equal to ∑௫భ,...,௫^షభ|2 ^^′^ ^^^, ... , ^^^ି^^ െ ^^⋆^ ^^^, ... , ^^^ି^, 0^ െ ^^⋆^ ^^ ^^ ^^ ^^′′^ can compute the value of... , ... , ... , ^^^ି^^ for every ^^^, ... , ^^^ି^, at which point the method is only working in ^^ െ 1 dimensions compared to functions having the appropriate coefficients on terms containing ^^^.
[0135] These eighth embodiments apply this reasoning repeatedly to reduce the dimension of the problem until it drops to ^^ ^ 1, at which point every function that is 1 on an even number of inputs is a possible value of ^^′, enabling a check to see if the value of ^^′ that would minimize the sum of differences has the correct parity. Then, either set ^^′ to that function or set it to that function with the value that has the smallest impact on the sum of differences switched depending on its parity.
[0136] Optionally, various embodiments stop the dimensionality reduction process and compute the best value of ^^′ when the dimension is a bit higher than ^^ ^ 1. Doing so cuts down on the number of coefficients one had to guess at the cost of making it significantly more complicated to find the optimal value of ^^′ in the final step.
[0137] Ninth embodiments. In these ninth embodiments, the above methodologies are modified to increase speed in response to the observation that reducing the dimensionality means that sum of differences has an easily computable minimum value for any function ^^′: ^0,1^^ᇱ→ ^0,1^. For example, if that minimum value is higher than the number of bits that could plausibly have been flipped, then conclude that the method has already determined a coefficient incorrectly and skip to the next assignment of values, to the ones already determined rather than guessing values for the remaining coefficients. ~32~ Attorney Docket No.: EPFL-6.2463PCT
[0138] Thus, in various embodiments, some or all of the SSC related computational steps are modified such that termination of a computational step for a particular SSC is deemed to terminate (e.g., terminated as yielding an unsatisfactory result) or at least make irrelevant (and not worth performing) the same computational step for other SSCs that include the particular SSC. As such, in various embodiments, some or all of the computational steps (or portions thereof) described or invoked by the method 300 of FIG.3 (e.g., steps 320, 325, 330, 340, and / or 345) are modified accordingly.
[0139] Tenth embodiments. In these tenth embodiments, the above methodologies are modified to increase speed in response to the observation that for any given ^^⋆∈ ^0,1^ଶ^and ^^′′ ∈ ^^ ^^^ ^^ െ 1, ^^ െ 1^ the minimum possible disagreement between ^^′ ^ ^^^^^′′ and ^^⋆is given by: ∑௫భ,...,௫^షభmin^ ^^⋆^ ^^^, ... , ^^^ି^, 0^ ^ | ^^⋆^ ^^^, ... , ^^^ି^, 1^ െ ^^′′^ ^^^, ... , െ ^^⋆^ ^^^, ... , ^^^ି^, 0^ െ ^^⋆^ ^^^, ... , ^^^ି^, 1^ െ ^^′′^ ^^^, ... ,the method can find ^^ and ^^ such that is equal to ^^ ^ ∑௫ ,...,௫| ^^^ ^^^, ... , ^^^ି^ െభ ^షభ ^^^′′^ ^^ , ... , ^^^ି^^|. At this point, the problem of finding all ^^′′ ∈ ^^ െ 1, ^^ െ 1^which this sum is sufficiently small is equivalent to the problem of finding all ^^′′ ∈ ^^ ^^^ ^^ െ 1, ^^ െ 1^ that agree with ^^ sufficiently well, which can be done by recursively calling a decoding algorithm on ^^ instead of checking all possible values of ^^′′.
[0141] As noted in various embodiments described herein, a goal is to reduce the problem space necessary to be processed to achieve a desired result; namely, recovering RM encoded data.
[0142] Eleventh embodiments. These eleventh embodiments provide an alternative approach to decoding noisy codewords in ^^ ^^^ ^^, ^^^ with small ^^ by the methods looking for a short list of bits that one can flip to yield a valid codeword. One can check the parity of the number of bits one needs to flip by checking the parity of the noisy codeword for any ^^ ^ ^^. For ^^ ൌ ^^ െ 2 if one bit flip is needed one can determine which bit it is by xoring the coordinates of all bits in the noisy codeword that are 1. For ^^ ^ ^^ െ 3 the distance between codewords is at least 8 and one can quickly find the set of 3 or fewer bits that can be flipped to yield a valid codeword, if any, using the approach outlined below. Call the coordinates that need to be flipped ^^^^^, ... ^^^்^where ^^ ^ 3. Compute the value of∑ ^௧^ ^௧^௧ ^^^^^^^ ^^ ^^ ^^2^ forany ^^ and ^^ by the sum of all bits in the noisy codeword with ^^^ൌ ^^^ൌ 1. Also,~33~ Attorney Docket No.: EPFL-6.2463PCT given any ^^ and ^^′ such that ^^^௧^ ^௧^ ^௧^ ^௧^^ ൌ ^^^ᇱfor all ^^ it will be the case that∑௧^^^^^^ൌ∑௧^^^௧^^ᇱ^^^௧^^ for all ^^, which us to divide the coordinates intoo the possible values of the tuple ^ ^^^^^t^்^^ , ... , ^^^^. Also, given any two such sets it can be determined whether they have an odd ^^^௧^that are 1 on both of them by checking௧^^^௧^∑^^^^௧^^ for ^^ in one set and ^^ in the that and appropriate case analysis is sufficient to figure out which sets correspond to which tuples (up to reordering of the ^^^௧^), and thus find the appropriate bits to flip. Finally, one would need to check if flipping them actually yields a codeword in ^^ ^^^ ^^, ^^^ and conclude that the noisy codeword is at least 4 bits away from any valid codeword if it does not.
[0143] Twelfth embodiments. In these twelfth embodiments, in cases of looking for sets of bits to flip that are bigger than the ones found directly using the above approaches, the methods are made useful by “guessing” short lists of bits to flip and then using the above- described techniques to check if there are a few additional bits that could be flipped in order to get a valid codeword.
[0144] For example, random bit sequences may be used, as well as common or expected bit sequences.
[0145] Thirteenth embodiments. These thirteenth embodiments provide an alternative approach to finding codewords in ^^ ^^^ ^^, ^^^ that are close to a given string, as shown in FIG.6, by dividing the space into an ^ ^^ െ 1^-dimensional subspace and its complement and making lists of elements of ^^ ^^^ ^^ െ 1, ^^^ that are close to the restrictions of the string to the subspace and its complement. Then could compute the product of each of these codewords with the parity check matrix for ^^ ^^^ ^^, ^^^. At that point, one can check for pairs of a codeword for the subspace and a codeword for its complement that have the same product with the parity check matrix in order to determine if these codewords can be combined to yield a codeword for the whole space that is close to the string.
[0146] Various thirteenth embodiments are applied to the processing of multiple subspaces in order to address the possibility that the bits that got flipped are either disproportionately in the selected subspace or disproportionately in its compliment. The list decoding on the subspaces may be performed with another iteration of this algorithm or by some other method.
[0147] Fourteenth embodiments. These fourteenth embodiments provide an alternative approach to the above by selecting an ^ ^^ െ 1^-dimensional subspace and then for each ~34~ Attorney Docket No.: EPFL-6.2463PCT element of ^^ ^^^ ^^ െ 1, ^^^ that is sufficiently close to the restriction of the noisy codeword to that subspace one would find all elements of ^^ ^^^ ^^ െ 1, ^^ െ 1^ that were sufficiently close to the xor of that codeword and the restriction of the noisy codeword to that subspace’s complement. Then one could do the same thing for all elements of ^^ ^^^ ^^ െ 1, ^^^ that were sufficiently close to the restriction of the noisy codeword to the subspace’s complement. Relative to the previous version this saves memory since one does not keep entire lists of nearby codewords in memory and it avoids the need to try multiple subspaces. In some embodiments, to avoid keeping the lists of codewords in memory some computations are repeated.
[0148] Fifteenth embodiments. In these fifteenth embodiments, there are some choices of parameters and subspace sizes where either it is computationally unmanageable to find the right codeword or the list of potential codewords is too long to manage. However, there will inevitably be some subspaces that have unusually low numbers of bits that were flipped by noise. These are useful both in the sense that it is computationally easier to find a codeword that is close to the noisy codeword than to find a more distant codeword and in the sense that the probability that the codeword nearest the noisy codeword is the true codeword will generally be higher when the noisy codeword is close to a valid codeword. The simplest way to take advantage of this would be by using the previous methods of about aggregating decodings of the noisy codeword on subspaces with the modification that methods now look for subspaces where the restriction of the noisy codeword is unusually close to a valid codeword and only use those subspaces for the aggregation.
[0149] Sixteenth embodiments. These sixteenth embodiments provide an alternative approach to the methods discussed herein, which are modified to look for subspace cosets in which the noisy codeword is close to a valid codeword using the approach outlined above in the eleventh embodiments. When using that approach to determine if the restriction of the noisy codeword to a given subspace coset is within a few bit flips of a valid codeword the slowest part is likely to be computing the sums of the tensor squares of the coordinates of the bits that were flipped. However, if one divides the subspace coset into smaller subspace cosets its sums of the squared coordinates will be the sums of their sums of their squared coordinates. So, in order to try to find an ^^′-dimensional subspace coset on which the noisy codeword is within a few bit flips of a valid codeword one could try the following. First, select an ^ ^^′ െ 1^-dimensional subspace. Then, one would take all of its cosets and compute the sum of the tensor squares of the indices of the bits that were flipped on those cosets. ~35~ Attorney Docket No.: EPFL-6.2463PCT Then, for every pair of cosets, one would add their sums of squared bit-flip indices to get the sum of the squared bit-flip indices for the combined coset and use that to check if the restriction of the noisy codeword to that coset was within a few bit flips of a valid codeword. One could make this even faster by starting with a subspace of dimension ^^′ െ 2, computing the sums of the squared bit-flip indices for all of its cosets, and using those sums to compute the sums of the squared bit-flip indices for the cosets of multiple ^ ^^′ െ 1^-dimensional subspaces extending that one.
[0150] Seventeenth embodiments. In these seventeenth embodiments, the above methodologies are modified to increase speed by focusing on pairs of ^ ^^′ െ 1^-dimensional cosets in which the restriction of the noisy codeword to one of them was a valid codeword. An ^^′-dimensional coset on which the noisy codeword is within 3 bit flips of a valid codeword has at least a 1 / 4 chance of having the restriction of the nosiy codeword to one of its halves be a valid codeword and this would significantly reduce the number of pairs one would have to check.
[0151] One embodiment alternately looks for pairs for which their intersection / union with some subspace orthogonal to the original ^ ^^′ െ 1^-dimensional space had no bits flipped. That would be equivalent to looking for pairs of cosets that had equal values of appropriate projections of their sums of squared indices of bit-flips.
[0152] Eighteenth embodiments. In these eighteenth embodiments, the above methodologies are modified to increase speed of at least the sixteenth embodiments by observing that the only way two ^ ^^′ െ 1^-dimensional subspace cosets on which the noisy codeword does not restrict to a valid codeword combine to yield an ^^′-dimensional subspace coset on which the noisy codeword is within 3 bit flips of a valid codeword is if at most one of these cosets has an even number of bit flips and the one(s) with an odd number of bit flips have / has exactly one bit flip. Assuming ^^′ ^ ^^ ^ 3 there is at most one bit that could be flipped to convert the restriction of the noisy codeword to any given ^ ^^′ െ 1^-dimensional subspace coset to a valid codeword. So, the method can recalculate the sum of the squared indices of bitflips for all such cosets with that bit flipped and then only consider pairs of ^ ^^′ െ 1^-dimensional cosets in which at least one of the cosets originally had an odd number of bits flipped. This would both save time by not checking pairs that definitely were not going to yield useful cosets and simplify the calculations for the pairs that were checked.
[0153] The various embodiments discussed herein with respect to the BuildDecode and related algorithms begin by identifying subspace coset(s) on which a noisy codeword is ~36~ Attorney Docket No.: EPFL-6.2463PCT relatively easy to decode, and then use the information provided by the subspace cosets already decoded to help decode other cosets until the entire codeword is decoded. These embodiments generally decode every restriction of the noisy codeword to a coset correctly in order to get the correct overall decoding, although in some embodiments some level of errors is addressed by backtracking within the method(s) or starting over.
[0154] In contrast to the BuildDecode embodiments algorithms discussed thus far, Recursive Projection-Aggregation (RPA) decoding takes (projects) the restriction of the noisy codeword to every subspace coset of appropriate dimension, decodes them all independently, and then combines the decodings in an effort to mitigate the fact that each decoding is extremely unreliable.
[0155] Various embodiments contemplate combining the processes of projecting (from RPS decoding) and restricting (BuildDecode and related algorithms) codewords in order to aggregate decodings, to provide thereby following embodiments that also use projections.
[0156] Nineteenth embodiments. These nineteenth embodiments provide an alternate approach to using subspaces with low numbers of bit flips is to use them as starting points to decode increasingly large sets of bits. The key idea behind this plan other than the existence of such subspaces is the observation that given a codeword in RM^m, r^ and an ^m െ 1^- dimensional subspace, the xor of the restriction of the codeword to the subspace and its restriction to the complement of the subspace is an element of RM^m െ 1, r െ 1^. So, if there is a noisy codeword from RM^m, r^ and the goal is to decode its restriction to an m′- dimensional subspace but already known is its restriction to an ^m′ െ 1^-dimensional subsubspace of it then decoding the restriction is equivalent to decoding a codeword in RM^m′ െ 1, r െ 1^.
[0157] As such, one can find some coset of a subspace of dimension ^^′ on which there are relatively few bits flipped. Then one can look for another ^^′-dimensional subspace coset that’s intersection with that one has ^^′ െ 1 dimensions such that there are relatively few bits flipped in the portion of the new subspace that is not contained in the old one. At that point, decoding the rest of the ^ ^^′ ^ 1^-dimensional subspace coset containing these two subspaces is equivalent to decoding an element of ^^ ^^^ ^^′ െ 1, ^^ െ 2^, and thus can be manageable. At that point one can know the value of the codeword on an ^ ^^′ ^ 1^-dimensional subspace coset and look for another subspace coset whose intersection with that one is one dimension smaller and which has relatively few bits flipped outside the previous subspace coset. Once one is found, it may be used to extend decoding to the ^ ^^′ ^ 2^-dimensional subspace coset ~37~ Attorney Docket No.: EPFL-6.2463PCT containing the old coset and the new one. This process is repeating this until the entire codeword is decoded. Parallel Processing
[0158] In various embodiments, parallel processing implementations are provided wherein multiple processors or processing threads are used to process respective RM encoded words, or respective dimensions of an RM encoded word or perform other parallel processing operations configured to speed up the decoding process.
[0159] Specifically, an advantage of the disclosed RPA decoding methodology for RM codes over the SCL decoder for polar codes is that the disclosed RPA decoding methodology naturally allows parallel implementation while the SCL decoder is simply not parallelizable. An important key step in the disclosed RPA decoding methodology for decoding a codeword of RM(r,m) is to decode the quotient space codes which are in RM(r-1,m-1) codes, and each of these quotient space codes can be decoded independently and in parallel. Such a parallel structure is crucial to achieving high throughput and low latency.
[0160] Thus, in various embodiments, the collection of subspace cosets W is allocated across multiple parallel decoding modules, wherein each decoding module is configured to sequentially decode the various noisy codeword f restrictions projected thereto prior to aggregation of decoded restrictions. Extensions
[0161] Various embodiments contemplated by the inventors herein provide universal decoder functionality suitable for use in a wide variety of channel decoding and other applications.
[0162] It is noted that the methods, algorithms, techniques and the like for encoding, decoding and otherwise processing Reed-Muller codes, Polar codes and variations thereof discussed in the first appended document, second appended document, or discussed herein with respect to the various figures may be operably combined in part or in whole to provide various other and further embodiments and that such embodiments are contemplated by the inventors.
[0163] Various embodiments comprise systems and methods of encoding, decoding and otherwise processing Reed-Muller codes, Polar codes and variations thereof discussed in the first appended document, second appended document, or discussed herein with respect to the ~38~ Attorney Docket No.: EPFL-6.2463PCT various figures that operate by combining in part or in whole the different components and code reductions to provide various other and further embodiments.
[0164] Various embodiments comprise systems and methods of applying recursive aggregation-projection algorithms to any code that supports the algorithm’s operations (e.g., BCH, Reed-Solomon or expander codes). In particular, taking any code on a finite field, summing pairs of components based on a matching of the components, iterating this projection procedure a number of time until the obtained word is decoded by a specific algorithm, and reverting the projection parts with aggregation functions.
[0165] FIG.8 depicts a high-level block diagram of a computing device, such as a channel decoder or other computing device, suitable for use in performing functions described herein such as those associated with the various elements described herein with respect to the figures.
[0166] As depicted in FIG.8, computing device 800 includes a processor element 803 (e.g., a central processing unit (CPU) and / or other suitable processor(s)), a memory 804 (e.g., random access memory (RAM), read only memory (ROM), and the like), a cooperating module / process 805, and various input / output devices 806 (e.g., a user input device (such as a keyboard, a keypad, a mouse, and the like), a user output device (such as a display, a speaker, and the like), an input port, an output port, a receiver, a transmitter, and storage devices (e.g., a persistent solid state drive, a hard disk drive, a compact disk drive, and the like)).
[0167] It will be appreciated that the functions depicted and described herein may be implemented in hardware and / or in a combination of software and hardware, e.g., using a general purpose computer, one or more application specific integrated circuits (ASIC), and / or any other hardware equivalents. In one embodiment, the cooperating process 805 can be loaded into memory 804 and executed by processor 803 to implement the functions as discussed herein. Thus, cooperating process 805 (including associated data structures) can be stored on a computer readable storage medium, e.g., RAM memory, magnetic or optical drive or diskette, and the like.
[0168] It will be appreciated that computing device 800 depicted in FIG.8 provides a general architecture and functionality suitable for implementing functional elements described herein or portions of the functional elements described herein.
[0169] It is contemplated that some of the steps discussed herein may be implemented within hardware, for example, as circuitry that cooperates with the processor to perform various method steps. Portions of the functions / elements described herein may be ~39~ Attorney Docket No.: EPFL-6.2463PCT implemented as a computer program product wherein computer instructions, when processed by a computing device, adapt the operation of the computing device such that the methods and / or techniques described herein are invoked or otherwise provided. Instructions for invoking the inventive methods may be stored in tangible and non-transitory computer readable medium such as fixed or removable media or memory, and / or stored within a memory within a computing device operating according to the instructions.
[0170] Thus, various embodiments for decoding Reed-Muller (RM) encoded data may be implemented via code stored on a non-transient medium in or suitable for use with a receiver (e.g., a special purpose receiver or decoding portion therein, computing device implementing a receiver function or decoding function, and so on), by a receiver or decoding portion thereof configured to perform the method such as by executing such code, by a special purpose device configured for performing the method and so on.
[0171] Various modifications may be made to the systems, methods, apparatus, mechanisms, techniques, and portions thereof described herein with respect to the various figures, such modifications being contemplated as being within the scope of the invention. For example, while a specific order of steps or arrangement of functional elements is presented in the various embodiments described herein, various other orders / arrangements of steps or functional elements may be utilized within the context of the various embodiments. Further, while modifications to embodiments may be discussed individually, various embodiments may use multiple modifications contemporaneously or in sequence, compound modifications and the like.
[0172] Although various embodiments which incorporate the teachings of the present invention have been shown and described in detail herein, those skilled in the art can readily devise many other varied embodiments that still incorporate these teachings. Thus, while the foregoing is directed to various embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof. As such, the appropriate scope of the invention is to be determined according to the claims. ~40~
Claims
Attorney Docket No.: EPFL-6.2463PCT What is claimed is:
1. A method for decoding Reed-Muller (RM) encoded data, the method being implemented via code stored on a non-transient medium in a receiver and comprising, for each received noisy codeword f of RM encoded data: selecting a collection of subspace cosets W, each of the selected subspace cosets W being associated with a distance of restriction fW of the noisy codeword f from a nearest codeword being less than a predetermined amount; decoding the restrictions of the noisy codeword f projected to each of the selected subspace cosets W; and aggregating the decoded restrictions to obtain a decoding of the received word of RM encoded data.
2. The method of claim 1, wherein selecting a collection of subspace cosets W associated with a noisy codeword f comprises: (1) finding a subspace coset ^^ on which the noisy codeword ^^ is approximately equal to a valid codeword; (2) finding another subspace coset ^^⋆that is partially contained in ^^ such that the restriction of the combination of the noisy codeword ^^ and the alleged codeword on ^^ to ^^⋆is close to a valid codeword; (3) using the alleged decodings of the codeword on the intersection of subspace cosets ^^ and ^^⋆, determine a decoding of the codeword on the entire subspace coset spanned by subspace cosets ^^ and ^^⋆and declaring this coset the new value of subspace coset ^^; (4) repeating steps 2-3 to keep expanding the subspace coset it has a decoding on until the expanded subspace coset ^^ covers the entire space.
3. The method of claim 1, wherein the steps of decoding and aggregating are iteratively performed until converging to a valid received word of RM encoded data.
4. The method of claim 1, wherein each of a plurality of subspace cosets W of interest is evaluated for inclusion within the collection of subspace cosets W by calculating a vector P using a respective smaller coset included within the subspace coset of interest. ~41~ Attorney Docket No.: EPFL-6.2463PCT 5. The method of claim 4, wherein in response to execution of the method resulting in a failure to obtain a decoding of the received word of RM encoded data, the method is repeated using data obtained during the failed execution of the method.
6. The method of claim 4, wherein the plurality of subspace cosets W of interest comprises a set of randomly selected subspace cosets W.
7. The method of claim 4, wherein the plurality of subspace cosets W of interest comprises an initial of subspace coset W of interest and a plurality of additional subspace cosets W of interest including the initial subspace coset W of interest.
8. The method of claim 4, wherein the plurality of subspace cosets W of interest comprises a branched set of subspace cosets W of interest.
9. The method of claim 8, wherein the collection of subspace cosets W of interest is selected via a cauliflower collection defined by randomly selecting subspaces of a given dimensionality.
10. The method of claim 4, wherein: decoding the restrictions of the noisy codeword f to a selected subspace coset W comprises list decoding the noisy codeword on a collection of larger subspaces containing the selected subspace selected subspace coset W; the method further comprising identifying possible values of the selected subspace coset W such that most or all of the lists have at least one element that restricts to a corresponding at least one element of the selected subspace coset W.
11. The method of claim 1, further comprising allocating the collection of subspace cosets W is across multiple parallel processing modules, wherein each processing module is configured to decode noisy codeword f restrictions thereto.
12. The method of claim 11, wherein each parallel processing module is configured to select for itself a respective portion of the allocation of subspace cosets W. ~42~ Attorney Docket No.: EPFL-6.2463PCT 13. The method of claim 1, further comprising decoding a noisy codeword f in RM(m, r) by comparing the noisy codeword f in RM(m, r) to all codewords in RM(m, r) having a dimensionality less than m.
14. A method for decoding Reed-Muller (RM) encoded data, the method being implemented via code stored on a non-transient medium in a receiver and configured to process each received noisy codeword ^^ of the received RM encoded data to determine therefrom a respective decoding that best fits the noisy codeword ^^, the method comprising: (1) finding a subspace coset ^^ on which the noisy codeword ^^ is approximately equal to a valid codeword; (2) finding another subspace coset ^^⋆that is partially contained in ^^ such that the restriction of the combination of the noisy codeword ^^ and the alleged codeword on ^^ to ^^⋆is close to a valid codeword; (3) using the alleged decodings of the codeword on the intersection of subspace cosets ^^ and ^^⋆, determine a decoding of the codeword on the entire subspace coset spanned by subspace cosets ^^ and ^^⋆and declaring this coset the new value of subspace coset ^^; (4) repeating steps 2-3 to keep expanding the subspace coset it has a decoding on until the expanded subspace coset ^^ covers the entire space; (5) repeating steps 1-4 at least once to determine therefrom a respective decoding that best fits the noisy codeword ^^.
15. The method of claim 14, wherein the subspace cosets W comprise branched subspace cosets W.
16. An apparatus for decoding Reed-Muller (RM) encoded data, the apparatus comprising a processor configured to: for each received noisy codeword f of RM encoded data, selecting a collection of subspace cosets W, each of the selected subspace cosets W being associated with a distance of restriction fW of the noisy codeword f from a nearest codeword being less than a predetermined amount, wherein evaluation of each of a plurality of subspace cosets of interest includes calculating a vector P using a respective smaller coset included within the coset of interest. ~43~ Attorney Docket No.: EPFL-6.2463PCT 17. A tangible and non-transient computer readable storage medium storing instructions which, when executed by a computer, adapt the operation of the computer to provide a method of decoding Reed-Muller (RM) encoded data, the method comprising: for each received noisy codeword f of RM encoded data, selecting a collection of subspace cosets W, each of the selected subspace cosets W being associated with a distance of restriction fWof the noisy codeword f from a nearest codeword being less than a predetermined amount, wherein evaluation of each of a plurality of subspace cosets of interest includes calculating a vector P using a respective smaller coset included within the coset of interest. ~44~