Decoding an encoded signal (for example, a turbo encoded signal, a block
encoded signal or the like) is performed by demodulating the received
encoded signal to produce soft information, and iteratively processing
the soft information with one or more soft-in/soft-output (SISO) modules.
At least one of the SISO modules uses a tree structure to compute forward
and backward state metrics. More generally, iterative detection is
performed by receiving an input signal corresponding to one or more
outputs of a module whose soft-inverse can be computed by running the
forward-backward algorithm on a trellis representation of the module, and
determining the soft inverse of the module by computing forward and
backward state metrics of the received input signal using a tree
structure.