基于导数码的最优速率列表译码
在信息传输过程中,数据可能会受到各种干扰而出现错误,因此纠错码技术至关重要。导数码作为一种特殊的纠错码,在列表译码方面有着独特的优势。本文将详细介绍导数码的相关概念、列表译码方法以及应对大列表大小问题的策略。
导数码的定义
设 $F_q$ 表示含有 $q$ 个元素的有限域。对于多项式 $f \in F_q[X]$,其形式导数 $f’$ 定义为:若 $f(X) = f_0 + f_1X + \cdots + f_{\ell}X^{\ell}$,则 $f’(X) = \sum_{i = 1}^{\ell} if_iX^{i - 1}$,$f^{(i)}$ 表示 $f$ 的 $i$ 阶形式导数。
定义
:$m$ 阶导数码 $Der_q^{(m)}[n, k]$ 定义如下:设 $0 \leq m \in \mathbb{Z}$,$a_1, \cdots, a_n \in F_q$ 互不相同,且参数满足 $m \leq k < nm \leq q$,进一步假设 $char(F_q) > k$。该码将次数小于 $k$ 的多项式 $f \in F_q[X]$ 编码为:
[
f \mapsto
\begin{pmatrix}
\begin{bmatrix}
f(a_1) \
f’(a_1) \
\vdots \
f^{(m - 1)}(a_1)
\end{bmatrix},
\begin{bmatrix}
f(a_2) \
f’(a_2) \
\vdots \
f^{(m - 1)}(a_2)
\end{bmatrix},
\cdots,
\begin{bmatrix}
f(a_n) \
f’(a_n) \
\vdots \
f^{(m - 1)}(a_n)
\end{bmatrix}
\end{pmatrix}
]
当 $m = 1$ 时,该码为 Reed - Solomon 码。此码的块长为 $n$,码率 $R = \frac{k}{nm}$,最小距离为 $n - \lfloor \frac{k - 1}{m} \rfloor \approx (1 - R)n$。
列表译码导数码
假设接收到导数码 $Der_q^{(m)}[n, k]$ 的一个码字的受损版本 $y \in (F_q^m)^n$,可将其视为一个 $m \times n$ 的矩阵:
[
\begin{pmatrix}
y_{11} & y_{12} & \cdots & y_{1n} \
y_{21} & y_{22} & \cdots & y_{2n} \
\vdots & \vdots & \ddots & \vdots \
y_{m1} & y_{m2} & \cdots & y_{mn}
\end{pmatrix}
]
译码的目标是找到所有次数小于 $k$ 的多项式 $f$,使得其编码与 $y$ 在至少 $t$ 列上一致,这相当于从 $n - t$ 个符号错误中对导数码进行译码。当 $t > \frac{n + k/m}{2}$ 时,若多项式 $f$ 存在,则是唯一的,此时可通过改编 Reed - Solomon 码的 Welch - Berlekamp 算法进行高效译码。
译码算法主要分为两个步骤:
1.
插值
:找到一个满足特定代数条件的多项式 $Q$,所有候选多项式 $f$ 都需满足该条件。
2.
检索候选多项式
:从插值步骤得到的代数条件中检索出所有候选解 $f$。
以下是译码过程的 mermaid 流程图:
graph LR
A[接收受损码字 y] --> B[插值]
B --> C[检索候选多项式]
C --> D[输出所有满足条件的多项式 f]
插值步骤
设 $W$ 是 $F_q[X, Y_1, \cdots, Y_m]$ 的 $F_q$ 线性子空间,其中的多项式在 $Y_i$ 上的总次数至多为 1,即 $W$ 包含形如 $B_0(X) + B_1(X)Y_1 + B_2(X)Y_2 + \cdots + B_m(X)Y_m$ 的多项式。
定义 $F_q$ 线性映射 $D$ 如下:对于 $p \in F_q[X]$ 和 $1 \leq i \leq m$,
[
D(p)(X, Y_1, \cdots, Y_m) = p’(X)
]
[
D(pY_i)(X, Y_1, \cdots, Y_m) = p’(X)Y_i + p(X)Y_{i + 1} \quad (Y_{m + 1} = Y_1)
]
设 $1 \leq s \leq m$ 为译码算法中的整数参数。插值步骤的目标是找到一个非零多项式 $Q \in F_q[X, Y_1, Y_2, \cdots, Y_s]$,形式为 $A_0(X) + A_1(X)Y_1 + A_2(X)Y_2 + \cdots + A_s(X)Y_s$,并满足以下条件:对于每个 $1 \leq i \leq n$,
[
Q(a_i, y_{1i}, \cdots, y_{si}) = 0 \quad \text{且} \quad (D^kQ)(a_i, y_{1i}, \cdots, y_{mi}) = 0 \quad (k = 1, \cdots, m - s)
]
其中 $D^k$ 表示 $D$ 的 $k$ 次复合。
对于每个 $i$,上述条件是关于多项式 $Q$ 系数的 $(m - s + 1)$ 个齐次线性约束。
设
[
d = \left\lfloor \frac{n(m - s + 1) - k + 1}{s + 1} \right\rfloor
]
则存在一个非零多项式 $Q$ 满足上述条件,且 $\deg(A_0) \leq d + k - 1$,$\deg(A_j) \leq d$($1 \leq j \leq s$),可以在 $O((nm)^3)$ 次 $F_q$ 域运算内找到该多项式。
检索候选多项式步骤
若多项式 $Q(X, Y_1, \cdots, Y_s)$ 满足插值条件,对于次数至多为 $k - 1$ 的多项式 $f$,若其编码与接收字 $y$ 在至少 $t$ 列上一致,且 $t > \frac{d + k - 1}{m - s + 1}$,则有
[
Q(X, f(X), f’(X), \cdots, f^{(s - 1)}(X)) = 0
]
即找到所有次数小于 $k$ 的多项式 $f$,使得
[
A_0(X) + A_1(X)f(X) + A_2(X)f’(X) + \cdots + A_s(X)f^{(s - 1)}(X) = 0
]
这给出了一个关于 $f = f_0 + f_1X + \cdots + f_{k - 1}X^{k - 1}$ 系数的线性系统,解空间是一个仿射空间,可通过求解该线性系统得到。
为了求解该线性系统,有以下结论:
- 若 $A_s(X) \not\equiv 0$,由于 $\deg(A_s) \leq d < nm \leq q$,存在 $\alpha \in F_q$ 使得 $A_s(\alpha) \neq 0$,可考虑问题的平移变换,将问题转化为 $A_s(X + \alpha)$ 常数项非零的情况。
- 若 $A_s(X) = 0$,则将问题简化为使用 $s$ 个而非 $s + 1$ 个插值变量的问题。
若 $A_s$ 的常数项 $a_{s0} \neq 0$,则上述线性系统的解空间维度至多为 $s - 1$。
综合上述结果,对于导数码 $Der_q^{(m)}[n, k]$($char(F_q) > k$),对于每个接收字 $y \in F_q^{nm}$,可以在多项式时间内找到一个维度至多为 $s - 1$ 的仿射子空间 $S \subseteq F_q[X]$,使得所有次数小于 $k$ 且其导数编码与 $y$ 在至多 $\frac{s}{s + 1}(n - \frac{k}{m - s + 1})$ 个位置不同的多项式 $f$ 都属于 $S$。
通过设置 $s \approx \frac{1}{\varepsilon}$ 和 $m \approx \frac{1}{\varepsilon^2}$,可以得到:对于所有 $R \in (0, 1)$ 和 $\varepsilon > 0$,通过适当选择参数,存在码率至少为 $R$ 的导数码 $Der_q^{(m)}[n, k]$,可以从 $1 - R - \varepsilon$ 比例的错误中进行列表译码,列表大小为 $q^{O(1/\varepsilon)}$。
以下是译码过程的步骤总结:
1.
接收受损码字
:将接收到的受损码字表示为 $m \times n$ 矩阵 $y$。
2.
执行插值步骤
:
- 计算 $d = \left\lfloor \frac{n(m - s + 1) - k + 1}{s + 1} \right\rfloor$。
- 找到满足插值条件的非零多项式 $Q$。
3.
检索候选多项式
:
- 若 $A_s(X) \not\equiv 0$,找到 $\alpha$ 使 $A_s(\alpha) \neq 0$ 并进行平移变换。
- 若 $A_s(X) = 0$,简化问题。
- 求解线性系统得到解空间,其维度至多为 $s - 1$。
4.
输出结果
:输出所有满足条件的多项式 $f$。
通过以上步骤,可以对导数码进行有效的列表译码。在实际应用中,还需要考虑如何应对译码过程中可能出现的大列表大小问题,这将在下半部分进行详细讨论。
基于导数码的最优速率列表译码
应对大列表大小问题
在译码算法中,可能会出现列表大小过大的问题,这会增加译码的复杂度和计算量。下面介绍两种应对大列表大小问题的策略。
减少列表大小
为了避免接近 $f$ 的码字数量出现约为 $q^s$ 的大列表大小界限,可以从所谓的子空间规避子集 $F_q^k$ 中选取码字,而不是从整个 $F_q^k$ 中选取。这种方法在折叠 Reed - Solomon 码的列表译码中被使用,在导数码的列表译码中也能获得类似的好处。
如果一个 $F_q^k$ 的子集与每个维度至多为 $s$ 的线性子空间 $S \subseteq F_q^k$ 的交集至多有 $L$ 个点,则称该子集为 $(s, L)$ - 子空间规避子集。
对于任意 $\varepsilon > 0$,通过概率论证可知,存在大小为 $q^{(1 - \varepsilon)k}$ 的 $(s, O(s/\varepsilon))$ - 子空间规避子集 $F_q^k$。
具体操作步骤如下:
1. 选择合适的参数 $s$ 和 $\varepsilon$。
2. 生成 $(s, O(s/\varepsilon))$ - 子空间规避子集 $V$ 。
3. 从 $V$ 中选取消息,而不是从整个 $F_q^k$ 中选取。
通过这种方式,虽然会在码率上有小的损失,但能显著改善列表大小界限。将参数设置为定理 1 中的形式,就可以从 $1 - R - \varepsilon$ 比例的错误中进行列表译码,列表大小至多为 $O(1/\varepsilon^2)$。不过,这种码的构造不是显式的,而是一种随机(蒙特卡罗)构造,能以高概率满足列表译码的要求。
| 操作步骤 | 具体内容 |
|---|---|
| 选择参数 | 确定合适的 $s$ 和 $\varepsilon$ 值 |
| 生成子集 | 生成 $(s, O(s/\varepsilon))$ - 子空间规避子集 $V$ |
| 选取消息 | 从 $V$ 中选取消息进行编码 |
利用边信息进行译码
前面介绍的译码过程是尝试所有 $f_0, \cdots, f_{s - 2}$ 系数的选择,并使用每个选择来唯一确定 $f$ 的候选。但实际上,对于每个 $i$,$f_i$ 本质上是 $f$ 在 0 处的 $i$ 阶导数除以 $i!$。因此,如果译码器知道 $f$ 及其前 $s - 1$ 阶导数在 0 处的正确值,只要 $A_s(0) \neq 0$,就可以唯一恢复 $f$。
假设编码器除了在原始信道上发送(长得多的)码字外,还可以通过无噪声边信道发送少量信息。编码器可以均匀随机地选择 $\alpha \in F_q$,并在无噪声信道上发送 $f(\alpha), f’(\alpha), \cdots, f^{(s - 1)}(\alpha)$。译码失败的情况仅当 $A_i(\alpha) = 0$(其中 $i$ 是使得 $A_i(X) \neq 0$ 的最大索引)。由于 $A_i(X)$ 的次数有界,通过增大域大小 $q$,可以以任意接近 1 的概率唯一恢复 $f$。
以下是利用边信息进行译码的 mermaid 流程图:
graph LR
A[编码器选择 α] --> B[编码器发送 f(α), f'(α), ..., f^(s - 1)(α) 到无噪声边信道]
B --> C[编码器发送码字到原始信道]
C --> D[译码器接收受损码字和边信息]
D --> E[判断 A_s(α) 是否为 0]
E -- 是 --> F[译码失败]
E -- 否 --> G[平移问题并确定移位系数]
G --> H[唯一恢复 f]
具体步骤如下:
1.
编码器操作
:
- 均匀随机选择 $\alpha \in F_q$。
- 通过无噪声边信道发送 $f(\alpha), f’(\alpha), \cdots, f^{(s - 1)}(\alpha)$。
- 在原始信道上发送码字。
2.
译码器操作
:
- 接收受损码字和边信息。
- 检查 $A_s(\alpha)$ 是否为 0。
- 若 $A_s(\alpha) \neq 0$,平移问题并使用边信息唯一确定移位系数,从而恢复 $f$。
与通用的结合列表可译码码和哈希的解决方案相比,此方法的优势在于无需计算完整的列表(这是计算量较大的步骤,因为列表大小界限与 $s$ 呈指数关系),然后再将其修剪为唯一解。而是可以在应用平移变换 $X \mapsto X + \alpha$ 后,在线性系统中唯一识别多项式 $f(X + \alpha)$ 的前 $(s - 1)$ 个系数,其余系数可根据这些系数线性组合确定,整个算法可以在二次时间内实现。
译码器还可以使用接收到的码字 $y$ 的列作为边信息 $f(a_i), f’(a_i), \cdots, f^{(s - 2)}(a_i)$($i = 1, 2, \cdots, n$)的猜测。由于 $f$ 与 $y$ 在超过 $t > Rn$ 个位置上一致,只要 $A_s(a_i) = 0$ 的评估点 $a_i$ 少于 $t$ 个,就可以恢复所有解 $f$,这样会得到一个至多为 $n - t < n$ 的列表大小界限。然而,目前似乎没有办法确保 $A_s$ 不在用于编码的大多数(甚至所有)点 $a_i$ 处消失。或许可以使用一些额外的方法,使列表大小在 $q$ 和 $s$ 上都是多项式的,或者至少为 $\exp(O(s))q^c$(其中 $c$ 为某个绝对常数)。
综上所述,基于导数码的列表译码在信息传输的纠错方面具有重要的应用价值。通过合理选择参数和采用有效的译码策略,可以在保证译码准确性的同时,降低译码的复杂度和列表大小,提高信息传输的效率和可靠性。在未来的研究中,可以进一步探索如何更好地应对译码过程中的各种问题,如列表大小的控制和译码效率的提升,以满足不同应用场景的需求。
超级会员免费看
7434

被折叠的 条评论
为什么被折叠?



