Computing Atlas

How Computing Was Built
Sign In
Text size
100%
Theme
Algorithm

BCJR algorithm

Machine Learning Algorithm

The BCJR algorithm is a method for maximum a posteriori decoding of error correcting codes that are defined on trellises, principally convolutional codes, though it also applies to linear block codes. It was introduced in 1974 by Lalit R. Bahl, John Cocke, Frederick Jelinek and Josef Raviv, and the name is formed from their surnames. Instead of picking the single most likely path through the trellis, it makes a forward pass and a backward pass over it and combines the two, so that each transmitted symbol receives a posterior probability. Decoders built on it therefore provide soft outputs that express the relative probabilities of the possible symbol values, which is why they serve as component decoders in iterative turbo decoding. Several variants exist. Log-MAP performs the same calculations in the logarithmic domain, replacing multiplications of small probabilities with additions and avoiding numerical difficulties, and it is exactly equivalent to the probability-domain version. Max-Log-MAP approximates further by keeping only the largest exponent in a sum, which is cheaper but can reduce decoding accuracy. A windowed form processes the trellis in segments to cut memory use and latency on very long sequences, and a simplified Berrou-Glavieux-Thitimajshima form removes redundant divisions from the recursions. The method is closely related to the forward-backward algorithm.

Connections

Invented

John Cocke, Pioneers
Source BCJR algorithm (Wikipedia)
Sources
BCJR algorithm (Wikipedia)
  • In Group: Probabilistic Inference and Sampling Algorithms, Lead
    is an algorithm for maximum a posteriori decoding of error correcting codes
  • Invented: John Cocke, Lead
    The algorithm was introduced in 1974 by Lalit R. Bahl, John Cocke, Frederick Jelinek and Josef Raviv
View the Source
Comments (0)
No comments yet. Be the first to share a thought.
Reader Challenges (0)
No disputes yet. Spotted an error or a better source? Open the first one.