Every time you make a call, stream a video, or send a message over a cellular network, your device wraps the raw bits in a protective shell before transmitting them. That shell is often a convolutional code â an error-correction scheme first described by Peter Elias in 1955 that dominated digital communications for half a century.
The idea is beautifully simple: instead of sending each input bit as-is, pass it through a small shift register that mixes it with the recent past. Every input bit produces two or more output bits, all of which encode not just the current bit but a memory of the last several bits. That redundancy lets the receiver reconstruct the original message even when the channel flips some bits.
Decoding seems hard at first glance â there are exponentially many possible transmitted sequences. But Andrew Viterbi discovered in 1967 that the trellis structure of the code reduces the search to a clean polynomial-time algorithm. The Viterbi algorithm is now one of the most-used algorithms in the history of digital communications, and it solves the decoding problem optimally in time, where n is the message length and k is the constraint length of the code.
This is a case where a problem that looks exponential turns out to have an efficient exact solution â not because it's easy, but because its structure is perfectly suited to dynamic programming.
Comments
Loading comments...