Декодирование обобщенных каскадных кодов с внутренними полярными кодами

КОДИРОВАНИЕ И ПЕРЕДАЧА ИНФОРМАЦИИ X

УДК 519.725.2

ДЕКОДИРОВАНИЕ ОБОБЩЕННЫХ КАСКАДНЫХ КОДОВ С ВНУТРЕННИМИ ПОЛЯРНЫМИ КОДАМИ

П. К. Семенов1,

ассистент

Санкт-Петербургский государственный политехнический университет

Приводится алгоритм декодирования для обобщенных каскадных кодов с внутренними полярными кодами. Предлагаемый декодер является списочным и основан на описанных в работе структурах данных — деревьях решений для внутреннего и для всего каскадного кодов. Для этих структур данных в работе рассматривается способ эффективной реализации. Предлагаемый в работе алгоритм декодирования позволяет достичь лучшей корректирующей способности по сравнению с традиционным декодером обобщенных каскадных кодов и декодером по максимуму правдоподобия для полярных кодов.

Ключевые слова — обобщенные каскадные коды, декодирование, полярные коды.

Введение

В работе [1] были предложены полярные коды и доказано, что они достигают пропускной способности симметричных каналов без памяти с двоичным входом. Однако на практике полярные коды при использовании последовательного декодера [1] обеспечивают большую вероятность ошибки декодирования, чем классические коды. В статье [2] была предложена конструкция обобщенных каскадных кодов (ОКК) с внутренними полярными кодами, позволяющая обеспечить меньшую вероятность ошибки декодирования по сравнению с низкоплотностными кодами. При этом использовался многошаговый декодер, имеющий критическую зависимость от оценок информационных символов с предшествующих шагов: ошибки на предыдущих шагах не могут быть исправлены на последующих, что приводит к их катастрофическому распространению.

В данной работе предлагается алгоритм декодирования для ОКК с внутренними полярными кодами, основанный на списочном декодировании внешних кодов. Главным отличием от стандартного декодера ОКК является введение дерева решений, связывающего списочное декодирование внешних кодов со списочным декодированием внутренних кодов. Таким образом, пред-

1 Научный руководитель — кандидат технических наук, доцент Санкт-Петербургского государственного политехнического университета П. В. Трифонов.

лагаемый алгоритм можно рассматривать как обобщение списочного декодера Тала — Варди [3] полярных кодов, который позволяет достичь корректирующей способности декодера по максимуму правдоподобия при достаточно небольшой длине списка. С другой стороны, метод деревьев решений может быть использован и для случая других внутренних кодов. Основным требованием является лишь существование для них декодера, последовательно оценивающего значения информационных символов. Для полярных кодов таким декодером выступает метод последовательного исключения [1] с некоторыми модификациями [4].

Обобщенные каскадные коды

Обобщенные каскадные коды [5, 6] основаны на семействе внешних (ограничимся случаем линейных внешних кодов) N К, О^-кодов ЛЬ над 0 £ £ < I, и внутреннем (п, £0, ^0)-коде Б0, который рекурсивно разбивается на семейства непересекающихся равномощных подкодов в соответствии с правилами

2т0 -1 2т£ -1

В0 = и в1,1 ’ в£, 1 = и Б1+1, у2т£ + £’ 0 £ 1 < 2=0 ’

у=0 £=0

где ВЬ  — некоторые его (п, £Ь, й^-подкоды, а индекс ] обозначает естественную нумерацию «слева направо» ветвей в Ь-м уровне дерева разбиения (см. примеры на рис. 1, а, б).

V V V V V V V

Рис. 1. Кодирование ОКК: а — внешними кодами; б — с помощью внутреннего кода

І’

На размерность подкодов на у-м уровне раз

1-1

биения накладывается ограничение ку = ^т,

£=1

0 £ у £ I; таким образом, все коды В1  последнего, 1-го уровня разбиения имеют нулевую размерность и состоят из единственного фиксированного кодового слова внутреннего кода Во. Кодирование данных проводится следующим образом.

1. Данные кодируются внешними кодами: пусть

(с0, 0, —, с0, N - 1), —, (с1 - 1, 0, —, С1 - 1, N - 1) полученные при этом кодовые слова.

