← All blueprints

Essential Coding Theory — Blueprint

15 Efficiently Achieving the Capacity of the BSC_p

Recall (Theorem 144 and the exercise following it) that there exist linear codes of rate \(\)1-H(p)-ε\( such that maximum-likelihood decoding has error probability at most \)2^-δn\(, \)δ=Θ(ε^2)\(, on \)BSC_p\(. This left open whether the capacity of \)BSC_p\( can be achieved with \emph{efficient} encoding and decoding algorithms. In this chapter we answer this in the affirmative by using code concatenation (Definition~ \ref{def:c10-concatenation}): we pick an inner code that itself achieves the \)BSC_p\( capacity (small enough to construct by brute-force search) and an outer code that is efficiently list-... (unique-) decodable from a small constant fraction of \emph{worst-case} errors, and exploit the fact that the memoryless noise of \)BSC_p\(, combined with a concentration (Chernoff) argument, turns the outer code’s worst-case guarantee into an overall exponentially small failure probability. \)

15.1 Achieving Capacity of BSC_p

Construction 331 Target concatenated-code scheme, Section 15.1

Fix

\(\)0≤p <12\( and \)0<ε<1-H(p)\(. Let \)γ>0\( be a parameter, depending only on \)ε\(, to be fixed later. We seek a linear code \)C^*=C_out○C_in\( (Definition~ \ref{def:c10-concatenation}) where: \begin{enumerate} \item[(i)]\end{enumerate}\)C_out\( is a linear \)[N,K]_2^k\( code with rate \)R≥1-ε2\(, together with a unique-decoding algorithm \)D_out\( that corrects at most a \)γ\( fraction of \emph{worst-case} errors, in time \)T_out(N)\(. \item [(ii)] \)C_in\( is a linear binary \)[n,k]_2\( code with rate \)r≥1-H(p)-ε2\(, together with a decoding algorithm \)D_in\( (returning the transmitted codeword) running in time \)T_in(k)\( and with decoding error probability at most \)γ2\( over \)BSC_p\(. \)

For the rest of the chapter we treat \(\)p\( as an absolute constant, so that \)k=Θ(n)\(; we write \)N=nN\( for the block length of \)C^*\(. \)

Construction
#
Proposition 332 Rate of the concatenated scheme

If

\(\)C^*=C_out○C_in\( is as in Construction~ \ref{constr:c15-concatenated-scheme}, then \[ R(C^*) \; =\; R\cdot r \; \ge \; \Big(1-\frac{\varepsilon }{2}\Big)\Big(1-H(p)-\frac{\varepsilon }{2}\Big) \; \ge \; 1-H(p)-\varepsilon . \] \begin{proof} \uses{constr:c15-concatenated-scheme} By the parameters of concatenated codes (rate of \end{proof}\)C_out○C_in\( is the product of the rates of \)C_out\( and \)C_in\(), the displayed equality holds. For the inequality, expand \[ \Big(1-\frac{\varepsilon }{2}\Big)\Big(1-H(p)-\frac{\varepsilon }{2}\Big) = 1-H(p)-\varepsilon +\frac{\varepsilon }{2}H(p)+\frac{\varepsilon ^2}{4} \ge 1-H(p)-\varepsilon , \] since \)H(p)+≥0\(. \)

Proof
Proposition
#

We will use, for decoding, the natural decoder for concatenated codes.

Algorithm 333 Decoder for efficiently achieving BSC_p\( capacity, Algorithm 15.1.1\)

Input: received word \(\)y=(y_1,…,y_N)[2]^n^N\(.\\ \textbf{Output:} message \)m’[2]^k^K\(. \begin{enumerate} \item For each \end{enumerate}\)1≤i≤N\(, let \)y_i’[2^k]\( be the (unique) symbol such that \)C_in(y_i’)=D_in(y_i)\(, and set \)y’=(y_1’,…,y_N’)\(. \item Return \)m’←D_out(y’)\(. \)

Proposition 334 Construction, encoding and decoding time of C^*

