Arıkan教授在文献提出了串行抵消SC译码算法。SC译码算法类似一个深度优先搜索的算法,其根据两个判决函数进行迭代计算最大似然对数比LLR,两个判决函数分别叫做f函数和g函数。下面是这两个公式的计算方法:
其中, a , b ∈ R , u s ∈ { 0 , 1 } a,b\in R,{ {u}_{s}}\in \left\{ 0,1 \right\} a,b∈R,us∈{0,1}。LLR的递归运算借助函数f和g表示如下:
递归的终止条件为当 N = 1 N=1 N=1时,即到达了信道 W W W端,此时 L 1 ( 1 ) ( y j ) = ln W ( y j ∣ 0 ) W ( y j ∣ 1 ) L_{1}^{\left( 1 \right)}\left( { {y}_{j}} \right)=\ln \frac{W\left( { {y}_{j}}|0 \right)}{W\left( { {y}_{j}}|1 \right)} L1(1)(yj)=lnW(yj∣1)W(yj∣0)。
SC译码算法依靠一个蝶形单元,如图10,在计算的时候不断进行递归,但是必须是先计算出蝶形单元的上行比特,才能够调用g函数求出下行比特。即图10中必须使用f函数计算出u1,之后才能够通过g函数求出u2。在实际的计算过程中,从接收的比特进行递归执行f函数和g函数,其中假如编码每次进行一次极化,在译码阶段都会多一次递归的计算,中间的计算值就是进行极化的临时值,在一整个蝶形结构中体现,是一个深度优先的算法。
SCL译码算法[3]类似树的广度优先遍历,它的好处就是能够进行剪枝操作,不用计算所有的节点。它从根节点开始往树底部进行广度遍历搜索,每一层会计算出一个估计比特,然后在这个估计比特的基础上往下进行估计下一个比特的值,另外,SCL译码算法还增加了惩罚因子,对于惩罚因子过高的节点,我们可以直接跳过它以及它子节点的计算,因为它是正确的码的可能性极低,这样排除了不可能的路径,同时,这也能达到对树进行剪枝的效果,提高译码的速度。图11展示了进行SCL译码的基本过程: