# BCJR algorithm

The BCJR algorithm is an algorithm for maximum a posteriori decoding of error correcting codes defined on trellises (principally convolutional codes). The algorithm is named after its inventors: Bahl, Cocke, Jelinek and Raviv.[1] This algorithm is critical to modern iteratively-decoded error-correcting codes including turbo codes and low-density parity-check codes.

## Steps involved

Based on the trellis:

• Compute forward probabilities ${\displaystyle \alpha }$
• Compute backward probabilities ${\displaystyle \beta }$
• Compute smoothed probabilities based on other information (i.e. noise variance for AWGN, bit crossover probability for binary symmetric channel)

## Variations

### SBGT BCJR

Berrou, Glavieux and Thitimajshima simplification.[2]

[3]