Let \(\)C^*=C_out○C_in\( be as in Construction~ \ref{constr:c15-concatenated-scheme}. Then \)C^*\( can be encoded in time \[ O(N^2k^2)+O(Nkn)\le O(N^2n^2)=O(\mathcal{N}^2), \] and Algorithm~ \ref{alg:c15-decoder} decodes \)C^*\( in time \[ N\cdot T_{in}(k)+T_{out}(N)\ \le \ \mathrm{poly}(\mathcal N), \] provided \)T_out(N)=N^O(1)\( and \)T_in(k)=2^O(k)\(. \begin{proof} \uses{constr:c15-concatenated-scheme, alg:c15-decoder} Both \end{proof}\)C_out\( and \)C_in\( are linear, so encoding \)C^*\( amounts to multiplying the message by a generator matrix for \)C_out\( (a \)K×N\( matrix over \)F_2^k\(, i.e.\ \)O(N^2)\( operations over \)F_2^k\(, each implementable with \)O(k^2)\( operations over \)F_2\(, giving \)O(N^2k^2)\() followed by, for each of the \)N\( resulting symbols, an \)O(k)×O(n)\( matrix multiplication over \)F_2\( to apply \)C_in\( (giving \)O(Nkn)\( total). Since \)k≤n\(, both terms are at most \)O(N^2n^2)=O(N^2)\(. For decoding, Algorithm~ \ref{alg:c15-decoder} runs \)D_in\( on each of the \)N\( blocks of \)y\( (total time \)N·T_in(k)\() and then runs \)D_out\( once (time \)T_out(N)\(). If \)T_out(N)=N^O(1)\( and \)T_in(k)=2^O(k)\(, both terms are \)N^O(1)\(, so the total decoding time is \)poly(N)\(. \)

Proof

15.2 Decoding Error Probability

Proposition 335 Decoding error probability of C^*\(, Section 15.2\)

