Ordered Statistics Decoder(OSD)作为一种次优的 ML 译码的方法(次优指误块率比ML译码算法高,见图一,可操作性强、性能逼近 ML 译码并且在较低信噪比下可以通过增加译码阶数不断地提高性能,缺点在于低信噪比下的OSD 译码计算复杂度 O ( K l ) O\left(K^{l}\right) O(Kl)会随阶数 l l l呈指数增长[2]。
针对无速率码时,迭代译码更适用于长码,在短码下译码性能不佳,ML译码更适合短码[2,3]。
统计学中的order statistics 是针对很多样本中的某一个特定随机变量来说的。比如从一个服从指数分布的总体中取一个样本集,其中包含 n n n个互相独立的随机变量,这个样本中的每一个随机变量还是服从指数分布。顺序统计量是指限定第 i i i个顺序统计量(order statistic)为该样本集合中第i小的元素,此时该随机变量的分布会因为 i i i的变化被扭曲而偏离原来的分布。但当n比较大时,同时取多个样本集,每个样本集中的 i i i阶统计量之间的差异都不会太大。
对于一个码长序列,比特可靠性的排列可以近似为可靠性平均值的排列,OSD算法利用这一特性,改进了硬判决中的估计码字的生成过程。
符号定义:
- 等效生成矩阵 G \boldsymbol{G} G.
- 接受到的符号序列 r = [ r 1 , r 2 , … , r N r ] \boldsymbol{r}=\left[r_{1}, r_{2}, \ldots, r_{N_{r}}\right] r=[r1,r2,…,rNr].
- 接受符号经过两次调序后得到 r ~ \tilde{\boldsymbol{r}} r~, r ~ \tilde{\boldsymbol{r}} r~再进行硬判决过程 y ~ i = { 0 , r ~ i > 0 1 , r ~ i ≤ 0 \tilde{y}_{i}=\left\{\begin{array}{l} 0, \tilde{r}_{i}>0 \\ 1, \tilde{r}_{i} \leq 0 \end{array}\right. y~i={0,r~i>01,r~i≤0,得到的序列为 y ~ = [ y 1 , y 2 , … , y N r ] \tilde{\boldsymbol{y}}=\left[y_{1}, y_{2}, \ldots, y_{N_{r}}\right] y~=[y1,y2,…,yNr]
- 硬判决的置信度即符号值的绝对值 α i = ∣ r i ∣ \alpha_{i}=|r_{i}| αi=∣ri∣(仅限于BPSK调制) 硬判决思想:利用排序后 α ~ \tilde{\boldsymbol{\alpha}} α~的前K位只包含少量错误信息位,在发送码字和接受码字之间最小化可能出错的bit数量。
Step1:在解码前先完成接受符号可靠性的降序排列: α ′ = Π 1 ( α ) \boldsymbol{\alpha}^{\prime}=\Pi_{1}(\boldsymbol{\alpha}) α′=Π1(α),其中 Π 1 \Pi_{1} Π1表示顺序置换操作。在通过符号的可靠性得到置换操作后,进行 G ′ = Π 1 ( G ) \boldsymbol{G}^{\prime}=\Pi_{1}(\boldsymbol{G}) G′=Π1(G) 和 r ′ = Π 1 ( r ) \boldsymbol{r}^{\prime}=\Pi_{1}(\boldsymbol{r}) r′=Π1(r)
PS1:step1中没有考虑 α i = α j \alpha_{i}=\alpha_{j} αi=αj的情况,因为 r \boldsymbol{r} r是调制符号 x \boldsymbol{x} x+ n \boldsymbol{n} n,对于信道随机变量 n \boldsymbol{n} n来说,出现相同数值的概率几乎为0.
PS2:针对该排序,可用归并排序或者快速排序算法(二分法排序),算法复杂度为 O ( N r log N r ) \mathcal{O}\left(N_{r} \log N_{r}\right) O(NrlogNr)
Step2:将 G ′ \boldsymbol{G}^{\prime} G′转化为系统矩阵 G ~ \boldsymbol{\widetilde{G}} G ,记录列置换顺序 Π 2 \Pi_{2} Π2。同样 r ~ = Π 2 ( r ′ ) , α ~ = Π 2 ( α ′ ) \tilde{\boldsymbol{r}}=\Pi_{2}\left(\boldsymbol{r}^{\prime}\right), \tilde{\boldsymbol{\alpha}}=\Pi_{2}\left(\boldsymbol{\alpha}^{\prime}\right) r~=Π2(r′),α~=Π2(α′)。
PS1:这里可分为两步,第一步是列操作进行前K列的独立处理,即从第二列开始判断是否和前面的列线性无关,如果无关则保留,如果有关则从K+1列判断是否线性无关,如果无关则置换到当前对应列,否则继续寻找K+2列。第二步是行变换得到系统矩阵。该过程复杂度为 O ( N r ∗ m i n { K 2 , ( N r − K ) 2 } ) \mathcal{O}\left(N_r*min\{ K^2,(N_r-K)^{2}\}\right) O(Nr∗min{K2,(Nr−K)2})( 如果 K > N r − K ,就通过 H 矩阵去求系统矩阵,反之通过 G 矩阵去求系统矩阵 如果K>N_r-K,就通过H矩阵去求系统矩阵,反之通过G矩阵去求系统矩阵 如果K>Nr−K,就通过H矩阵去求系统矩阵,反之通过G矩阵去求系统矩阵)
PS2:如果码率低于1/2,则为代码生成器矩阵,如果码率高于1/2,则为奇偶校验矩阵。
step3:硬判决先得到可靠序列 y ~ 1 : K = [ y 1 , y 2 , … , y K ] \tilde{\boldsymbol{y}}_{1:K}=\left[y_{1}, y_{2}, \ldots,y_{K}\right] y~1:K=[y1,y2,…,yK],然后利用 y ~ = y ~ 1 : K G ~ \tilde{\boldsymbol{y}}=\tilde{\boldsymbol{y}}_{1:K}\boldsymbol{\widetilde{G}} y~=y~1:KG 得到全部估计码字 c ~ o p t = y ~ \tilde{\boldsymbol{c}}_{\mathrm{opt}}=\tilde{\boldsymbol{y}} c~opt=y~。
step4:最终估计码字为 c ^ = Π 1 − 1 ( Π 2 − 1 ( c ~ o p t ) ) \hat{\boldsymbol{c}}=\Pi_{1}^{-1}\left(\Pi_{2}^{-1}\left(\tilde{\boldsymbol{c}}_{\mathrm{opt}}\right)\right) c^=Π1−1(Π2−1(c~opt))
原始OSD算法改进了硬判决方式,引入了再处理过程。所以step1、2、4不变,对step3进行更改。
ML软判决译码算法的思想:排序后 α ~ \tilde{\boldsymbol{\alpha}} α~的前K位只包含少量错误信息位,遍历 2 K 2^K 2K个可能的错误图样到硬判决值 y ~ 1 : K \tilde{\boldsymbol{y}}_{1:K} y~1:K上,然后生成 2 K 2^K 2K个估计码字,同两次置换后的接受序列 r ~ \tilde{\boldsymbol{r}} r~置信度差异最小的估计码字就是需要输出的估计码字。本质是在发送码字与估计接受码字之间最小化平方欧氏距离。
OSD降低计算复杂度的思想:对于硬判决码字的前K个bit,其单个错误概率是随着位置索引值降低而降低的;对于考虑多bit连续错误的情况,组合的位数越多出错的概率越低——测试错误图样是存在优先级别的。所以减少不必要测试错误图样的生成,就能降低ML译码算法的复杂度——通过阶数限制多位bit错误的TEP的生成。
再处理过程:
对于 l , 1 ≤ i ≤ l l,1\leq i \leq l l,1≤i≤l:
第i阶段的再处理过程 改变硬判决可靠序列 y ~ 1 : K = [ y 1 , y 2 , … , y K ] \tilde{\boldsymbol{y}}_{1:K}=\left[y_{1}, y_{2}, \ldots,y_{K}\right] y~1:K=[y1,y2,…,yK]中的 i i i个bit,然后重构对应的接受码字,并将其通过对应的调制方式调制,然后将该结果同排序后的接受码字 r ~ \tilde{\boldsymbol{r}} r~计算其在向量空间中的欧式距离。并记录欧式距离最小的码字作为估计码字 c ~ o p t \tilde{\boldsymbol{c}}_{\mathrm{opt}} c~opt。
所以在每个阶段需要遍历 ( K i ) \left(\begin{array}{c}K \\ i\end{array}\right) (Ki)个可能TEP,整个流程需要遍历 ∑ i = 0 l ( K i ) \sum_{i=0}^{l}\left(\begin{array}{c}K \\ i\end{array}\right) ∑i=0l(Ki)个TEP。显然如果 l = K l=K l=K就是最大似然译码的思路了。
仿真表明:对于N小于等于64的高速短块码, l = 2 l=2 l=2即可实现接近ML最佳性能的解码。块长继续增大时,至少需要 l = 3 l=3 l=3才能接近最佳性能。
思想:在第i阶段,最后i个位置的可靠度之和大于某一迭代更新的可靠性阈值可视为解码成功。表征即使最后i个翻转了(图论中的图引入了对应的节点,与现存节点构成边相连),其边权重加上去也不会使得平方欧式距离增大。
对于 l l l-OSD过程,如果存在 i < l i
定义(此处用不太上):
- y ~ \tilde{\boldsymbol{y}} y~作为硬判决的结果,用上标 α \alpha α表示改变了其中 i i i个bit的位置索引, y ~ α \tilde{\boldsymbol{y}}^{\alpha} y~α即重构后的估计码字。重构码字调制后位 x ~ α = ( α 1 , α 2 , . . . , α N ) \tilde{\boldsymbol{x}}^{\alpha}=(\alpha_1,\alpha_2,...,\alpha_N) x~α=(α1,α2,...,αN)
- 欧式距离的平方 E = d 2 ( x ~ α , r ~ ) E=d^2(\tilde{\boldsymbol{x}}^{\alpha},\tilde{\boldsymbol{r}}) E=d2(x~α,r~)
- δ i ( y ~ α ) = δ i ( x ~ α ) = 1 / 4 ( ( y i − α i ) 2 − ( y i + α i ) 2 ) = − ∣ y i ∣ \delta_{i}\left(\tilde{\boldsymbol{y}}^{\boldsymbol{\alpha}}\right)=\delta_{i}\left(\tilde{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right)=1 / 4\left(\left(y_{i}-\alpha_{i}\right)^{2}-\left(y_{i}+\alpha_{i}\right)^{2}\right)=- |y_{i}| δi(y~α)=δi(x~α)=1/4((yi−αi)2−(yi+αi)2)=−∣yi∣
- 可用资源 R available ( i ) = min { R i ( x ‾ S ) − E ( x ‾ S , x ‾ C ) , R i ( x ‾ C ) } R_{\text {available }}(i)=\min \left\{R_{i}\left(\overline{\boldsymbol{x}}_{\boldsymbol{S}}\right)-E\left(\overline{\boldsymbol{x}}_{\boldsymbol{S}}, \overline{\boldsymbol{x}}_{\boldsymbol{C}}\right), R_{i}\left(\overline{\boldsymbol{x}}_{\boldsymbol{C}}\right)\right\} Ravailable (i)=min{Ri(xS)−E(xS,xC),Ri(xC)}。(用图论定义的阈值)其中 R i ( x ‾ α ) = ∑ δ j ( x ‾ α ) ∈ D + ( x ‾ α ) δ j ( x ‾ α ) + ∑ δ j ( x ‾ α ) ∈ D R − ( x ‾ α ) δ j ( x ‾ α ) R_{i}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right)=\sum_{\delta_{j}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right) \in D^{+}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right)} \delta_{j}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right)+\sum_{\delta_{j}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right) \in D_{R}^{-}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right)} \delta_{j}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}\right) Ri(xα)=∑δj(xα)∈D+(xα)δj(xα)+∑δj(xα)∈DR−(xα)δj(xα), E ( x ‾ α , x ‾ β ) = 1 / 4 ( d 2 ( x ‾ α , z ‾ ) − d 2 ( x ‾ β , z ‾ ) ) E\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}, \overline{\boldsymbol{x}}^{\boldsymbol{\beta}}\right)=1 / 4\left(d^{2}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\alpha}}, \overline{\boldsymbol{z}}\right)-d^{2}\left(\overline{\boldsymbol{x}}^{\boldsymbol{\beta}}, \overline{\boldsymbol{z}}\right)\right) E(xα,xβ)=1/4(d2(xα,z)−d2(xβ,z))
思路:由于OSD延身算法主要取决于可能的错误图样的排列和数量,[4]引入了迭代参考指标的重编码技术和自适应丢弃规则,前者简化了再处理中重编码过程,后者减少了平均重编码次数。[5]用TEP生成取代了OSD的结构化搜索,基于统计顺序特性引入了和信道SNR相关联的TEP的优先级权重,其思想是在两个不可靠的bit位进行再处理收益比在一个可靠的bit位进行再处理的收益更大。
原始OSD算法:
Step1:在解码前先完成接受符号可靠性的降序排列: α ′ = Π 1 ( α ) \boldsymbol{\alpha}^{\prime}=\Pi_{1}(\boldsymbol{\alpha}) α′=Π1(α),其中 Π 1 \Pi_{1} Π1表示顺序置换操作。在通过符号的可靠性得到置换操作后,进行 G ′ = Π 1 ( G ) \boldsymbol{G}^{\prime}=\Pi_{1}(\boldsymbol{G}) G′=Π1(G) 和 r ′ = Π 1 ( r ) \boldsymbol{r}^{\prime}=\Pi_{1}(\boldsymbol{r}) r′=Π1(r)
Step2:将 G ′ \boldsymbol{G}^{\prime} G′转化为系统矩阵 G ~ \boldsymbol{\widetilde{G}} G ,记录列置换顺序 Π 2 \Pi_{2} Π2。同样 r ~ = Π 2 ( r ′ ) , α ~ = Π 2 ( α ′ ) \tilde{\boldsymbol{r}}=\Pi_{2}\left(\boldsymbol{r}^{\prime}\right), \tilde{\boldsymbol{\alpha}}=\Pi_{2}\left(\boldsymbol{\alpha}^{\prime}\right) r~=Π2(r′),α~=Π2(α′)。
step3:硬判决先得到可靠序列 y ~ 1 : K = [ y 1 , y 2 , … , y K ] \tilde{\boldsymbol{y}}_{1:K}=\left[y_{1}, y_{2}, \ldots,y_{K}\right] y~1:K=[y1,y2,…,yK],然后再处理过程(对于 l , 1 ≤ i ≤ l l,1\leq i \leq l l,1≤i≤l):
第i阶段的再处理过程 改变硬判决可靠序列 y ~ 1 : K = [ y 1 , y 2 , … , y K ] \tilde{\boldsymbol{y}}_{1:K}=\left[y_{1}, y_{2}, \ldots,y_{K}\right] y~1:K=[y1,y2,…,yK]中的 i i i个bit,然后重构对应的接受码字,并将其通过对应的调制方式调制,然后将该结果同排序后的接受码字 r ~ \tilde{\boldsymbol{r}} r~计算其在向量空间中的欧式距离。并记录欧式距离最小的码字作为估计码字 c ~ o p t \tilde{\boldsymbol{c}}_{\mathrm{opt}} c~opt。如果过程中第 i i i阶段符合停止条件,提前输出估计码字。
传统OSD算法在此基础上可靠性变化,再处理过程变化
step4:最终估计码字为 c ^ = Π 1 − 1 ( Π 2 − 1 ( c ~ o p t ) ) \hat{\boldsymbol{c}}=\Pi_{1}^{-1}\left(\Pi_{2}^{-1}\left(\tilde{\boldsymbol{c}}_{\mathrm{opt}}\right)\right) c^=Π1−1(Π2−1(c~opt))
论文顺序:原始OSD→【6】→传统OSD
定义: ( N , K ) 线性分组码 (N,K)线性分组码 (N,K)线性分组码
- 二元码字 c = [ c 1 c 2 … c N ] \mathbf{c}=\left[\begin{array}{llll}c_{1} & c_{2} & \ldots & c_{N}\end{array}\right] c=[c1c2…cN],假设每个码字出现的概率相等, Pr ( c ) = 2 − K , c ∈ C \operatorname{Pr}(\mathbf{c})=2^{-K},\mathbf{c} \in \mathcal{C} Pr(c)=2−K,c∈C
- BPSK调制后的单位能量的双极性符号经过信道后接受为 r = [ r 1 r 2 … r N ] \mathbf{r}=\left[\begin{array}{llll}r_{1} & r_{2} & \ldots & r_{N}\end{array}\right] r=[r1r2…rN],其中 r i = B P S K ( c i ) + n i r_i=BPSK(c_i)+n_i ri=BPSK(ci)+ni
- 定义第i个bit位的似然比 δ i ≜ ln Pr ( c i = 0 ∣ r i ) Pr ( c i = 1 ∣ r i ) = 4 r i / N 0 \delta_{i} \triangleq \ln \frac{\operatorname{Pr}\left(c_{i}=0 \mid r_{i}\right)}{\operatorname{Pr}\left(c_{i}=1 \mid r_{i}\right)}=4 r_{i} / N_{0} δi≜lnPr(ci=1∣ri)Pr(ci=0∣ri)=4ri/N0
- 接受符号的硬判决用 y \mathbf{y} y表示
变化一:可靠性相较原始方案多了一个放缩: α i = δ i = ln Pr ( c i = 0 ∣ r i ) Pr ( c i = 1 ∣ r i ) = 4 ∣ r i ∣ / N 0 \alpha_i=\delta_{i} = \ln \frac{\operatorname{Pr}\left(c_{i}=0 \mid r_{i}\right)}{\operatorname{Pr}\left(c_{i}=1 \mid r_{i}\right)}=4 |r_{i}| / N_{0} αi=δi=lnPr(ci=1∣ri)Pr(ci=0∣ri)=4∣ri∣/N0
在原始OSD算法上采用bit似然值定义位可靠性,在计算可靠性后根据可靠性完成两次置换,使得 α ~ 1 ≥ α ~ 2 ≥ ⋯ ≥ α ~ K \tilde{\alpha}_{1} \geq \tilde{\alpha}_{2} \geq \cdots \geq \tilde{\alpha}_{K} α~1≥α~2≥⋯≥α~K and α ~ K + 1 ≥ α ~ K + 2 ≥ ⋯ ≥ α ~ N \tilde{\alpha}_{K+1} \geq \tilde{\alpha}_{K+2} \geq \cdots \geq \tilde{\alpha}_{N} α~K+1≥α~K+2≥⋯≥α~N。
变化二:对于原始OSD中step2的实现用了贪婪算法(但看思路和原始OSD一模一样)
变化三:定义TEP的加权汉明距离 D ( α ~ , e ) ≡ D ( e ) ≜ ∑ 1 ≤ i ≤ N , c e , i ≠ y i α ~ i \mathcal{D}(\tilde{\alpha}, \mathbf{e}) \equiv \mathcal{D}(\mathbf{e}) \triangleq \sum_{{\mathbf{1} \leq \mathbf{i} \leq \mathbf{N}, \mathbf{c}_{\mathbf{e}, \mathbf{i}} \neq \mathbf{y}_{\mathbf{i}}}} \tilde{\alpha}_{\mathbf{i}} D(α~,e)≡D(e)≜∑1≤i≤N,ce,i=yiα~i,且将其分解为TEP似然值和冗余WHD, L ( e ) ≜ ∑ 1 ≤ i ≤ K , e i = 1 α ~ i , D R ( e ) ≜ ∑ K + 1 ≤ i ≤ N , c ˉ e , i = 1 α ~ i \mathcal{L}(\mathbf{e}) \triangleq \sum_{{1 \leq i \leq K , e_{i}=1}} \tilde{\alpha}_{i}, \quad \mathcal{D}_{R}(\mathbf{e}) \triangleq \sum_{{K+1 \leq i \leq N , \bar{c}_{\mathbf{e}, i=1}}} \tilde{\alpha}_{i} L(e)≜∑1≤i≤K,ei=1α~i,DR(e)≜∑K+1≤i≤N,cˉe,i=1α~i。定义TEP后将0阶硬判决过程表示为: c ~ 0 ≜ y ~ B G ~ = [ y ~ B y ~ B P ~ ] \tilde{\mathbf{c}}_{0} \triangleq \tilde{\mathbf{y}}_{B} \tilde{\mathbf{G}}=\left[\begin{array}{ll}\tilde{\mathbf{y}}_{B} & \tilde{\mathbf{y}}_{B} \tilde{\mathbf{P}}\end{array}\right] c~0≜y~BG~=[y~By~BP~],将再处理过程表示为 c ~ e ≜ ( y ~ B ⊕ e ) G ~ = [ y ~ B ⊕ e ( y ~ B ⊕ e ) P ~ ] \tilde{\mathbf{c}}_{\mathbf{e}} \triangleq\left(\tilde{\mathbf{y}}_{B} \oplus \mathbf{e}\right) \tilde{\mathbf{G}}=\left[\tilde{\mathbf{y}}_{B} \oplus \mathbf{e} \quad\left(\tilde{\mathbf{y}}_{B} \oplus \mathbf{e}\right) \tilde{\mathbf{P}}\right] c~e≜(y~B⊕e)G~=[y~B⊕e(y~B⊕e)P~]
(原始OSD没有管TEP的WHD,而是在得到估计码字后计算平方欧式距离,用于衡量估计码字的准确度)
变化四:TEP的生成,思想是将TEP按照似然值排序: L ( e ( 0 ) ) ≤ L ( e ( 1 ) ) ≤ L ( e ( 2 ) ) ≤ ⋯ ≤ L ( e ( 2 K − 1 ) ) \mathcal{L}\left(\mathbf{e}^{(0)}\right) \leq \mathcal{L}\left(\mathbf{e}^{(1)}\right) \leq \mathcal{L}\left(\mathbf{e}^{(2)}\right) \leq \cdots \leq \mathcal{L}\left(\mathbf{e}^{\left(2^{K}-1\right)}\right) L(e(0))≤L(e(1))≤L(e(2))≤⋯≤L(e(2K−1))(该排序通过 N ( e ) ≜ 2 K w ( e ) ∑ i = 1 K 2 − i e i \mathcal{N}(\mathbf{e}) \triangleq 2^{K w(\mathbf{e})} \sum_{i=1}^{K} 2^{-i} e_{i} N(e)≜2Kw(e)∑i=1K2−iei实现)。论文针对上述排序方式设计了TEP的迭代生成方案。
对于 L ( e ‾ ) ≥ L ∗ \mathcal{L}(\overline{\mathrm{e}}) \geq \mathcal{L}^{*} L(e)≥L∗,将该TEP e ‾ \overline{\mathrm{e}} e丢弃,利用非零位置索引 I ( e ) = [ I 1 , I 2 , ⋯ , I w ( e ) ] , I 1 > I 2 > ⋯ > I w ( e ) \mathcal{I}(\mathbf{e})=[\mathcal{I}_{1},\mathcal{I}_{2},\cdots,\mathcal{I}_{w(\mathbf{e})}],\mathcal{I}_{1}>\mathcal{I}_{2}>\cdots>\mathcal{I}_{w(\mathbf{e})} I(e)=[I1,I2,⋯,Iw(e)],I1>I2>⋯>Iw(e)来定义新TEP的生成:
一般情况(一句话总结就是找关键位的索引值(依据关键位和生成公式得到的新的TEP一定是沿着TEP概率分布上升),TEP后置位可靠性比较低不叫关键位,即已经置1的不变(让它去修改MRB的对应位置),如第三个TEP的后两个1不变,对于非后置位的,找到连续的‘1’,最前面的一个1所在的位置就是关键位(如下面三个例子中画横线的1就是关键位置),然后根据下述索引计算式得到新的TEP中‘1’的位置索引。):
TEP生成公式:
I = [ K , K − 1 , … , K − κ + 2 , I ‾ κ − 1 , I ‾ κ + 1 , … , I ‾ w ( e ‾ ) ] \mathcal{I}=\left[K, K-1, \ldots, K-\kappa+2, \overline{\mathcal{I}}_{\kappa}-1, \overline{\mathcal{I}}_{\kappa+1}, \ldots, \overline{\mathcal{I}}_{w(\overline{\mathbf{e}})}\right] I=[K,K−1,…,K−κ+2,Iκ−1,Iκ+1,…,Iw(e)]
κ = min { k : I ‾ k + 1 < I ‾ k − 1 } \kappa=\min \left\{k: \overline{\mathcal{I}}_{k+1}<\overline{\mathcal{I}}_{k}-1\right\} κ=min{k:Ik+1<Ik−1}
- 公式分析:
-显然在一般情况下,有 1 ≤ κ ≤ w ( e ‾ ) 1 \leq \kappa \leq w(\overline e) 1≤κ≤w(e)
-由 I \mathcal{I} I得到当 κ = 1 \kappa=1 κ=1时, K − κ + 2 = K + 1 K-\kappa+2=K+1 K−κ+2=K+1,同时 κ = w ( e ‾ ) \kappa=w(\overline e) κ=w(e)时,出现了 I ‾ w ( e ‾ ) − 1 \overline{\mathcal{I}}_{w(\overline e)}-1 Iw(e)−1和 I ‾ w ( e ‾ ) \overline{\mathcal{I}}_{w(\overline e)} Iw(e)。文中没有说这两种情况怎么处理,但是根据算法中的case判断,前一种情况符合case1,就和下图的第二个例子一样,后一种情况仅保留 I ‾ w ( e ‾ ) − 1 \overline{\mathcal{I}}_{w(\overline e)}-1 Iw(e)−1,否则增加会加一个权重下述三个例子 κ 分别为 3 , 2 , 5 \kappa分别为3,2,5 κ分别为3,2,5,注意下面的 κ \kappa κ是需要根据算法中的case1-4来判断是否还需要更新TEP然后继续迭代的,第一次得到的 κ \kappa κ不一定符合case判断,经过四次判断会不断更新TEP和 κ \kappa κ,下图只有TEP的最终生成结果
针对第一个,可以套公式得到(这个例子里面后置位两个0,没有1,然后前置位连着三个1,然后一个0,又一个1,公式就是将前置位最前面的那个1置0,然后将前一位的0置1)
特殊情况(特殊在关键位置会导致按照公式生成的TEP权重变大,即进入了TEP的下一阶的处理过程):
I = [ K , K − 1 , … , K − κ + 2 , I ‾ κ − 1 , I ‾ κ + 1 , … , I ‾ w ( e ‾ ) ] \mathcal{I}=\left[K, K-1, \ldots, K-\kappa+2, \overline{\mathcal{I}}_{\kappa}-1, \overline{\mathcal{I}}_{\kappa+1}, \ldots, \overline{\mathcal{I}}_{w(\overline{\mathbf{e}})}\right] I=[K,K−1,…,K−κ+2,Iκ−1,Iκ+1,…,Iw(e)]
κ = min { k : I ‾ k + 1 < I ‾ k − 1 , I ‾ k − 1 < K − k + 2 } \kappa=\min \left\{k: \overline{\mathcal{I}}_{k+1}<\overline{\mathcal{I}}_{k}-1, \overline{\mathcal{I}}_{k-1}κ=min{k:Ik+1<Ik−1,Ik−1<K−k+2} 针对找不到关键位置的情况,即直接从 l l l=3到 l l l=4的,按照初始化的最后几位进行生成。
变化五:在此基础上使用1)自适应跳过规则消除不必要的TEP(同S-OSD),2)引入迭代参考指标简化重新编码操作。
自适应TEP丢弃规则:对于TEP段 e h \boldsymbol{e}^{h} eh的估计下界来预估最可能的 e h ∗ \boldsymbol{e}^{h *} eh∗似然值 L ( e h ∗ ) \mathcal{L}\left(\boldsymbol{e}^{h *}\right) L(eh∗)( e h ∗ \boldsymbol{e}^{h *} eh∗对应最小化WHD D ( ⋅ ) \mathcal{D}(\cdot) D(⋅))。丢弃规则中 L ( e h ) ≥ L ( e h ∗ ) \mathcal{L}\left(\boldsymbol{e }^{h}\right) \geq \mathcal{L}\left(\boldsymbol{e}^{h *}\right) L(eh)≥L(eh∗)的 L ( e h ∗ ) \mathcal{L}\left(\boldsymbol{e}^{h *}\right) L(eh∗):
L ( e h ∗ ) = ∑ i = 1 K α ~ i ∑ i = 1 K α ~ i + λ ∑ i = K + 1 N α ~ i D ( e h ∗ ) \mathcal{L}\left(\boldsymbol{e}^{h *}\right)=\frac{\sum_{i=1}^{K} \tilde{\alpha}_{i}}{\sum_{i=1}^{K} \tilde{\alpha}_{i}+\lambda \sum_{i=K+1}^{N} \tilde{\alpha}_{i}} \mathcal{D}\left(\boldsymbol{e}^{h *}\right) L(eh∗)=∑i=1Kα~i+λ∑i=K+1Nα~i∑i=1Kα~iD(eh∗)丢弃规则确定在每个段中实现丢弃的似然阈值,并且阈值可以随信道条件自适应地改变。抛弃没有处理必要的TEP,可以显著降低复杂度。
另外一种TEP的生成思路:
[5] TEP生成算法思想:使用排列位的平均可靠性向量来生成最有可能的错误图样列表(在给定SNR下离线执行)
利用可靠性的CDF函数定义了平均可靠性,利用反转bit位的可靠性之和定义了一个错误图样的优先级。解码过程从根据可靠性的递增顺序排列接收位开始。对于每一个TEP计算其优先级,并将其放在列表中的适当位置,列表长度有限,如果生成的TEP超过列表长度,进行二分插入法,溢出低优先级的TEP。
[5] 中有一个TEP列表的排列操作用于生成TEP候选集,感觉思想和自适应阈值是一样的。但没像[4]一样指出阈值计算式,且操作的时间复杂度(会多引入二分插入排序)更高。
[1] M. P. C. Fossorier and Shu Lin, “Soft-decision decoding of linear block codes based on ordered statistics,” in IEEE Transactions on Information Theory, vol. 41, no. 5, pp. 1379-1396, Sept. 1995, doi: 10.1109/18.412683.
[2] 李连琴.(2020).高可靠低时延喷泉码的分阶统计译码器研究(硕士学位论文,哈尔滨工业大学).https://kns.cnki.net/KCMS/detail/detail.aspx?dbname=CMFD202101&filename=1020399568.nh
[3] F. Lázaro, G. Liva, G. Bauch and E. Paolini, “Bounds on the Error Probability of Raptor Codes Under Maximum Likelihood Decoding,” in IEEE Transactions on Information Theory, vol. 67, no. 3, pp. 1537-1558, March 2021, doi: 10.1109/TIT.2020.3049061.
[4] Y. Wu and C. N. Hadjicostis, “Soft-Decision Decoding Using Ordered Recodings on the Most Reliable Basis,” in IEEE Transactions on Information Theory, vol. 53, no. 2, pp. 829-836, Feb. 2007, doi: 10.1109/TIT.2006.889699.
[5] A. Kabat, F. Guilloud and R. Pyndiah, “New Approach to Order Statistics Decoding of Long Linear Block Codes,” IEEE GLOBECOM 2007 - IEEE Global Telecommunications Conference, 2007, pp. 1467-1471, doi: 10.1109/GLOCOM.2007.282.
[6] D. Gazelle and J. Snyders, “Reliability-based code-search algorithms for maximum-likelihood decoding of block codes,” IEEE Trans. Inf. Theory, vol. 43, pp. 239–249, Jan. 1997.