Improved Construction of Robust Gray Codes
Abstract
A robust Gray code, formally introduced by (Lolck and Pagh, SODA 2024), is a Gray code that additionally has the property that, given a noisy version of the encoding of an integer , it is possible to reconstruct so that is small with high probability. That work presented a transformation that transforms a binary code of rate to a robust Gray code with rate , where the constant in the can be at most . We improve upon their construction by presenting a transformation from a (linear) binary code to a robust Gray code with similar robustness guarantees, but with rate that can approach .
I Introduction
In [1], Lolck and Pagh introduce the notion of a robust Gray code. Informally, a robust Gray code has an encoding map that maps integers to bitstrings, with the following desiderata.
-
•
should be a Gray code.111The paper [1] also gives a more general definition, where the code should have low sensitivity, meaning that is small; however, both their code and our code is a Gray code, so we specialize to that case (in which the sensitivity is ). That is, for any , .
-
•
should be “noise robust.” Informally, this means that we should be able to approximately recover an integer given a noisy version of . Slightly more formally, should have a decoding map , so that when , the estimate should be close to with high probability.
-
•
should have high rate. The rate of should be as close to as possible.
-
•
should have efficient algorithms. Both and should have running time polynomial (ideally, near-linear) in .
Robust Gray codes have applications in differential privacy; see [1, 2, 3, 4] for more details on the connection. It is worth mentioning that there exist non-binary codes based on the Chinese Remainder Theorem [5, 6] that have nontrivial sensitivity, but in our work, we focus on binary codes.
Our Contributions. In this paper, we improve upon the construction of [1] by giving a construction of a robust Gray code with the same robustness guarantees, but better rate.
More precisely, for , [1] give a general recipe for turning a binary error-correcting code with rate into a robust Gray code with rate , and with the following robustness guarantee:
(1) |
where the probability is over the noise vector , and is the failure probability of the code on the binary symmetric channel with parameter .
Our main result is a similar transformation that turns a (linear) binary code with good performance on the binary symmetric channel into a robust Gray code . We obtain a similar robustness guarantee as (1) (see Theorem 1 for the precise statement), but with better rate. Concretely, if the original code has rate , the rate of the robust Gray code from [1] is proven to be , where the constant inside the approaches when has sublinear distance; this comes from the fact that the a codeword in their final construction involves four codewords from . In contrast, under the same conditions, our robust Gray code has rate approaching ; this is because our construction involves only two codewords from . (See Observation 2 for the formal statement). Moreover, if the encoding and decoding algorithms for are efficient, then so are the encoding and decoding algorithms for our construction ; concretely, the overhead on top of the encoding and decoding algorithms for is (see Lemma 7 for the formal statement).
As a result, when instantiated with, say, a constant-rate Reed-Muller code or a polar code (both of which have sublinear distance and good performance on the BSC() (see, e.g., [7, 8, 9, 10, 11])), our construction gives efficient robust Gray codes with a rate about two times larger than than previous work, approaching .
Main Idea. The idea of our transformation is quite simple, and follows the same high-level structure as [1]. We begin with our base code , and use it to construct an intermediate code (with an appropriate ordering). Then we add new codewords to to complete it to a Gray code. For example, if are two consecutive codewords in , then we will insert codewords in between them, iteratively flipping bits to move from to .
The main difference between our construction and that of previous work is how we build and order . First, we use a standard Gray code to construct an ordering of the codewords in . Then, we build as follows. Let be the ’th codeword in . Then the ’th codeword in is given by
where is a short string that is all zeros if is even and all ones otherwise, and denotes concatenation. Then we form by interpolating as described above.
Our decoding algorithm ends up being rather complicated, but the idea is simple. Suppose that for a codeword , we see a corrupted version , where is a noise vector. As described above, is made up of a prefix from and a suffix from , for some . Let be the index where “crosses over” from to . Notice that, as this crossover point can only be in one place, at least one of the two codewords of appearing in will be complete, and equal to either or . Thus, if we could identify where the crossover point was, then we could use ’s decoder to decode whichever the complete -codeword was to identify ; and then use our knowledge of where is to complete the decoding. The simple observation behind our construction is that, because the strings (which are either all zeros or all ones) flip with the parity of , we can tell (approximately) where was! Indeed, these strings will be all zeros before and all ones after , or vice versa. Of course, some noise will be added, but provided that the length of the strings are long enough, we will still be able to approximately locate with high probability.
However, there are several challenges to implementing this simple idea. For example, given and , how do we efficiently compute ? (Here is where the fact that we ordered carefully comes in; it’s not trivial because the number of codewords of inserted between and depends on , so naively adding up the number of codewords of that come before and then adding would take exponential time.) Or, what happens when the crossover point is very close to the end of ? (Here, it might be the case that we mis-identify ; but we show that this does not matter, with high probability, because our final estimate will still be close to with high probability). In the rest of the paper, we show how to deal with these and other challenges.
II Preliminaries
We begin by setting notation. Throughout, we work with linear codes over , so all arithmetic between codewords is modulo 2. For , let denote the Hamming distance between and . We use to denote the Hamming weight of a vector . For a code , the minimum distance of the code is given by .
For two strings and , we use to denote the concatenation of and . For a string and for , we use to denote the prefix of the string ending at (and including) index . Analogously, we use be defined as the suffix of starting at (and including) index . For an integer , we use to denote the set .
For , let be majority function on bits. (In the case that is even and a string has an equal number of zeros and ones, is defined to be a randomized function that outputs or each with probability .) We use to denote the Bernoulli- distribution on , so if , then is with probability and with probability .
Next we define Binary Reflected Codes, a classical Gray code ([12]; see also, e.g., [13]); we will use these to define our ordering on .
Definition 1 (Binary Reflected Code, [12]).
Let be a positive integer. The Binary Reflected Code (BRC) is a map defined recursively as follows.
-
1.
For , and .
-
2.
For , for any ,
-
•
If , then
-
•
If , then
-
•
It is not hard to see that for any two successive integers and , the encoded values and differ in exactly one bit. We will need one more building-block, the Unary code.
Definition 2 (Unary code).
The Unary code is defined as the image of the encoding map given by The decoding map is given by
Next, we define the failure probability of a code .
Definition 3.
Let be a code with message length and encoding and decoding maps and respectively. The probability of failure of is
where the probability is over a noise vector with .
III Construction
We recall the high-level overview of our construction from the introduction: To construct we will start with a base code where , which we will order in a particular way (Definition 4). Then we construct an intermediate code by transforming the codewords of (Definition 5); the codewords of inherit an order of . Finally, we create final code by adding new codewords that “interpolate” between the codewords of so that it satisfies the Gray code condition (Definition 6). We discuss each of these steps in the subsequent subsections.
III-A Base Code
Given a base code , we define an ordering on the elements of as follows.
Definition 4.
[Ordering on ] Let be a linear code with block length and dimension . Let be a generator matrix for , and let denote the -th row of . Given , define to be the unique integer so that .222As noted after Definition 1, and differ in only one bit, so is well-defined. Let . Then, for all , the -th codeword of is defined by
Our next lemma establishes that indeed this ordering hits all of the codewords.
Lemma 1.
Let be a linear code, and consider the ordering defined in Definition 4. For every , there is a unique index such that .
Proof.
Observe that, by construction, we have
Since is a bijection and is full rank, this implies that each codeword in is uniquely represented as some for ∎
III-B Intermediate Code
Next, we describe how to generate our intermediate code .
Definition 5.
Let be a linear code of dimension . Let denote the ordering of codewords in as per Definition 4. Let . The intermediate code , along with its ordering, is defined as follows. For each , define by the equation
(2) |
Then, is the subset of defined by , where the code is ordered as .
III-C Final Code
To create our robust Gray code , given any two consecutive codewords in , we inject extra codewords between them to create , as follows.
Definition 6 (Definition of our robust Gray code ; and the parameters ).
Let be a code defined as in Definition 5. For each , define , and let . For and , let be the -th index where codewords and differ.
Define the zero’th codeword of as . Fix . If for some , we define by . On the other hand, if for some , then we define as
(3) |
Finally, define by along with the encoding map given by .
We will also define to be the vector of all indices in which and differ, in order, except for the last one.333The reason we don’t include the last one is because once the last differing bit has been flipped, will lie in , not .
It will frequently be useful to be able to locate within a block . To that end, we introduce the following notation.
Definition 7.
Let . Let be such that . Then we will use the notation to denote . That is, is the index of in the block .
Note that, in this notation, when , the last bit that has been flipped to arrive at in the ordering of (that is, the “crossover point” alluded to in the introduction) is We make a few useful observations about Definition 6. The first two follow immediately from the definition.
Observation 1.
is a Gray code. That is, For any , we have that .
Observation 2.
Suppose that has rate and distance . Then the code constructed as in Definition 6 has rate that approaches as .
Observation 3.
Let , and suppose that for some . Then
where is the unary code of length . Above, denotes the restriction of the vector to the indices that appear in the vector .
Proof.
By definition, contains the indices on which and differ, and also by definition, by the time we have reached , the first of these indices have been flipped from agreeing with to agreeing with . Thus, if we add and (mod 2), we will get on the first indices and on the on the rest. ∎
Before we move on, we show Definition 6 actually defines an injective map.
Lemma 2.
Let be a code with encoding map be as defined in Definition 6. Then is injective.
Proof.
Assume, for the sake of contradiction, that there are two distinct such that . Without loss of generality assume that . There are three scenarios possible.
-
1.
Case 1: Both and are in the interval . Then we claim that . The reason is that and ; but by definition of , . Thus, .
-
2.
Case 2: and . Then is an interpolation of and , and is an interpolation of and . Notice that and , as the last index of the codewords and has not been flipped yet. However, as and have different parity, , which implies .
-
3.
Case 3: and where . In this scenario, . Suppose that neither nor are in . Then and leading to hence . The same holds if neither are in , repeating the argument with . The final sub-case is that and or vice versa. If this occurs (suppose without loss of generality, it is the first one, not the “vice versa” case), then according to Lemma 4, , however for , . This implies that either or , which implies that , as desired.
∎
IV Decoding Algorithm and Analysis
In this section, we define our decoding algorithm and analyze it. We begin with some notation for the different parts of the codewords . For a string , we use to denote the substring . With this notation, for any , define the following substrings:
-
•
-
•
-
•
-
•
-
•
.
Notice that if , then and are in locations corresponding to the codewords of that appear in codewords of , while , and are in locations corresponding to the and strings.
Before we formally state the algorithm (Algorithm 2 below), we prove a few lemmas to motivate its structure.
Our first lemma formalizes the intuition in the introduction that at most one of the “chunks” in each codeword is broken up by the crossover point .
Lemma 3.
Fix . Suppose that is such that , so can be written as as above. Then at most one of the substrings in that is not equal to the corresponding substring in or .
Proof.
First, suppose that . Then in that case and all of the substrings in are equal to their corresponding substring. Otherwise, . In that case, . This means that (the “crossover point” for ) is defined, and indexes a position in , and in particular in one of the sub-strings in . Then other substrings strictly to the left of are equal to their corresponding substring in ; and the ones strictly to the right are equal to the corresponding substring in . ∎
Using the language of Lemma 3, we say that a substring in that is equal to its corresponding substring in is a full chunk. Thus, Lemma 3 implies that there are at least four full chunks in any . Notice that it is possible that a substring is in but is not a full chunk. We say that all full chunks are decoded correctly if, for full chunk of , when we run the corresponding decoder, we get the right answer. That is, if is a full chunk, then if we were to run on we would obtain , and similarly for ; and if is a full chunk, and we were to run on , we would obtain , and similarly for and .
Next, we show that if the “crossover point” does not point to one of chunks , or , then there are at least two of them that differ.
Lemma 4.
Let be a code defined as in Definition 6. Fix any and let be such that . Suppose that ; that is, indexes a position in for some . Then .
Proof.
Without loss of generality, suppose that . By definition, we have
In particular, since the “cut-off” points to a position within , we have that both and are full chunks, and further agrees with , while agrees with . Since and have different parities, either and , or the other way around; in either case, they are different. The same argument holds when .
∎
Finally, we break things up into three cases, which will be reflected in our algorithm. In each case, we can use the pattern of the chunks to get an estimate for or , and bound where the crossover point will be.
Lemma 5.
Let and let be such that . Let where . Let be a received input. Then define for and for . Assume that all full chunks are decoded correctly by their corresponding decoder. Then the following hold.
-
1.
If , then and .
-
2.
If , then and .
-
3.
If , then and . Moreover, if , then ; and otherwise they are equal to .
Proof.
We address each case individually.
-
1.
If then we claim that . Assume otherwise. If , then . This means that , and are full chunks. Given the assumption that all the full chunks are decoded correctly, but that contradicts our assumption for this case; so we conclude that . Thus, . But then then and are full chunks, and according to Lemma 4, . Again using the assumption of correct decoding of all full chunks, this implies that , which again contradicts our assumption for this case. This establishes the claim that .
Finally, the fact that implies that , and is a full chunk. Using the assumption of correct decoding of all full chunks, we get that
-
2.
If , then the conclusion follows by an argument nearly identical to case 1.
-
3.
If , then we claim that . Assume otherwise, then and and they are full chunks. Now as and do not have the same parity, . As a result, if all full chunks are decoded correctly, we have that , which contradicts our assumption in this case. This proves our claim that .
If then ; if then ; and in either case both are full chunks. Using the assumption that all full chunks are decoded correctly, we see that , as desired.
∎
IV-A Decoding Algorithm
Before we state our main algorithm (Algorithm 2 below), we include a helper algorithm, compute-r (Algorithm 1). This algorithm takes an index and returns . Note that this is not trivial to do efficiently: If we wanted to compute directly from the definition, that would require computing or storing for all and adding them up, which may take time . Instead, we do something much faster.
Lemma 6.
The Algorithm compute-r (Algorithm 1) correctly computes .
Proof.
Recall that . Consider a fixed difference . This is precisely
(4) |
where is the unique index so that : indeed, by Definition 4, , and from that (4) follows from the definition of (Definition 5). Thus, in order to compute
it suffices to count how often each index shows up as some in that sum. This is precisely by the definition of . ∎
Our final algorithm is given in Algorithm 2. It is organized into the three cases of Lemma 5. To help the reader, we have included comments saying what each estimate “should” be. Here, “should” is under the assumption that each full chunk is decoded correctly.
IV-B Analysis
Next, we analyze the correctness and running time of Algorithm 2. We begin with the running time.
Lemma 7.
Let be a constant rate code. Suppose that runs in time , and runs in time , and that . Let be the generator matrix of , with rows for . Suppose that can be computed in time . Then the running time is of is
and the running time of is
Remark 1 (Time to compute ).
We note that if is, say, a Reed-Muller code , then indeed, given , can be computed in time : if the binary expansion of has weight , then the corresponding row has weight . For codes that may not have closed-form expressions for their generator matrices, we can pre-compute each (in total time ) and store them to allow for lookup time.444 If a lookup table is not desirable and the cannot otherwise be computed on the fly, then our algorithm still works, and runs in time at most where we recall that and .
Proof of Lemma 7.
As we are assuming that , finding the also takes time and is negligible. Among the other steps, the only non-tivial ones are running the encoding and decoding maps for (each of which happens times); running compute-r (which takes time if can be computed in time ); and running and , which can be done in time . ∎
Next, we move on to the analysis of the correctness and failure probability of Algorithm 2. The final statement is Theorem 1 below, but we will need several lemmas first. We begin by showing that, if all full chunks are decoded correctly, then is equal to on the portion of indices where the crossover point is guaranteed not to be.
Lemma 8.
Proof.
First notice that the indices in are indices corresponding to a subset . As then all chunks in are full chunks. Given that full chunks are decoded correctly, then we know that for , and for we have that . As a result the decoder fixes the values of these indices and only estimates the values of the rest of the bits in lines 18, 29, 38, and 39. Thus, . ∎
Lemma 9.
For a let be such that and . Let be the noisy input for and be the estimate given by . Assuming that all full chunks are decoded correctly, then , Moreover, .
Proof.
We first claim that either Case 1 or Case 2 of Lemma 5 has occurred. Indeed, the fact that implies that and are both full chunks, and our assumption that each full chunk is correctly decoded implies that while . As and have different parities, , which implies that we are in Case 1 or Case 2 of Lemma 5.
Next, we establish that the estimate returned by the algorithm in Cases 1 or 2 satisfies . Suppose without loss of generality that we are in Case 1, so or (Case 2 is symmetric). We first go through Case 1 of Algorithm 2, which starts at Line 10. Since we are in Case 1 of Lemma 5, that lemma implies that and that . Thus, in the first case in Algorithm 2, under the assumption that all full chunks are correctly decoded, we have , , , , and . At the end of this case, the final estimate is set to be
By the above, we have , so by Lemma 6, . Note also that . Plugging in to our expression for and subtracting from both sides, we have
(5) |
Now, recall that in Algorithm 2, we have , where is the set of appearing in so that . It thus follows from the definition that
from the definition of . Plugging this into (5), we see that , which implies that , as desired.
Finally, we argue that . Indeed, we may write
By Observation 3, ; and by that observation along with the fact that , we also have Thus,
which finishes the proof of the lemma.
∎
Lemma 10.
For , let be such that . Further let be the noisy input and be the estimate obtained from . Assuming that all full chunks are decoded correctly, then either
-
1.
and ; or
-
2.
and and .
Proof.
Unlike in Lemma 9, it is now the case that any of the three cases in Lemma 5 could occur. We first consider Cases 1 and 2, so in line 7. The proof is quite similar to that of Lemma 9, so we just sketch it here. Suppose that we are in Case 1 of Lemma 5 (Case 2 is symmetric). In Case 1, we claim that . Indeed, since all full chunks are decoded correctly, as we argued in the proof of Lemma 9, the values are computed correctly, meaning that they match the values that the comments in Algorithm 2 say they should be. In particular, as before we have
This establishes that , which proves the claim; the rest of this case follows identically to the proof of Lemma 9.
Next we consider Case 3, so . In this case, Lemma 5 (and the assumption that all full chunks are correctly decoded) says that , which implies that the value of computed in line 37 is either or . Algorithm 2 then computes two estimates and , which are meant to be an estimate of in the two cases the and ; eventually it picks whichever produces a codeword closer to the received word .
There are two main sub-cases. In the first, the algorithm guesses correctly, meaning that either and ; or that and . In the other case, the algorithm guesses incorrectly, meaning that and , or and . We consider each of these in turn.
First suppose that the algorithm guesses correctly. This case is again quite similar to that of Lemma 9, and we sketch the proof. Suppose that and ; the other way of “guessing correctly” leads to a similar argument. Now, we claim that . To see this, notice that in this case, we have
in Line 41. Since , given our assumption that all full chunks are correctly decoded, it is not hard to see that . Lemma 6 then implies that , so
This shows that . Once we have this, the rest of the argument follows as in Lemma 9.
Now we move onto the second sub-case of Case 3, when the algorithm guesses incorrectly. Unlike the previous cases we have considered, this is different than Lemma 9, because may end up outside of . Without loss of generality, suppose that but that has been set to . (The other case is similar).
Claim 1.
In this sub-case, the following hold.
-
A.
-
B.
-
C.
Proof.
We begin with B. First, since , this implies that , so Lemma 5 (Case 3) implies that . Then since , we have
This proved B.
Next we prove C. This follows from the computation of in Algorithm 2, along with the assumption that all full chunks are decoded correctly. Indeed, we have
Since , we are in the case where , , , and the above implies that
The fact that proves inequality in part C. The equality in part C follows since by the definition of , we have
Finally, we move onto A. The fact that follows immediately from C. The fact that follows from the fact that, by a computation similar to that above, we have
which is less than as . ∎
Given the claim, we can finish the proof of the lemma in this sub-case. First, we observe that ; indeed this follows directly from B and C in the claim.
Finally, we show that . To see this, we first write
We claim that and differ on only the indices in . This follows from the fact that , which we saw in the proof of Claim 1 (part B). Next, we claim that and differ only on the indices in . Indeed, part C of Claim 1 implies that . Since (part A of Claim 1), this means that is in the last chunk (the chunk) of , which proves the claim. Thus, we have that
as the two parts differ on disjoint sets. Moreover, since , we have , since and differ on all of the first bits, so and differ on all of the first bits. Similarly, . Putting everything together, we conclude that
Since in this case (as , while , this proves the last component of the lemma.
∎
The following lemma is included in [1]. We include a short proof for completeness.
Lemma 11 ([1]).
Let be a linear code with message length and minimum distance . Further let and . Then
(6) |
Proof.
Let be the maximum likelihood decoder for . That is, given , . If there are multiple codewords that attain the minimum above, then chooses randomly among them. Then
Fix a message , and let . Let be such that , where Let be the set on which and disagree. Let be a noise vector, and define , the restriction of to the positions indexed by . Observe that as in the lemma statement. Suppose that . Then On the other hand, if , then with probability at least ,
Together, we conclude that
∎
Lemma 12.
Let be a vector in , for . Let be the repetition code of length , so that . Then for any ,
where we recall that denotes the majority function. Above, the randomness is over both the choice of and any randomness that uses to break ties.
Proof.
Fix . Suppose that . Then either , or else and the random choice of was incorrect, which happens with probability . Thus,
which by Lemma 11 is at most . ∎
Before we prove our main theorem establishing correctness of with high probability (Theorem 1), we need one more concentration bound. We use the following from [1].
Lemma 13 ([1]).
Let . Let for . Then
(7) |
Lemma 14.
Let , and let . Suppose that all full chunks are decoded correctly. Then
Proof.
By the analysis in the proof of Lemmas 9 and 10, if all full chunks are decoded correctly, then all the quantities computed in Algorithm 2 before (in Cases 1 and 2), or before (in Case 3) are what they “should” be. That is, in Cases 1 and 2, all of the quantities computed before Lines 18 and 29, respectively are what the comments claim they should be. In Case 3, all of the comments computed before Line 39) are what the comments claim they should be. Thus, any error in comes from the estimates of (in Cases 1 or 2) or and (in Case 3).
We first work out Case 1. First, we observe that it suffices to look only on the set defined as in Algorithm 2. That is, it suffices to show that
Indeed, and differ only on . Next, recall from Observation 3 that ; that is, restricted to the elements in , has ones followed by all zeros. Since in Case 1 (as shown in the proof of Lemma 9), is ones followed by zeros. Thus,
is a vector of ones followed by zeros, plus the noise from . Therefore,
is the decoding of . For notational convenience, in the following we will introduce the notation . With this notation (and the fact that returns the closest codeword in ), we conclude that
(8) |
We claim that in fact the first of the terms in (8) is equal to and the second is equal to , which will immediately prove the statement in Case 1. To see the first part of the claim, first notice that in Algorithm 2 (using the fact that all the estimates are what they “should” be, as above), we have , so Then
Above, we used the fact that on , and differ precisely on the indices between and . This proves the first part of the claim. For the next part, we have that
which is the right hand side of (8). This finishes proving the claim, and the lemma in this case.
Case 2 is similar to Case 1 and we omit the analysis. In Case 3, we have two candidates, and . By an analysis similar to the above, at least one of the following statements hold:
-
•
and or;
-
•
and
where in both cases has i.i.d. coordinates. Thus, if the first is the case, we have that
and in the second case we have (again with an analysis similar to that above) that
Thus, by the definition of in this case (Line 45), we have
as desired. ∎
Theorem 1.
Fix . Let be a linear code. Let be defined as in Definition 6 from . Let Then
(9) |
where is the block error probability of , and and are constants given by and .
Proof.
Let be the event that at least one of the full chunks in is decoded incorrectly. Let . Then
Let be such that . We will bound each of the two terms above individually.
We begin with . There are two scenarios, depending on whether is safely in the middle of the interval (that is, in the middle three chunks), or if it is near the edges (the outermost chunks). In either case, if all full chunks are decoded correctly, then . Indeed, in the first case this follows from Lemma 9, while in the second case it follows from Lemma 10. Thus, we see that in either case, the probability of returning a particular is
Above, the first line follows from Lemma 14. The second line follows from Lemma 13, while the last line follows from the fact that as noted above. Thus, for any integer that might be equal to , we have
where the factor of two comes from the fact that might be either or . Thus,
Now we turn our attention to the second term, , the probability that at least one of the full chunks is decoded incorrectly. The full chunks for are codewords in and are decoding using . Thus, the probability that either of these chunks (assuming they are full chunks) are decoded incorrectly is at most twice the failure probability is .
On the other hand, the full chunks for are repetition codes of length . Then Lemma 12 that the probability that any of these (assuming it is a full chunk) is at most , so the probability that any of these fail is at most . Altogether, the probability that at least one full chunk is decoded incorrectly is at most Summing both terms up we see that
which completes the proof of the theorem. ∎
Acknowledgment
MW and DF are partially supported by NSF Grants CCF-2231157 and CCF-2133154. The first author thanks Rasmus Pagh for bringing our attention to this problem.
References
- [1] D. R. Lolck and R. Pagh, “Shannon meets gray: Noise-robust, low-sensitivity codes with applications in differential privacy,” in Proceedings of the 2024 Annual ACM-SIAM Symposium on Discrete Algorithms (SODA). SIAM, 2024, pp. 1050–1066.
- [2] M. Aumüller, C. J. Lebeda, and R. Pagh, “Differentially private sparse vectors with low error, optimal space, and fast access,” in Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security, 2021, pp. 1223–1236.
- [3] J. Acharya, Y. Liu, and Z. Sun, “Discrete distribution estimation under user-level local differential privacy,” in International Conference on Artificial Intelligence and Statistics. PMLR, 2023, pp. 8561–8585.
- [4] J. Acharya, C. Canonne, Y. Liu, Z. Sun, and H. Tyagi, “Distributed estimation with multiple samples per user: Sharp rates and phase transition,” Advances in neural information processing systems, vol. 34, pp. 18 920–18 931, 2021.
- [5] L. Xiao, X.-G. Xia, and Y.-P. Wang, “Exact and robust reconstructions of integer vectors based on multidimensional chinese remainder theorem (md-crt),” IEEE Transactions on Signal Processing, vol. 68, pp. 5349–5364, 2020.
- [6] W. Wang and X.-G. Xia, “A closed-form robust chinese remainder theorem and its performance analysis,” IEEE Transactions on Signal Processing, vol. 58, no. 11, pp. 5655–5666, 2010.
- [7] G. Reeves and H. D. Pfister, “Reed–muller codes on bms channels achieve vanishing bit-error probability for all rates below capacity,” IEEE Transactions on Information Theory, 2023.
- [8] E. Arikan, “A performance comparison of polar codes and reed-muller codes,” IEEE Communications Letters, vol. 12, no. 6, pp. 447–449, 2008.
- [9] V. Guruswami and P. Xia, “Polar codes: Speed of polarization and polynomial gap to capacity,” IEEE Transactions on Information Theory, vol. 61, no. 1, pp. 3–16, 2014.
- [10] M. Mondelli, S. H. Hassani, and R. L. Urbanke, “Unified scaling of polar codes: Error exponent, scaling exponent, moderate deviations, and error floors,” IEEE Transactions on Information Theory, vol. 62, no. 12, pp. 6698–6712, 2016.
- [11] H.-P. Wang, T.-C. Lin, A. Vardy, and R. Gabrys, “Sub-4.7 scaling exponent of polar codes,” IEEE Transactions on Information Theory, 2023.
- [12] F. Gray, “Pulse code communication,” Mar. 17 1953, uS Patent 2,632,058.
- [13] D. E. Knuth, The art of computer programming, volume 4A: combinatorial algorithms, part 1. Pearson Education India, 2011.