There are a great variety of decoding algorithms for trellis codes, some heuristic, and some derived from well-defined optimality criteria. Until very recently, the main objective of a decoding algorithm was the successful identification of the transmitted symbol sequence, accomplished by so-called sequence decoders. These sequence decoders fall into two main groups: the tree decoders and the trellis decoders. Tree decoders explore the code tree, to be defined below, and their most well-known representatives are the sequential algorithms and limitedsize breadth first algorithms, such as the M-algorithm. Trellis decoders make use of the more structured trellis of a code, and its main algorithm is the maximumlikelihood Viterbi algorithm.