# Improving Decodability of Polar Codes by Adding Noise
## 4 Proposed Decoding Algorithms
### PDNE Decoding Algorithm  
On account of the iterative genetic evolution, the proposed online-PDNE decoding algorithm needs to seek the optimal solution in an online manner. Although the error correction performance of the polar code is greatly improved, it is achieved at the expense of increasing the complexity and delay of the decoder. To this end, a perturbed and directed neural-evolutionary (PDNE) decoding algorithm for polar codes is proposed, in which the perturbation noise and pre-trained offline directed neuro-evolutionary noise sequences are sequentially added to the received sequence for re-decoding, as given in Equations (1) and (5). In the PDNE decoding algorithm, nne is chosen from a set S\({}_{\text{n}}^{*}\) of noise patterns that is generated offline according to the method described in the following. This perturbed decoding process is performed until the cardinality T\({}_{\text{s}}\) of the set S\({}_{\text{n}}^{*}\) is reached. In the offline training, population S\({}_{\text{n}}^{(\text{t})}\) at generation t (t = 0, 1,..., T\({}_{2}\) - 1) are constructed in an iterative process, where the initial population S\({}_{\text{n}}^{(0)}\) is the first generation randomly created. The new population noise produced by each generation is sequentially and independently added to the decoding failed channel output sequence. The fitness function is defined as the same as Equation (5) in the proposed online-PDNE decoding algorithm. As shown in Figure 3, if the decoding is successful, the current neural-evolutionary noise nne will be stored in a set S\({}_{\text{n}}^{*}\). Otherwise, the genetic process is continued on the population noise until the correct directed individual is obtained or the maximum number of generations T\({}_{2}\) is reached to reinitialize the population for the next round of evolution. The details of the PDNE decoding algorithm are given in Algorithm 2. Figure 3: Block diagram of training a directed neural evolutionary noise in an offline manner. Compared with the algorithm in [36], the proposed PDNE decoding algorithm in this paper has the following advantages:  
1. The proposed PDNE decoding algorithm adopts the fitness function shown in Equation (3) instead of the bit error rate (BER)-based one in [36]. 2. The mutation operations in this paper judge whether the individual needs to be mutated bit by bit, thereby increasing the variation diversity, while the operations in [36] only mutate one of the first \([\mathrm{N}\cdot\mathrm{P}_{\mathrm{m}}]\) positions of each individual, where \(\mathrm{P}_{\mathrm{m}}\) is the mutation probability. 3. Different from the optimization of the set \(\mathrm{S}_{\mathrm{n}}^{*}\) for each SNR value in [36], the proposed PDNE decoding algorithm in this paper only needs to optimize one set \(\mathrm{S}_{\mathrm{n}}^{*}\), which greatly shortens the optimization process and reduces the spaces for storing the noises from the perspective of implementation. This indicates the algorithm in the paper has better generality. ```
Input: \(\mathrm{y}^{\mathrm{N}}\) // Received signal Q\({}_{\mathrm{P}}\) // Variance of the perturbed noise T\({}_{1}\) // Maximum number of the perturbed attempts T\({}_{\mathrm{s}}\) // Cardinality of the set \(\mathrm{S}_{\mathrm{n}}^{*}\) // Set of the noise patterns Output: \(\mathrm{\hat{\alpha}}_{1}^{\mathrm{N}}\) // Estimated codeword
1: Initialization: \(\mathrm{\hat{\alpha}}_{1}^{\mathrm{N}}\gets 0\), \(i\gets 1\), \(j\gets 1\).