Let \(\)C^*=C_out○C_in\( be as in Construction~ \ref{constr:c15-concatenated-scheme}, and let \)y\( be the result of transmitting a codeword of \)C^*\( over \)BSC_p\( (applied independently to each of the \)N\( inner blocks). Then Algorithm~ \ref{alg:c15-decoder} fails to recover the transmitted message with probability at most \)e^-γN/6=2^-Ω(γN/n)\(. \begin{proof} \uses{constr:c15-concatenated-scheme, alg:c15-decoder, def:c06-bsc} Fix \end{proof}\)i[N]\(. Since \)C_in\( is transmitted independently over \)BSC_p\( for each block (Definition~ \ref{def:c06-bsc}), and by the guarantee on \)D_in\( in Construction~ \ref{constr:c15-concatenated-scheme}(ii), the event \)E_i\( that \)y_i’≠C_out(m)_i\( (i.e.\ that the \)i\(-th inner decoding is wrong) has \)[E_i]≤γ/2\(; moreover the events \)E_1,…,E_N\( are mutually independent, since the \)BSC_p\( noise affecting distinct blocks is independent. Let \)X=∑_i=1^N 1[E_i]\( be the number of erroneous inner decodings; by linearity of expectation, \)E[X]≤γN/2\(. By the multiplicative Chernoff bound applied to \)X\(, a sum of \)N\( independent \){0,1}\(-valued random variables, \[ \Pr [X{\gt}\gamma N] \; =\; \Pr \big[X {\gt} 2\cdot \mathbb E[X]\big]\ \le \ \Pr \big[X{\gt}(1+1)\mathbb E[X]\big] \; \le \; e^{-\mathbb E[X]/3}\ \le \ e^{-\gamma N/6}. \] Since \)C_out\('s decoder \)D_out\( is only guaranteed to correct up to \)γ\( fraction of worst-case errors (Construction~ \ref{constr:c15-concatenated-scheme}(i)), Algorithm~ \ref{alg:c15-decoder} can only fail to recover \)m\( if \)X>γN\(, i.e.\ if the intermediate word \)y’\( has more than \)γN\( errors with respect to \)C_out(m)\(. Hence the overall decoding error probability is at most \)e^-γN/6\(, which, since \)γ\( and \)p\( are constants and \)k=Θ(n)\(, is \)2^-Ω(γN/n)\(. \)

Proof

15.3 The Inner Code

Lemma 336 Existence of a good inner code

Fix

\(\)0≤p<12\( and \)0<ε<1-H(p)\(. For every large enough \)k\(, there exists a linear binary code of dimension \)k\( and rate at least \)1-H(p)-ε/2\( whose maximum-likelihood decoder has decoding error probability at most \)2^-Θ(ε^2 k)\( over \)BSC_p\(. Consequently, if \)k≥Ω\( for a parameter \)γ>0\(, there exists such a code with decoding error probability at most \)γ/2\(. \)

Lemma
#
Construction 337 The inner code C_in\(, Section 15.3\)

We find \(\)C_in\( satisfying Construction~ \ref{constr:c15-concatenated-scheme}(ii) by an exhaustive search, among all linear codes of dimension \)k\( and block length \)n\(, for one achieving the guarantee of Lemma~ \ref{lem:c15-inner-code-existence} with maximum-likelihood decoding as \)D_in\(. By Lemma~ \ref{lem:c15-inner-code-existence}, such a search succeeds as long as \[ \Omega \left(\frac{\log (1/\gamma )}{\varepsilon ^2}\right)\ \le \ k\ \le \ O(\log N), \] where the upper bound on \)k\( comes from the requirement (from Construction~ \ref{constr:c15-concatenated-scheme}(i)) that \)C_out\( have dimension \)K=Θ(N)\( over an alphabet of size \)2^k\( hence \)k=O(N)\( once we also fix \)k=Ω((1/γ)/ε^2)\(. \)

Proposition 338 Complexity of D_in\( and of constructing \)C_in

For \(\)C_in\( as in Construction~ \ref{constr:c15-inner-code}, the decoding algorithm \)D_in\( (maximum-likelihood decoding) runs in time \)T_in(k)=2^O(k)\(, and \)C_in\( can be constructed in time \)2^O(n^2)\(. \begin{proof} \uses{constr:c15-inner-code} The only known implementation of maximum-likelihood decoding for a general linear code enumerates all \end{proof}\)2^k\( codewords, taking time \)2^O(k)\(; this is \)T_in(k)\(. For the construction time: there are \)2^O(kn)\( candidate generator matrices to search over. For each candidate code, we must compute its decoding error probability, which requires checking, for each of the \)2^k\( possible transmitted codewords, whether maximum-likelihood decoding errs on each of the \)2^n\( possible received words (this takes time \)2^O(k)\( per received word by the previous paragraph, together with a polynomial-time computation of the probability with which that received word occurs given the transmitted codeword), and averaging; since \)k≤n\(, this is \)2^n+O(k)=2^O(n)\( time per codeword, hence \)2^k·2^O(n)=2^O(n)\( time per candidate code. Multiplying by the \)2^O(kn)=2^O(n^2)\( (using \)k=Θ(n)\() candidate generator matrices, the total construction time is \)2^O(n^2)·2^O(n)= 2^O(n^2)\(. \)

Proof

15.4 The Outer Code

We need an outer code \(\)C_out\( satisfying Construction~ \ref{constr:c15-concatenated-scheme}(i). Taking \)C_out\( to be a Reed--Solomon code over \)F_2^k\( decoded via error decoding gives a valid \)D_out\( running in time \)T_out(N)=O(N^3)\(; however, by Proposition~ \ref{prop:c15-inner-code-complexity}, the resulting construction time for \)C_in\( is \)2^O(n^2)\(, and since \)n=Θ(k)=Θ(N)\( this is \)2^O(^2 N)≤N^O(N)\(, which is not polynomial in \)N\(. We therefore instead take \)C_out\( to be defined over a smaller alphabet (no larger than \)2^O(N)\(), as follows. \)

15.4.1 Using a binary code as the outer code

Lemma 339 Folding a binary code correcting bit errors into a F_2^k\(-ary code, Section 15.4.1\)

Let \(\)C’⊆F_2^N’\( be a binary linear code with \)k∣N’\(, and suppose \)D’\( is a decoding algorithm for \)C’\( that, given any word within relative Hamming distance \)ρ\( of a codeword of \)C’\(, returns that codeword. Fix an \)F_2\(-linear bijection \)ϕ:F_2^kF_2^k\(, and let \)C_out⊆F_2^k^N\(, \)N=N’/k\(, be the code obtained from \)C’\( by grouping each consecutive block of \)k\( bits into a single symbol of \)F_2^k\( via \)ϕ\( (``folding''); \)C_out\( has the same rate as \)C’\(. Then there is a decoding algorithm \)D_out\( for \)C_out\(, running in the time of \)D’\( plus \)O(N)\(, such that, given any word within relative Hamming distance \)ρ\( (over \)F_2^k\() of a codeword of \)C_out\(, \)D_out\( returns that codeword. \begin{proof} \uses{def:c10-concatenation, def:c02-linear-code} Let \end{proof}\)yF_2^k^N\( be within relative Hamming distance \)ρ\( of some codeword \)cC_out\(, i.e.\ \)y\( and \)c\( disagree on at most \)ρN\( of their \)N\( symbols. Let \)D_out\( act by first ``unfolding'' \)y\( into \)y’F_2^N’\( (applying \)ϕ^-1\( to each symbol and concatenating the resulting \)k\(-bit strings), running \)D’\( on \)y’\( to obtain \)c’C’\(, and then folding \)c’\( back into a codeword of \)C_out\(. Let \)c’C’\( be the unfolding of \)c\(. Every symbol on which \)y\( and \)c\( agree unfolds to \)k\( bits on which the unfoldings \)y’\( and \)c’\( agree; hence each of the (at most \)ρN\() symbols on which \)y,c\( disagree contributes at most \)k\( of the bit-level disagreements between \)y’\( and \)c’\(, and every bit-level disagreement arises this way. Thus \[ \Delta (\mathbf y',\mathbf c')\ \le \ k\cdot \rho N\ =\ \rho N', \] i.e.\ \)y’\( is within relative Hamming distance \)ρ\( of \)c’C’\(. By the guarantee on \)D’\(, \)D’(y’)=c’\(, so \)D_out(y)\(, obtained by folding \)c’\(, equals \)c\(, as desired. The running time is that of \)D’\( plus the \)O(N)\( (equivalently \)O(N’)\() time to fold and unfold. \)

Proof
Construction 340 The outer code C_out\( via folding, Section 15.4.1\)

Let \(\)C’\( be an explicit binary linear code on the Zyablov bound (Theorem~ \ref{thm:c10-zyablov}) with outer rate \)R_1\( and inner rate \)r_1\( (in the sense of the Zyablov-bound concatenation), so that its design distance is \)δ’=(1-R_1)H^-1(1-r_1)\(, together with the GMD decoding algorithm, which corrects up to \)δ’/2\( fraction of worst-case errors in polynomial time. Set \[ k=\Theta \left(\frac{\log (1/\gamma )}{\varepsilon ^2}\right) \] (matching the requirement of Construction~ \ref{constr:c15-inner-code}), choose \)C’\( of block length \)N’=kN\(, and let \)C_out⊆F_2^k^N\( be the folding of \)C’\( given by Lemma~ \ref{lem:c15-folding}, with \)D_out\( the corresponding folded GMD decoder. We choose the parameters \)R_1,r_1\( of \)C’\( as follows: set \)1-R_1=2γ\( (so \)R_1=1-2γ\() and \)H^-1(1-r_1)= γ\(; then \)δ’=(1-R_1)H^-1(1-r_1)=2γ\(, so by Lemma~ \ref{lem:c15-folding}, \)D_out\( corrects \)δ’/2=γ\( fraction of worst-case errors over \)F_2^k\(, matching Construction~ \ref{constr:c15-concatenated-scheme}(i). \)

Proposition 341 Rate of C_out\(, Section 15.4.1\)

With \(\)γ=ε^3\(, the code \)C_out\( of Construction~ \ref{constr:c15-outer-code} has rate \[ R = R_1 r_1 = 1-O\Big(\sqrt\gamma \log \frac1\gamma \Big)\ \ge \ 1-\frac{\varepsilon }{2}, \] matching Construction~ \ref{constr:c15-concatenated-scheme}(i). \begin{proof} \uses{constr:c15-outer-code, def:c03-q-ary-entropy} Since \end{proof}\)H^-1(1-r_1)=γ\( and \)H\( is the (compositional) inverse of \)H^-1\( on the relevant range, \[ 1-r_1 = H(\sqrt\gamma ) = \sqrt\gamma \log _2\frac1{\sqrt\gamma } +(1-\sqrt\gamma )\log _2\frac1{1-\sqrt\gamma }. \] As \)γ0\(, \)_2=Θ(γ)\(, so \)(1-γ)_2=Θ(γ)\(, and \)γ_2=12γ_2\(. Hence \)1-r_1=O(γ(1/γ))\(, i.e. \)r_1=1-O(γ(1/γ))\(. Since \)R_1=1-2γ\( is also \)1-O(γ(1/γ))\(, \[ R=R_1r_1=\Big(1-O\big(\sqrt\gamma \log \tfrac 1\gamma \big)\Big)^2 =1-O\Big(\sqrt\gamma \log \frac1\gamma \Big). \] It remains to check \)O(γ(1/γ))≤ε/2\( when \)γ=ε^3\(: then \)γ=ε^3/2\( and \)(1/γ)=3(1/ε)\(, so \)γ(1/γ)=3ε^3/2(1/ε) =ε·3ε(1/ε)=o(ε)\( as \)ε0\( (since \)ε(1/ε)0\(), so this holds for small enough \)ε\(, and the hidden constant may be absorbed for all \)ε\( in range by adjusting the implicit constant in \)γ=Θ(ε^3)\(. \)

Proof

15.4.2 Wrapping Up

Theorem 342 Efficiently achieving the capacity of BSC_p\(, Theorem 15.4.1\)

For every constant \(\)p\( and \)0<ε<1-H(p)\(, there exists a linear code \)C^*\( of block length \)N\( and rate at least \)1-H(p)- ε\(, such that \begin{enumerate} \item[(a)]\end{enumerate}\)C^*\( can be constructed in time \)poly(N)+ 2^O(ε^-5)\(; \item [(b)] \)C^*\( can be encoded in time \)O(N^2)\(; and \item [(c)] there exists a \)poly(N)+N·2^O(ε^-5)\( time decoding algorithm that has an error probability of at most \)2^-Ω(ε^6N)\( over the \)BSC_p\(. \)

Proof

Set

\(\)γ=ε^3\(, let \)C_in\( be as in Construction~ \ref{constr:c15-inner-code} and \)C_out\( as in Construction~ \ref{constr:c15-outer-code}, and let \)C^*=C_out○C_in\(. By Proposition~ \ref{prop:c15-rate-of-concatenation} and Proposition~ \ref{prop:c15-outer-code-rate} (which shows \)R≥1-ε/2\() together with Construction~ \ref{constr:c15-inner-code} (which shows \)r≥1-H(p)-ε/2\(), \)C^*\( has rate at least \)1-H(p)-ε\(. \emph{(a) Construction time.} With \)γ=ε^3\(, the parameter \)k\( of Construction~ \ref{constr:c15-inner-code} is \)k=Θ(1/γ)/ε^2=Θ(1/ ε)/ε^2\(, and since \)p\( is constant, \)n= Θ(k)\(. By Proposition~ \ref{prop:c15-inner-code-complexity}, \)C_in\( can be constructed in time \)2^O(n^2)=2^Oε^-4 ^2(1/ε)\(. Since for any constant \)a>0\(, \)ε^-a^O(1)(1/ε)=O(ε^-a-1)\( (applying this with \)a=4\(), this construction time is \)2^O(ε^-5)\(. The outer code \)C_out\( (Construction~ \ref{constr:c15-outer-code}) is constructed in time \)poly(N)=poly(N)\(, via Theorem~ \ref{thm:c10-zyablov} and Lemma~ \ref{lem:c15-folding}. Hence the overall construction time for \)C^*\( is \)poly(N)+ 2^O(ε^-5)\(. \emph{(b) Encoding time.} By Proposition~ \ref{prop:c15-encoding-decoding-time}, encoding \)C^*\( takes time \)O(N^2)\(. \emph{(c) Decoding time and error probability.} By Proposition~ \ref{prop:c15-inner-code-complexity}, \)T_in(k)=2^O(k)\(; since \)k≤n\(, \)2^O(k)≤2^O(n^2)=2^O(ε^-5)\( as computed above. By Proposition~ \ref{prop:c15-encoding-decoding-time} (using \)T_out(N)=poly(N)\(, which holds for the GMD-based \)D_out\( of Construction~ \ref{constr:c15-outer-code}), the decoding time is \)poly(N)+N·2^O(k)≤poly (N)+N·2^O(ε^-5)\(. For the error probability, by Proposition~ \ref{prop:c15-decoding-error-probability}, decoding fails with probability at most \)2^-Ω(γN/n)\(. Since \)γ= ε^3\( and \)n=Θε^-2(1/ε) \(, this exponent is \[ \Omega \left(\frac{\gamma N}{n}\right) = \Omega \left(\frac{\varepsilon ^3}{\varepsilon ^{-2}\log (1/\varepsilon )} \cdot \frac{N n}{n}\right) =\Omega \left(\frac{\varepsilon ^5}{\log (1/\varepsilon )}\cdot N\right) =\Omega \left(\frac{\varepsilon ^5}{\log (1/\varepsilon )}\cdot \frac{\mathcal N}{n}\right), \] and since \)ε^5/(1/ε)≥ε^6\( for all small enough \)ε\( (as \)ε(1/ε)0\(), and \)n=O(ε^-2(1/ε))=O(ε^-δ)\( for any \)δ>0\( can be absorbed into the \)Ω(·)\(, this gives a decoding error probability of at most \)2^-Ω(ε^6 N)\(. \)

Proof

15.5 Discussion

Theorem 342 resolves, in the affirmative, the question of whether the capacity of \(\)BSC_p\( can be achieved with efficient encoding and decoding algorithms However, the exponential dependence on \)1/ε\( in the decoding time complexity (part (c) of Theorem~ \ref{thm:c15-main}) is unsatisfying, raising the question of whether it can be brought down to \)poly(1/ ε)\(. We record an improvement to the outer-code component of the construction, due to Spielman, using \emph{expander codes}. \begin{thmenv}[Spielman's linear-time outer code, Theorem 15.5.1] \label{thm:c15-spielman-expander} \notready \uses{def:c11-expander-code} For every small enough \end{thmenv} \)β>0\(, there exists an explicit code \)C_out\( of rate \)\( and block length \)N\(, which can correct \)Ωβ^2()^2\( fraction of worst-case errors, and has \)O(N)\(-time encoding and decoding. \)

Theorem
#
Corollary 344 Linear-time outer code improves the construction

Using the code

\(\)C_out\( of Theorem~ \ref{thm:c15-spielman-expander} in place of the code of Construction~ \ref{constr:c15-outer-code}, with \)β=Θ(ε)\( and correspondingly \[ \gamma =\Theta \left(\frac{\varepsilon ^2}{\log ^2(1/\varepsilon )}\right), \] yields, by the same argument as in the proof of Theorem~ \ref{thm:c15-main}, a linear code \)C^*=C_out○C_in\( of rate at least \)1-H(p)-ε\( and block length \)N\(, with encoding and decoding time \)N·2^poly(1/ ε)\( and decoding error probability \)2^-Ω(γN/n)\( over \)BSC_p\(; moreover the outer-code component of the construction now has (strongly explicit) \)O(N)\(-time construction, encoding and decoding, in place of the \)poly(N)\(-, resp.\ \)O(N^3)\(-, time bounds used previously. This does not, however, remove the \)2^poly(1/ε)\(-time dependence coming from the brute-force construction and decoding of the inner code (Construction~ \ref{constr:c15-inner-code}, Proposition~ \ref{prop:c15-inner-code-complexity}), and so does not answer the question of decoding time \)poly(N,1/ε)\(. \begin{proof} \uses{thm:c15-spielman-expander, constr:c15-concatenated-scheme, constr:c15-inner-code, prop:c15-inner-code-complexity, prop:c15-decoding-error-probability, thm:c15-main} We need \end{proof}\)C_out\( to have rate \)≥1-ε/2\( (Construction~ \ref{constr:c15-concatenated-scheme}(i)); setting \)=1-ε/2\( gives \)β=Θ(ε)\(. By Theorem~ \ref{thm:c15-spielman-expander}, this \)C_out\( can then correct a \)γ=Ωβ^2/^2(1/β)= Ωε^2/^2(1/ε)\( fraction of worst-case errors in \)O(N)\( time, matching Construction~ \ref{constr:c15-concatenated-scheme}(i) with this choice of \)γ\(, and giving \)T_out(N)=O(N)\( in place of the \)poly(N)\(, resp.\ \)O(N^3)\(, bound of Construction~ \ref{constr:c15-outer-code}. Since \)(1/γ)= Θ((1/ε))\( (as \)γ=Θ(ε^2/ ^2(1/ε))\(), the required dimension \)k=Θ((1/ γ)/ε^2)=Θ((1/ε)/ε^2)\( for the inner code \)C_in\( (Construction~ \ref{constr:c15-inner-code}) is of the same asymptotic order as in the proof of Theorem~ \ref{thm:c15-main}, so by Proposition~ \ref{prop:c15-inner-code-complexity}, \)C_in\( still has construction and decoding time \)2^O(n^2)=2^poly(1/ ε)\(. Combining this \)T_in(k)=2^poly(1/ ε)\( with \)T_out(N)=O(N)\(, the overall decoding time \)N·T_in(k)+T_out(N)\( is \)N·2^poly(1/ ε)\(; the error probability \)2^-Ω(γN/n)\( follows exactly as in Proposition~ \ref{prop:c15-decoding-error-probability}. Since the exponential-in-\)1/ε\( term \)2^poly(1/ε)\( persists (it comes entirely from brute-force search for \)C_in\(, unaffected by the choice of \)C_out\(), this improvement to the outer-code time complexity does not yield \)poly(1/ ε)\( decoding time. \)

Proof
Corollary
#