2. Для всех у = 0 ... N - 1 символы с£, у е &¥(

0 £ £ < I преобразуются в кортежи длин тЬ с ис пользованием некоторых фиксированных базисов 0¥[(п'11. Эти кортежи объединяются в вектор длины &0, который однозначно задает путь в иерархии разбиения внутреннего кода В0 (см. рис. 1).

В примере разбиения внутреннего (4, 3, 2)-кода с одной проверкой на четность для обобщенного каскадного кода с двумя внешними кодами (рис. 2): Л0 — (8, 1, 8)-код с повторениями над GF(4) иЛ1 — расширенный (8, 4, 4)-код Хэмминга над GF(2).

Если все используемые коды Л и ВЬ  являютЬ Ь,}

ся линейными, то множество получаемых таким образом векторов образует линейный блоковый

1-1

иЫ’ ^К1т1 ’ шт

і=0

-код. Стоит

отметить, что при разбиении внутреннего кода элементы одного семейства являются различными смежными классами одного и того же подко-да в силу выбора внутреннего кода линейным.

В0 : {0000,0011,0101,0110,1001,1010,1100,1111}

В1 , : {0000, 1111} {0011, 1100} {0101, 1010} {0110, 1001}

, 0 Л 1 0 /\ 1 0 /\ 1 0 /\ 1

В2, і: {0000} {1111} {0011} {1100} {0101} {1010} {0110} {1001}  Рис. 2. Разбиение внутреннего кода

И, кроме того, для разбиения на рис. 2 подкоды В2 у имеют бесконечное минимальное расстояние: В1 у - 4, а В0 - 2.

Многие коды с наилучшими параметрами были получены как обобщенные каскадные [5].

Полярные коды на основе ядра Арикана

Назовем ядром Арикана матрицу О =

а через Gs обозначим ее в-ю кронекеровскую степень — матрицу размерности 2е х 2в. Пусть В^ — это (2в х 2в)-матрица такой перестановки для вектора длины 2в, что номер новой позиции і-го элемента получается как обратная запись представленного в виде в-битной последовательности числа і. Например, 4 = (1 0 0) ^ (0 0 1) = 1, 3 = (0 1 1) ^ ^ (1 1 0) = 6. Будем обозначать скалярный канал со входом и и выходом у как Ж(у\и), отождествляя его с функцией плотности условной вероятности выходного символа. В случае передачи последовательности данных и°-1 =(о п ••• и^-\) размера N через канал Ж(у\и) будем рассматривать эквивалентный векторный канал

У-11 и*-1 ) = [ку | иі )

і=0

о-

с выходом Уо 1 =(о Уі • Уо-1) (рис. 3, а). В статье [1] был предложен метод поляризации симметричного канала ((-11 и0-11 без памяти с двоичным входом: предполагается, что N = 2е и через канал передается преобразован-

Метод заклю-,N-1'!

ный блок данных и* 1В*О чается в представлении

0-1 I 0

К У 0 1 и С

как

совокупности Ж°{жЫ'уЫ 1’ и0 11щ|’0££<< двоичных каналов (рис. 3, б), которая обладает следующими свойствами.

Рис. 3. Эквивалентные представления канала: а — векторный канал Ж-; б — эквивалентные подканалы (пунктирная линия озна-

чает достоверную передачу через канал)

1. Эквивалентность W и W: суммарная про-

N-1

пускная способность ЕcfwN^) равна C(W) при

i=0

,N-1

ui- 1 I ui)

условии, что для каждого ЖЫ (у° известны точные значения информационных символов и0-1 (см. рис. 3, б).

2. Асимптотическая поляризация каналов из Ж: при N ^ да относительная доля жЫ) в Ж таких, что С^жО(£) 1’ стремится к С(Ж), а про-

пускная способность остальных N(1 - С(Ж)) каналов стремится к нулю.

Поляризационный эффект достигается применением невырожденного преобразования BNGs к данным. И, таким образом, поляризующее преобразование канала Ж2Ы (о°-11 и2°-1| основано на поляризации векторных каналов меньшей размерности (-1|и0-1)’ £ = Ы’О’Ы’...’1.

Эта декомпозиция для плотностей Жо^ (у°-1’ и0-11 щ) вероятностей выражается как [1]

ЖОУ1’ и0£-11 Щ2£ ) =

= 22 ^ ЖО^(уЫ 1’ и0’е1  и0’о1 1 и2£  щ2£+1 )х щ2£+1

х w^i1, u0i011 U2i+i);

(2i+l) y2N -1 u2i

2N

Уо

, u0i h

2i+1

-1WN No

u0i e е u2i o I u2i е u2i+1 )x

XWN (yNN

,2N-1 u2i-1 I u

u0, o I u2i+1

где и0іе1 и и0іо1 обозначают компоненты вектора и0і-1 только с четными и нечетными номерами соответственно. Таким образом, вероятности

передаваемых битов в каналах (С0_ 1, и0-11 и

оцениваются через рекуррентные формулы

При N ^ да каналы Ж00) будут либо абсолютно без шума, либо абсолютно ненадежными. Поэтому информационные символы иі, передаваемые по каналам плохого качества, можно считать всегда фиксированными («замороженными»). Если сопоставить і-ю строку матрицы BNGв каналу Ліи У N-1 „і-1 '

ЖО'ДУо ( и0 | щ], то г наиболее надежным ка-

налам из Ж соответствует линейный код длины 2е и размерности г, называемый полярным кодом. В итоге, чтобы задать полярный код порядка в, достаточно указать множество Л индексов неиспользуемых строк матрицы Gs.

SCDecoder(s, A):

1. for i ^ 0 to 2s - 1 do

2. if i є A then u; ^ 0

З.

else ui =

0,

И#(-1, Ц-Чо

Wii-1, u0-111

>1

1, в противном случае

4. return uN 1

Рис. 4. Последовательный декодер Арикана полярных кодов

Был предложен [1] последовательный метод декодирования полярных кодов — алгоритм последовательного исключения (рис. 4). Этот алгоритм обладает существенным недостатком: при неверном оценивании информационного символа иь все последующие компоненты и, ] = Ь + 1, ..., (2в - 1) вектора иЫ-1, вероятно, также будут оценены ошибочно.

Обобщенные каскадные коды с внутренними полярными кодами

Несмотря на хорошие асимптотические свойства, на практически значимых длинах (~1000) полярные коды проигрывают классическим кодам, так как вероятности ошибок в эквивалентных подканалах Ж^) остаются достаточно большими. Использование внешних кодов позволяет серьезно улучшить корректирующую способность полярных кодов [2].

Рассмотрим ОКК С с 21 внешними кодами ЛЬ над GF(2) длины т (возможно (т, 0)-кодов с бесконечным минимальным расстоянием) и внутренним полярным (21, 21)-кодом В00 со следующим разбиением: В0 = В1 0 и В11,

В’ 1 = и В£+1’ у-2;+г ’ 0 £ 1 < 2 ’

£=0

где ВЬ  состоит из таких кодовых слов В0, для которых первые Ь информационных символов совпадают с маркерами пути до вершины ВЬ  (для I = 1 пример приведен на рис. 5). Таким образом, разбиение является идеально сбалансированным бинарным деревом и совпадает со схемой кодирования данных ядром Арикана порядка I. Стоит отметить, что после процедуры кодирования таким кодом получается т кодовых слов полярного (21, 21)-кода. В работе [2] был предложен метод, позволяющий синтезировать коды из представленного семейства исходя из правила равенства вероятностей ошибки декодирования внешних кодов в им соответствующих каналах из Ж при заданном отношении сигнал/шум.

B0 : {00, 10, 11, 01}

0

В

{00, 11} 0 /\ 1

{10, 01} 0 /\ 1

В : {00} {11} {10}

2, ,

{01}

Рис. 5. Разбиение ядра Арикана порядка 1

И хотя рассмотренная каскадная конструкция позволяет уменьшить негативный эффект от слабой поляризации эквивалентных подканалов для коротких полярных кодов, она не лишена главного недостатка алгоритмов последовательного декодирования: результат каждого шага декодирования полностью зависит от достоверности оценок информационных битов с предшествующих шагов.

Списочный декодер ОКК с внутренними полярными кодами

Одним из способов преодоления проблемы критической зависимости от оценок информационных символов с предшествующих шагов является списочное декодирование, позволяющее одновременно отслеживать несколько вариантов таких оценок. Дерево всевозможных решений для полярного (4, 3)-кода представлено на рис. 6, а. Будем называть его деревом решений внутреннего кода (ДВК). Для того чтобы ограничить рост числа его листьев, необходимо на каждом шаге ранжировать текущие ветви по степени надежности размещенных в их листьях оценок и отсекать

а)

б)

из 0 1 0 10101

0 10 1

Рис. 6. Дерево решений для полярного (4, 3)-кода: а — идеальное дерево решений; б — выбор только двух ветвей на каждом шаге

те, что соответствуют наименее надежным вариантам. В качестве меры надежности оценок иЬ

выступают величины Жо^уЫ-1’ и0-11 .Таким образом, все вычисления в списочном декодере необходимо проводить напрямую с вероятностями, что приводит к быстрому убыванию вычисляемых характеристик к нулю. Предлагается [3] на каждом шаге нормировать вероятности на их максимум по всем ветвям. Такой подход позволяет их дальнейшее использование при декодировании внешних кодов в метрике Евклида в каскадной конструкции с внутренними полярными кодами. Но его существенными недостатками являются использование вычислений с плавающей запятой и операций деления, невозможность получить истинные вероятности значений битов, что накладывает ограничение на используемые внешние коды. В связи с этим было показано [4], каким образом необходимо модифицировать алгоритм последовательного исключения, чтобы он вычислял величины logwN)^УЫ-1’ и0-110 и logwN) У-1 ’ и0-111 для Ь-го информационного

символа. Назовем этот алгоритм как LogSCDeco-йег(в, Л, Ь).

Основная идея алгоритма LogSCDecodeг(s, Л, Ь) заключается в решении следующей задачи: имея

1си Ц) = ^жО? У-1’ (£-1  и0£-1 £

1ои(^ ) = 1оИжі0і)(у0С

,20-1 2і-1

’ и0, о

для і = 0,1, необходимо вычислить

ІОИ ж2(С0)(у0° 1> „0і 11 и2і ) = !°ё 2 (а0Ъ0 + «1*1 ) =

= 1ои

1 е1оё

2 2

Эта проблема может быть решена приближенно. Так, не ограничивая общности, будем считать, что log(a0) + ^(&0) > log(a1) + log(fc1). Тогда искомое выражение можно представить как

1о£ ж$)(у0° 1. „0і 11 и2і )=

= 1оИ 2 + 1оя («0) + Іоя (&0) +

