1.2.6. Декодер
Операция, осуществляемая декодером, обратна операции кодера. Поскольку последовательность символов, порождаемая демодулятором, может содержать ошибки, декодер должен выполнять отображение существенно более сложное, чем кодер. Несмотря на то что в принципе это отображение можно задать оптимально, например, с помощью таблицы, аналогичной табл. 1.1, такое задание быстро становится нецелесообразным при росте объема кода. На практике часто приходится довольствоваться неоптимальными методами. Чтобы сделать декодирование возможным, нужно разработать реализующие его вычислительные процедуры. Основная часть книги посвящена подробному изложению большинства известных в настоящее время практических методов декодирований. Алгоритмы декодирования классифицируются поэтому в соответствии с тем, применяются ли они к блоковым или к древовидным кодам. Здесь рассматриваются следующие два основных класса алгоритмов декодирования блоковых кодов:
процедуры, основанные на элементарных свойствах кодов, которые включают перестановочное декодирование, декодирование Меггитта и пороговое декодирование;
алгебраические процедуры, основанные на более тонких свойствах алгебраической структуры некоторых кодов; они, по существу, используют решения систем алгебраических уравнений. Рассматриваются также следующие четыре больших класса алгоритмов декодирования древовидных кодов:
алгоритм Витерби (декодирование по максимуму правдоподобия);
алгоритмы последовательного декодирования; пороговое декодирование; табличное декодирование.
Информация о надежности (или так называемые мягкие решения) используется как для блоковых, так и для древовидных кодов. В большинстве алгоритмов декодирования древовидных кодов
эта информация используется непосредственно. Реализация мягких решений в блоковых кодах не так проста и обычно требует значительной модификации алгоритма.