Define the codewords of the Tensor Reed-Muller code $\mathsf{TRM}(r_1,m_1;r_2,m_2;\dots;r_t,m_t)$ to be the evaluation vectors of all multivariate polynomials in the variables $\left\{x_{ij}\right\}_{i=1,\dots,t}^{j=1,\dots m_i}$ with degree at most $r_i$ in the variables $x_{i1},x_{i2},\dots,x_{im_i}$. The generator matrix of $\mathsf{TRM}(r_1,m_1;\dots;r_t,m_t)$ is thus the tensor product of the generator matrices of the Reed-Muller codes $\mathsf{RM}(r_1,m_1),\dots, \mathsf{RM}(r_t,m_t)$. We show that for any constant rate $R$ below capacity, one can construct a Tensor Reed-Muller code $\mathsf{TRM}(r_1,m_1;\dotsc;r_t,m_t)$ of rate $R$ that is decodable in quasilinear time. For any blocklength $n$, we provide two constructions of such codes: 1) Our first construction (with $t=3$) has error probability $n^{-ω(\log n)}$ and decoding time $O(n\log\log n)$. 2) Our second construction, for any $t\geq 4$, has error probability $2^{-n^{\frac{1}{2}-\frac{1}{2(t-2)}-o(1)}}$ and decoding time $O(n\log n)$. One of our main tools is a polynomial-time algorithm for decoding an arbitrary tensor code $C=C_1\otimes\dotsc\otimes C_t$ from $\frac{d_{\min}(C)}{2\max\{d_{\min}(C_1),\dotsc,d_{\min}(C_t) \}}-1$ adversarial errors. Crucially, this algorithm does not require the codes $C_1,\dotsc,C_t$ to themselves be decodable in polynomial time.
翻译:将张量里德-穆勒码 $\mathsf{TRM}(r_1,m_1;r_2,m_2;\dots;r_t,m_t)$ 的码字定义为变量集 $\left\{x_{ij}\right\}_{i=1,\dots,t}^{j=1,\dots m_i}$ 上所有多元多项式的取值向量,其中变量 $x_{i1},x_{i2},\dots,x_{im_i}$ 的次数不超过 $r_i$。因此,$\mathsf{TRM}(r_1,m_1;\dots;r_t,m_t)$ 的生成矩阵是里德-穆勒码 $\mathsf{RM}(r_1,m_1),\dots, \mathsf{RM}(r_t,m_t)$ 的生成矩阵的张量积。我们证明,对于容量以下的任意恒定码率 $R$,可以构造一个码率为 $R$ 的张量里德-穆勒码 $\mathsf{TRM}(r_1,m_1;\dotsc;r_t,m_t)$,该码可在拟线性时间内译码。对于任意码长 $n$,我们提供两种此类码的构造:1)我们的第一种构造($t=3$)具有 $n^{-ω(\log n)}$ 的错误概率和 $O(n\log\log n)$ 的译码时间。2)我们的第二种构造(对任意 $t\geq 4$)具有 $2^{-n^{\frac{1}{2}-\frac{1}{2(t-2)}-o(1)}}$ 的错误概率和 $O(n\log n)$ 的译码时间。我们的主要工具之一是一种多项式时间算法,用于从 $\frac{d_{\min}(C)}{2\max\{d_{\min}(C_1),\dotsc,d_{\min}(C_t) \}}-1$ 个对抗性错误中译码任意张量码 $C=C_1\otimes\dotsc\otimes C_t$。关键在于,该算法不要求码 $C_1,\dotsc,C_t$ 本身能在多项式时间内译码。