1og(l + е

,1о2

В случае, когда ^(а^ + ^(^) - ^(а0) - ^(60) мало (например, меньше # = -70),

1^1 + е 1с(<11 )+1с(&1 )-М“0 )-1о#0))» 0.

В итоге аппроксимация для формулы (1) представляется в следующем виде:

и

0

и

0

0

и

0

и

1

и

1

и

2

и

2

и

3

logwi0i)(y0N-i,u0i-i IU2i

log2 + log(a0) + log(b0), с <-q

log2 + log(a.0) + log(bo) + log( + ec), -q < c < q, log2 + log(ai) + log(?i), c > q

где с = log(a1) + log(fe1) - log(a0) - log(b0).

Пусть теперь L — параметр длины списка декодера обобщенных каскадных кодов с внутренними полярными кодами: на каждом шаге декодирования в ДВК оставляются только L наиболее надежных ветвей (рис. 6, б — отсекаемые ветви обозначены пунктирной линией). В данной работе надежность ветвей предлагается оценивать с помощью списочных декодеров внешних кодов

\Ш—1

Ai. Пусть xi =

j=0

это кодовое слово кода

Ai. Тогда (zj, o, j l, •••, 2j, I - i) = (x0, j’ xi, p •••, xi - 1, j x x B^Gs является кодовым словом внутреннего

полярного тривиального (2l, 21)-кода Bo. Таким образом, чтобы получить оценку кодового слова внешнего кода At, необходимо знать оценки i-х информационных символов всех m внутренних кодов. Пусть известны логарифмические отношения правдоподобия LLRj, 0 < j < m оценок

i-х информационных символов всех внутренних кодов. Тогда с помощью некоторой процедуры ListDecode(Ai, (LLRo, LLRV ..., LLRm - i)) списочного декодирования внешнего кода Ai может быть получен список List его кодовых слов. На основе списка List определяется как надежность ветвей, так и решения о возможных значениях информационных символов для внутренних полярных кодов. Будем называть структуру данных, сохраняющую списки кодовых слов внешних кодов, деревом решений ОКК (ДОКК). Его пример представлен на рис. 7.

Дерево решений ОКК однозначно задает и ДВК. Будем называть i-й проекцией ДОКК дерево, получаемое при удалении размещенных в узлах кодовых слов всех символов, кроме i-го (см. рис. 7). Проекции соответствуют возможным значениям при списочном декодировании полярного кода с помощью решений декодера внешних кодов. В целях исключения избыточности каждая ветвь ДВК соответствует какому-то набору ветвей ДОКК. Чтобы установить такое соответствие, требуется проводить идентификацию узлов в ДОКК. Для узлов на i-м уровне следует воспользоваться следующими способами:

1) каждому узлу v может быть поставлена в соответствие пара чисел (b, t), где b — это номер родительской ветви в предшествующем уровне, а t — это номер ее потомка, соответствующего узлу v;

2) каждому узлу v может быть поставлено в соответствие число t, равное номеру узла в i-м уровне при их нумерации «слева направо», что соответствует естественному перечислению листьев в последнем уровне дерева.

Совместное использование способов 1 и 2 позволяет при удалении каких-то ветвей в дереве единообразно перенумеровывать оставшиеся как

0 ... n - 1 без каких-либо пропусков на всех шагах. Возможны и другие способы реализации ДОКК, но перенумерация ветвей при операциях вставки и удаления листьев представляется наиболее удобной. Для примера на рис. 8 для всех ветвей деревьев-проекций приведены наборы им соответствующих номеров ветвей текущего ДОКК. Удаление ветви в ДОКК приводит к изменениям во всех деревьях внутренних кодов. На рис. 8 показан пример таких изменений (удаляемая ветвь в ДОКК и соответствующие изменения в ДВК обозначены зеленым цветом).

Дерево решений ОКК как структура данных должна поддерживать операции Split и Prune:

0110

0110

1100 0000

/О /ч 0011 1010 1010 0000

О l 2 З

1100 0000

Л /ч 0011 1010 1010 0000 0 12 3

А

1О

Л К 0 110

{О} {1} {2} {З}

Л

1О

І I

О

Л

О О 1 О

{0,1} {2,3} {0,1,2} {3}

1

О

Л 1 0

{О} {1,2,З}

А 1 0

/ к

0 110

{0} {1} {2} {3}

А 10 0

І і А

0 0 10

{0,1} {2,3} {0,1,2} {3} {0} {1,2,3}

1

О

А 1 0

Рис. 7. Промежуточное ДОКК с внутренними полярными кодами

Рис. 8. Изменения в ДВК при удалении ветви в ДОКК

1

GCCDecodeг(L):

1. Рог Ь = 0 1о 21 - 1 ^

2. Рог ветвь с номером 6 в дереве решений ОКК ^

3. Рог у = 0 1о т - 1 ^

4.

5.

6. 7.

9.

logPr Aa=0)> logPr A.

ДЬ).

logSCDecoder

LLRt = logPr (A = l) — logPr ( xf\ = o), 0 < t < m List = ListDecode^Ai, (LLRo, LLRi,..., LLRm—i)) For кодовое слово ct в List do

j1’ ct, r =1

r=o [—1> ct, r = 0

Split

m—1

4, t = E LLRr

10. PruneVL, |mb, t}

11. return ветви дерева решений ОКК

Рис. 9. Списочный декодер ОКК с внутренними полярными кодами

1) операция Split(i, b, List) добавляет элементы списка List в качестве потомков узлу под номером b в i-м уровне дерева;

2) операция Prune(L, M): пусть % — переста-

новка, соответствующая упорядочиванию списка M из p вещественных чисел по убыванию, причем p равно текущему числу ветвей в дереве. Тогда Prune удаляет в нем j-ю ветвь, если %(j) > L при условии начала нумерации в M с нуля.

В целях наглядности общего алгоритма декодирования будем считать, что обновление ДВК при изменениях в дереве решений ОКК происходит в процедурах Split и Prune. На рис. 9 представлен общий алгоритм списочного декодирования. В нем предполагается, что все ДВК являются проекциями ДОКК.

В строке 4 алгоритма величина я(ь) означает i-й информационный символ при условии, что в качестве оценок ему предшествующих символов были выбраны расположенные в ветви b j-го ДВК. Оценка реализации величины а.6- проводится с помощью процедуры LogSCDecoder, вызываемой с дополнительным параметром b, определяющим, какая ветвь j-го ДВК была выбрана в качестве оценок предшествующих информационных символов.

