We now compare list decoding of PAC codes with sequential decoding, in terms of both performance and complexity. For list decoding, we use the algorithm of
Section 3. For sequential decoding, we employ exactly the same Fano decoder that was used by Arıkan in [
2]. We are grateful to Erdal Arıkan for sharing the details of their decoding algorithm. We do not disclose these details here, instead referring the reader to [
2,
44,
45].
Our main conclusion is that sequential decoding is not essential in order to achieve the remarkable performance of PAC codes: similar performance can be obtained with list decoding, providing the list size is sufficiently large. As far as complexity, sequential decoding is generally better at high SNRs and in terms of average complexity, while list decoding is advantageous in terms of worst-case complexity and at low SNRs.
4.1. Performance Comparison
Figure 3 summarizes simulation results comparing the performance of the Fano decoder from [
2] with our list decoding algorithm, as a function of the list size
L. The underlying PAC code is the same as in
Figure 1; it is the (128,64) PAC code obtained via RM rate-profiling (see
Section 2). The underlying channel is the binary-input additive white Gaussian noise (BIAWGN) channel.
As expected, the performance of list decoding steadily improves with increasing list size. For , the list-decoding performance is very close to that of sequential decoding, while for the two curves virtually coincide over the entire range of SNRs.
It should be pointed out that the frame error rate (FER) reported for sequential decoding in
Figure 1 and
Figure 3 is due to two different mechanisms of error/failure. In some cases, the sequential decoder reaches the end of the search tree (see
Figure 4) producing an incorrect codeword. These are decoding errors. In other cases, the end of the search tree is never reached; instead, the computation is aborted once it exceeds a predetermined cap on the number of cycles. These are decoding failures. As in [
2], the FER plotted in
Figure 3 counts all the cases wherein the transmitted codeword is not produced by the decoder: thus it is the sum of the error rate and the failure rate.
Table 1 below shows what fraction of such cases were due to decoding failures:
A decoding failure was declared in our simulations whenever the number of cycles (loosely speaking, cycles count forward and backward movements along the search tree in the Fano decoder) exceeded 1,300,000. This is exactly the same cap on the number of cycles that was used by Arıkan in [
2]. Overall, the foregoing table indicates that increasing this cap would not improve the performance significantly. In fact, we observe that decoding failures never dominate the overall FER of sequential decoding. Thus, it would be interesting to investigate how much this cap can be decreased without sacrificing the performance.
The FER for list decoding is also due to two distinct error mechanisms. In some cases, the transmitted codeword is not among the
L codewords generated by our decoding algorithm. In other cases, it is on the list of codewords generated, but it is not the most likely among them. Since the list decoder selects the most likely codeword on the list as its ultimate output, this leads to a decoding error. We refer to such instances as selection errors.
Table 2 below shows the fraction of selection errors for lists of various sizes:
This indicates that the performance of list decoding would further improve (at least, for ) if we could somehow increase the minimum distance of the underlying code, or otherwise aid the decoder in selecting from the list (e.g., with CRC).
Finally, we also include in
Figure 1 and
Figure 3 the BIAWGN dispersion-bound approximation for binary codes of rate
and length 128. The specific curve plotted in
Figure 1 and
Figure 3 is the so-called saddlepoint approximation [
51] of the meta-converse dispersion bound of Polyanskiy, Poor, and Verdu [
3]. Our curve coincides with those given in Figure 1 of [
52] and Figure 6 of [
53]. Note that a more accurate bound can be derived using the methods of Erseghe [
9], but this is not critical for our purposes. It is clear from
Figure 1 and
Figure 3 that the performance of the (128,64) PAC code, under both sequential decoding and list decoding with
, is close to the best achievable performance.
4.2. Complexity Comparison
A comprehensive complexity analysis of list decoding versus sequential decoding of PAC codes in practical applications is likely to require algorithmic optimization and implementation in hardware. In the case of list decoding, this should be relatively easy based upon our representation of PAC codes as polar codes with dynamically frozen bits (see
Section 3.1) in conjunction with existing work on efficient hardware implementation of polar list decoders (see [
54,
55], for example). On the other hand, we are not aware of any existing implementations of sequential decoding in hardware. Such implementation may be challenging due to variable running time, which depends on the channel noise, and complex control logic [
56].
In this section, we provide a qualitative comparison of list decoding versus sequential decoding using two generic complexity metrics: the number of nodes visited in the polar search tree and the total number of floating-point operations performed by the decoder. The results we obtain for the two metrics, summarized in
Figure 5 and
Figure 6, are consistent with each other.
The polar search tree, shown schematically in
Figure 4, represents all possible inputs
to the polar encoder. It is an irregular tree with
levels containing
paths. If
then all nodes at level
i have a single outgoing edge, as
is dynamically frozen in this case. In contrast with conventional polar codes, these edges may be labeled differently (cf.
in
Figure 4). If
then all nodes at level
i have two outgoing edges. In this framework, both list decoding and sequential decoding can be regarded as tree-search algorithms that try to identify the most likely path in the tree. The list decoder does so by following
L paths in the tree, from the root to the leaves, and selecting the most likely one at the end. The Fano sequential decoder follows only one path, but has many back-and-forth movements during the decoding process.
For the sake of qualitative comparison, we take the total number of nodes the two algorithms visit in the tree as one reasonable proxy of their complexity. In doing so, we disregard the nodes at the frozen levels, counting only those nodes that have two outgoing edges (colored blue in
Figure 4); we call them the decision nodes.
Figure 5 shows the number of decision nodes visited by the two decoding algorithms as a function of SNR.
For sequential decoding, two phenomena are immediately apparent from
Figure 5. First, there is a tremendous gap between worst-case complexity and average complexity. For most SNRs, the worst-case complexity is dominated by decoding failures, which trigger a computational timeout upon reaching the cap on the number of cycles (see
Section 4.1). Clearly, reducing this cap would also reduce the worst-case complexity. On the other hand, for SNRs higher than
dB, decoding failures were not observed. Thus, beyond
dB, the worst-case complexity gradually decreases, as expected. Another phenomenon apparent from
Figure 5 is that the average complexity is highly dependent on SNR. This is natural since the processing in the Fano sequential decoder depends on the channel noise. The less noise there is, the less likely is the sequential decoder to roll back in its search for a better path.
Neither of the two phenomena above is present for list decoding: the worst-case complexity is equal to the average complexity, and both are unaffected by SNR. The resulting curves in
Figure 5 and
Figure 6 are flat, since the complexity of list decoding depends only on the list size
L and the code dimension
k.
In fact, the number of decision nodes visited by the list decoder in the polar search tree can be easily computed as follows. First assume, for simplicity, that L is a power of 2. As the list decoder proceeds from the root to the leaves, the number of paths it traces doubles for every until it reaches L. The number of decision nodes it visits during this process is given by . After reaching L paths, the decoder visits L decision nodes at every one of the remaining levels that are not frozen. Thus, the total number of decision nodes visited is .
If
L is not a power of 2, this counting argument readily generalizes, and the number of decision nodes visited is given by
As another qualitative metric of complexity of the two algorithms, we count the total number of additions, comparisons, and multiplications of floating-point numbers throughout the decoding process. The results of this comparison are compiled in
Figure 6. The number of floating-point operations is a more precise measure of complexity than the number of decision nodes visited in the search tree. Yet we observe exactly the same pattern as in
Figure 5. For list decoding, it is no longer possible to give a simple expression as in (
8), but the complexity is still independent of SNR, resulting in flat curves. For sequential decoding, we again observe the same two phenomena discussed earlier in connection with
Figure 5. In particular, the worst-case complexity remains prohibitive even at high SNRs.
In summary, our qualitative comparison suggests that, for a similar level of performance, sequential decoding is clearly advantageous in terms of average-case complexity at high SNRs. However, list decoding may have distinct advantages in low-SNR regimes or in situations where the worst-case complexity/latency is the primary constraint.