BCJR algorithm

Uses your system voice; voice and rate in settings.

Snapshot

≈ 3 min read

Names in other languages

No names in other languages are held for this entry yet.

Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.

The Bahl-Cocke-Jelinek-Raviv (BCJR) algorithm is an algorithm for maximum a posteriori decoding of error correcting codes defined on trellises (principally convolutional codes). The algorithm was introduced in 1974 by Lalit R. Bahl, John Cocke, Frederick Jelinek and Josef Raviv, whose surnames give it its name. It applies to both linear block codes and convolutional codes. BCJR-based decoders provide soft outputs, which express the relative probabilities of possible symbol values. They are used as component decoders in iterative turbo decoding.

The Bahl-Cocke-Jelinek-Raviv (BCJR) algorithm is an algorithm for maximum a posteriori decoding of error correcting codes defined on trellises (principally convolutional codes). The algorithm was introduced in 1974 by Lalit R. Bahl, John Cocke, Frederick Jelinek and Josef Raviv, whose surnames give it its name. It applies to both linear block codes and convolutional codes. BCJR-based decoders provide soft outputs, which express the relative probabilities of possible symbol values. They are used as component decoders in iterative turbo decoding. The algorithm combines a forward pass and a backward pass through the trellis. Let S_k denote the encoder state at time k , and y_1^N=(y_1,\ldots,y_N) the received sequence. Its metrics are \begin{aligned} \alpha_k(s) &= P(S_k=s,y_1^k),\\ \beta_k(s) &= P(y_{k+1}^N\mid S_k=s),\\ \gamma_k(s',s) &= P(S_k=s,y_k\mid S_{k-1}=s'). \end{aligned} For continuous observations, the corresponding probability densities are used. The branch metric \gamma_k incorporates the channel observation and the prior probability of the transition. The forward and backward recursions are \alpha_k(s)=\sum_{s'}\alpha_{k-1}(s')\gamma_k(s',s), \beta_{k-1}(s')=\sum_s\gamma_k(s',s)\beta_k(s). Initialisation reflects the available information about the encoder's initial and final states. The posterior probability of a transition is proportional to P(S_{k-1}=s',S_k=s\mid y_1^N) \propto \alpha_{k-1}(s')\gamma_k(s',s)\beta_k(s). Summing over transitions associated with a particular input symbol and normalising gives that symbol's posterior probability. ==Steps involved== Based on the trellis: Compute forward probabilities \alpha Compute backward probabilities \beta Compute smoothed probabilities based on other information (i.e. noise variance for AWGN, bit crossover probability for binary symmetric channel) ==Variations== ===SBGT=== The simplified Berrou-Glavieux-Thitimajshima (SBGT) algorithm retains the structure of the BGT formulation while removing redundant divisions from its forward and backward recursions. ===Log-MAP and Max-Log-MAP=== The Log-MAP algorithm performs the BCJR calculations in the logarithmic domain. This replaces probability multiplications with additions and reduces numerical difficulties associated with very small probabilities. When evaluated exactly, Log-MAP is equivalent to the probability-domain MAP algorithm. Max-Log-MAP simplifies the calculations further by approximating a logarithm of a sum of exponentials with the largest exponent; this approximation can reduce decoding accuracy. The distinction is expressed by the identity \ln(e^x+e^y)=\max(x,y)+\ln(1+e^{-|x-y|}). Log-MAP retains the correction term \ln(1+e^{-|x-y|}) , whereas Max-Log-MAP omits it. ==Implementations== Susa framework implements BCJR algorithm for forward error correction codes and channel equalization in C++. ==See also== Forward–backward algorithm Maximum a posteriori (MAP) estimation Hidden Markov model ==References== ==External links== The online textbook: Information Theory, Inference, and Learning Algorithms, by David J.C. MacKay, discusses the BCJR algorithm in chapter 25. The implementation of BCJR algorithm in Susa signal processing framework

Text derived from https://en.wikipedia.org/w/index.php?oldid=1378836531 under CC BY-SA 4.0; modifications have been made.