Алгоритм GCCDecoder при L = 1 вырождается в традиционный декодер ОКК. Кроме того, процедура оценивания надежности ветвей ДОКК (строки 7, 8 на рис. 9) может быть параметризована. Стоит отметить, что итоговая корректирующая способность, обеспечиваемая GCCDecoder, напрямую зависит от выбора метода списочного декодирования внешних кодов. Например, для коротких линейных кодов в качестве такового могут быть:

1) декодер по максимуму правдоподобия, возвращающий список из кодовых слов с наибольшим правдоподобием;

2) декодер Ъох-ап^та^И [7];

3) декодер порядковых статистик [8].

Вычислительная сложность алгоритма GCC-

Decodeг равна О^ • 1(т  21 + ф(т))) при фиксированном размере выхода процедуры LьstDecode, где I — это порядок внутреннего полярного кода, т — длина внешнего кода, а ф(т) — это функция вычислительной сложности декодирования внешних кодов. Таким образом, сложность всего алгоритма существенным образом зависит от сложности списочного декодера внешних кодов.

Для оценки объема используемой памяти уже необходимо знать максимальный размер Lm списка, выдаваемого процедурой LьstDecode списочного декодирования внешних кодов. Тогда число ветвей в ДОКК не превосходит величины Lm • L. И, следовательно, в целях быстродействия можно использовать массив флагов, указывающих, какие элементы набора из Lm • L ветвей являются активными в текущий момент. Соответственно, число ветвей ДВК никогда не превосходит 2L. Таким образом, размер требуемой памяти для алгоритма равен О^т • L • I • т).

Численные результаты

Согласно процедуре [2], был получен обобщенный каскадный (1016, 508)-код ^ состоящий из 8 внешних БЧХ-кодов длины 127 с минимальными расстояниями 0, 30, 43, 8, 47, 9, 12, 3 и внутреннего полярного кода порядка 3. При имитационном моделировании код C был продекодирован представленным декодером с размером списка L = 1, 2, 4 (рис. 10). В результате был достигнут

FER

10

10-2

10

10

(8*127,508), L = 1 (8*127,508), L = 2 (8*127,508), L = 4 (1024,512)-polar, L = 32

0,5

1

1,5 2

SNR, дБ

Рис. 10. Зависимость вероятности ошибки декодирования от отношения сигнал/шум

У KOДИPOBAHИE И ПEPEAAЧA ИHФOPMAЦИИ /

существенный выигрыш по сравнению с алгоритмом Тала — Варди [3] списочного декодирования полярного (1024, 512)-кода, который, как было показано [3], при длине списка Ь = 32 приближается к корректирующей способности по максимуму правдоподобия.

Заключение

В работе представлен алгоритм списочного декодирования обобщенных каскадных кодов с вну-

тренними полярными кодами, позволяющий улучшить корректирующую способность по сравнению с традиционным декодером ОКК.

Данное исследование было выполнено в рамках работ по госконтракту 07.514.11.4101, исполняемому в рамках ФЦП «Исследования и разработки по приоритетным направлениям развития научно-технологического комплекса РФ на 20072013 годы» при финансовой поддержке Министерства образования и науки Российской Федерации.

Литература

1. Arikan E. Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels // IEEE Transactions on Information Theory. 2009. N 7(55). P. 3051-3073.

2. Trifonov P., Semenov P. Generalized Concatenated Codes Based on Polar codes // Proc. of IEEE Intern. Symp. on Wireless Communication Systems. 2011. P. 442-446.

3. Tal I., Vardy A. List decoding of polar codes // Proc. of the IEEE Intern. Symp. on Information Theory (ISIT).

2011. P. 1-5.

4. Семенов П. Практические аспекты алгоритма Тала — Варди списочного декодирования полярных кодов // Научно-технические ведомости СПбГПУ.

Информатика. Телекоммуникации. Управление.

2012. № 4(152). С. 40-44.

5. Зиновьев В. А. Обобщенные каскадные коды // Проблемы передачи информации. 1976. № 1. С. 5-15.

6. Bossert M. Channel coding for telecommunications. — Wiley, 1999. — 512 p.

7. Valembois A., Fossorier M. Box and match techniques applied to soft-decision decoding // IEEE Transactions on Information Theory. 2004. N 5. P. 796-810.

8. Fossorier M., Lin S. Soft-decision decoding of linear block codes based on ordered statistics // IEEE Transactions on Information Theory. 1995. N 5. P. 13791396.