ДЕКОДЕР С УПОРЯДОЧЕННОЙ СТАТИСТИКОЙ СИМВОЛОВ
ORDERED SYMBOL STATISTICS DECODER

Изобретение относится к технике связи и может использоваться при проектировании новых и модернизации существующих систем передачи дискретной информации.
Известны устройства восстановления стираний и исправления ошибок, использующие индексы достоверности символов (градации надежности символов) для повышения достоверности приема информации (см. Р. Морелос-Сарагоса. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. М., Техносфера, 2005, С.103,…,105; а также устройства по патентам РФ на изобретения №№2166235; 2209519; 2209520; 2256294, 2344556).
Кроме того, известны устройства декодирования по упорядоченным статистикам (см. Р. Морелос-Сарагоса. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. М., Техносфера, 2005, С.213,…,216).
Наиболее близким устройством такого же назначения является декодер с исправлением стираний (см. патент РФ на изобретения №2344556), содержащий блок приема, один выход которого через анализатор сигналов подключен к накопителю, а другой подключен к входу накопителя кодовой комбинации, выход которого подключен к первому входу блока исправления стираний, отличающийся тем, что введены коммутатор проверок, блок определения кластера, блок коррекции кластера, блок прямых координат, блок инвариантных координат и блок сравнения, выход которого подключен ко второму входу блока исправления стираний, при этом первый вход коммутатора проверок подключен к выходу накопителя, второй вход коммутатора проверок подключен к выходу накопителя кодовой комбинации, а выход подключен к одному из входов блока определения кластера, а так же к входу блока прямых координат, один выход которого через блок инвариантных координат подключен к третьему входу блока сравнения, второй вход которого подключен к выходу блока прямых координат, при этом первый выход блока определения кластера подключен к входу блока коррекции кластера, выход которого подключен к другому входу блока определения кластера, второй выход которого подключен к первому входу блока сравнения.
К недостаткам работы аналогов, в том числе и прототипа, предлагаемого декодера следует отнести не полное использование введенной в код избыточности из-за применения метрики Хэмминга без учета спектральных характеристик кода, когда декодер должен обработать все допустимые проверочные соотношения для коррекции принятого вектора. Это приводит к тому, что с увеличением кратности исправляемых кодом ошибок, сложность декодера приобретает экспоненциальный характер.
Технический результат - повышение достоверности приема информации. Для достижения технического результата в декодер с упорядоченной статистикой символов, содержащий блок приема, первый выход которого подключен к анализатору сигналов, а также накопитель, блок определения кластера и накопитель кодовой комбинации, один выход которого подключен к первому входу блока исправления стираний, отличающийся тем, что введены блок специальных оценок, блок специальных символов, блок упорядочения оценок, блок запрещенных комбинаций, блок эквивалентного кода, формирователь укороченного кода и блок корректирующего вектора, при этом второй выход блока приема подключен к входу блока специальных символов, один выход которого подключен к входу накопителя кодовой комбинации, а другой соединен с первым входом блока определения кластера, при этом второй вход этого блока подключен к одному выходу блока специальных оценок, тогда как другой выход этого блока подключен через последовательно соединенные накопитель и блок упорядочения оценок к первому входу блока эквивалентного кода, служебный выход которого подключен к входу блока запрещенных комбинаций, а выход этого блока подключен к служебному входу блока эквивалентного кода, выход которого подключен к второму входу блока исправления стираний, при этом второй вход блока эквивалентного кода через формирователь укороченного кода подключен к первому выходу блока корректирующего вектора, а один вход этого блока подключен к выходу блока определения кластера, тогда как другой вход блока корректирующего вектора подключен к другому выходу накопителя кодовой комбинации, а выход блока корректирующего вектора подключен к третьему входу блока исправления стираний.
На фиг.1 приведена структурная электрическая схема предложенного декодера с упорядоченной статистикой символов.
Декодер с упорядоченной статистикой символов содержит блок 1 приема, второй выход которого подключен к входу блока 2 специальных символов, один выход которого подключен к входу накопителя 3 кодовой комбинации, при этом первый выход блока 1 приема через анализатор 4 сигналов подключен к блоку 5 специальных оценок, тогда как другой выход блока 5 подключен через последовательно соединенные накопитель 6 и блок 7 упорядочения оценок к первому входу блока 8 эквивалентного кода, служебный выход которого подключен к входу блока 9 запрещенных комбинаций, а выход этого блока подключен к служебному входу блока 8 эквивалентного кода, при этом другой выход блока 2 специальных символов соединен с первым входом блока 10 определения кластера, второй вход которого подключен к одному выходу блока 5 специальных оценок, тогда как выход блока 10 определения кластера подключен к одному входу блоку 11 корректирующего вектора, первый выход которого подключен через формирователь 12 укороченного кода ко второму входу блока 8 эквивалентного кода, другой вход блока 11 корректирующего вектора подключен к другому выходу накопителя 3 кодовой комбинации, тогда как один выход накопителя 3 кодовой комбинации подключен к первому входу блока 13 исправления стираний, второй вход которого подключен к выходу блока 8 эквивалентного кода, а третий вход блока 13 исправления стираний подключен к выходу блока 11 корректирующего вектора.
k-f
<mrow><msubsup><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><mn>0</mn></mrow><mo>'</mo></msubsup></mrow>
<mrow><msubsup><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><mn>1</mn></mrow><mo>'</mo></msubsup></mrow>
<mrow><msubsup><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><msup><mn>2</mn><mi>f</mi></msup><mo>−</mo><mn>1</mn></mrow><mo>'</mo></msubsup></mrow>
<mrow><msubsup><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><mi>i</mi></mrow><mo>'</mo></msubsup></mrow>
Списочное декодирование блоковых кодов на основе выделения в кодовой комбинации номера кластера открывает принципиальную возможность сократить объем вычислений в достаточно эффективном алгоритме мягкого декодирования с использованием упорядоченной статистики. Его суть представлена на фиг.2. Разрядность номера кластера определяется параметром f, где 0≤f≤k, здесь k - число информационных разрядов систематического блокового кода С. Если f=0, то все разрешенные комбинации кода С входят в один кластер и их декодирование ничем не отличается от классического. Если f=k, то в кластер входит всего одна комбинация, поскольку номер кластера будет совпадать только с одной комбинацией, порождаемой источником сообщений. При f<k в кластер (в список) будет попадать ровно 2 комбинаций. Определив надежно номер кластера декодер формирует корректирующие вектора, каждый из которых соответствует только одному номеру кластера, т.е.
;
; …;
. Вычитая
из принятого вектора, можно получить пространство комбинаций укороченного кода, декодирование которых оказывается более эффективным во времени. Рассмотрим работу декодера на примере систематического кода Хэмминга (7, 4, 3).
Порождающая матрица кода имеет вид:
<mrow><mi>G</mi><mo>=</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow>
На передающей стороне на выходе кодера, например, при обработке информационного вектора вида 1001 образуется вектор избыточного кода вида:
исх
n=1001110.
2
исх
10
Установим, что за номер кластера принимаются два старших разряда комбинации, т.е. f=2. Так как они представлены в виде 10, то n принадлежит кластеру с номером 2. Осуществляя дополнительную защиту номера кластера, передатчик выкалывает последний символ кодовой комбинации и на его место устанавливает проверку четности символов номера кластера. Следовательно, в канал связи будет передан вектор вида
пер
V=1001111.
Декодер обрабатывает этот вектор, устанавливая в анализаторе сигналов 4 для каждого символа градацию надежности (индекс достоверности символа) в соответствии с выражением
<mrow><msub><mi>λ</mi><mi>i</mi></msub><mo stretchy="false">(</mo><mi>z</mi><mo stretchy="false">)</mo><mo>=</mo><mrow><mo>{</mo><mtable columnalign="left"><mtr><mtd><mrow><mo>⌊</mo><mrow><mfrac><mrow><msub><mi>λ</mi><mrow><mi>max</mi></mrow></msub></mrow><mrow><mrow><mo>|</mo><mrow><msqrt><mi>E</mi></msqrt></mrow><mo>|</mo></mrow><mo>⋅</mo><mi>ρ</mi></mrow></mfrac></mrow><mo>⌋</mo></mrow><mo>×</mo><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>,</mo><mtext> если </mtext><mrow><mo>|</mo><mtext>z</mtext><mo>|</mo></mrow><mo><</mo><mrow><mo>|</mo><mrow><msqrt><mi>E</mi></msqrt></mrow><mo>|</mo></mrow><mo>⋅</mo><mi>ρ</mi><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>λ</mi><mrow><mi>max</mi></mrow></msub><mo>,</mo><mtext>           если </mtext><mrow><mo>|</mo><mtext>z</mtext><mo>|</mo></mrow><mo>≥</mo><mrow><mo>|</mo><mrow><msqrt><mi>E</mi></msqrt></mrow><mo>|</mo></mrow><mo>⋅</mo><mi>ρ</mi><mo>.</mo></mtd></mtr></mtable></mrow></mrow>
где z - уровень принятого сигнала;
i
λ(z) - индекс достоверности символа (ИДС) в целочисленном формате;
<mrow><msqrt><mi>E</mi></msqrt></mrow>
- математическое ожидание сигнала, а Е - энергия сигнала, на бит;
ρ - интервал стирания и в общем случае 0≤ρ<1;
max
λ - принятое в устройстве максимально возможное значение ИДС. Значение ρ целесообразно принимать близким к 0,9.
max
i
<mrow><msqrt><mi>E</mi></msqrt></mrow>
Поскольку λ,
и ρ являются постоянными для выбранного режима работы приемника, то значения λ(z) в блоке 4 вырабатываются по линейному закону: чем ближе значение z к математическому ожиданию, тем выше НДС принятого символа.
max
i
Пусть ρ=0,9, а λ=7, тогда 0≤λ(z)≤6.
Пусть в результате обработки символов получен вектор совместно с ИДС вида
Данные в блоке 3
V<sub>пр</sub>
1
<u>1</u>
0
1
<u>0</u>
1
1
Данные в блоке 6
ИДС
7
2
7
6
3
7
7
пр
Для наглядности ошибочно принятые символы в принятом векторе V отмечены жирным курсивом с подчеркиванием.
пр
ук
ук
пр
ук
ук
ук
<mrow><msubsup><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><mi>i</mi></mrow><mo>'</mo></msubsup></mrow>
Если кластер вектора V идентифицирован верно, то возможна эффективная реализация перехода от кода С к укороченному коду С. Действительно, номер кластера определяет комбинацию первых f строк матрицы G. Это означает, что при временном удалении сочетания символов, отвечающих за подобную комбинацию, декодер должен обрабатывать комбинации, принадлежащие коду С, что приводит к сокращению объема вычислений. Следовательно, приняв вектор V, декодер проверяет выполнение четности для символов, определяющих номер кластера, и далее обрабатывает комбинацию укороченного (5, 2, 3) кода G, предварительно вычислив
. Матрица G, укороченного кода С приемнику известна априори, и для рассматриваемого примера она равна
<mrow><msub><mi>G</mi><mrow><mi>у</mi><mi>к</mi></mrow></msub><mo>=</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow>
пр
Поскольку в векторе V кластер зафиксирован ошибочно и условие четности не соблюдается, необходимо восстановить номер кластера, использую дополнительную защиту. Для восстановления номера кластера применяется процедура повышения (коррекции) ИДС, так как проверочный символ (младший разряд кодовой комбинации) принят надежно. Восстановление осуществляется на основе математических преобразований вида:
<mtable columnalign="left"><mtr><mtd><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>1</mn></msub><mo stretchy="false">)</mo><mover accent="true"><mo>⊕</mo><mo stretchy="true">¯</mo></mover><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>2</mn></msub><mo stretchy="false">)</mo><mo>=</mo><mrow><mo>[</mo><mrow><mfrac><mrow><msup><mi>e</mi><mrow><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>1</mn></msub><mo stretchy="false">)</mo></mrow></msup><mo>+</mo><msup><mi>e</mi><mrow><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>2</mn></msub><mo stretchy="false">)</mo></mrow></msup></mrow><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>1</mn></msub><mo stretchy="false">)</mo><mo>⋅</mo><mi>L</mi><mrow><mo>(</mo><mrow><msub><mi>d</mi><mn>2</mn></msub></mrow><mo>)</mo></mrow></mrow></msup></mrow></mfrac></mrow><mo>]</mo></mrow><mo>≈</mo></mtd></mtr><mtr><mtd><mo>≈</mo><mo stretchy="false">(</mo><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo>×</mo><mi>s</mi><mi>i</mi><mi>g</mi><mi>n</mi><mo stretchy="false">[</mo><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>1</mn></msub><mo stretchy="false">)</mo><mo stretchy="false">]</mo><mo>×</mo><mi>s</mi><mi>i</mi><mi>g</mi><mi>n</mi><mo stretchy="false">[</mo><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>2</mn></msub><mo stretchy="false">)</mo><mo stretchy="false">]</mo><mo>×</mo><mi>min</mi><mo stretchy="false">(</mo><mo>|</mo><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>1</mn></msub><mo stretchy="false">)</mo><mo>|</mo><mo>,</mo><mo>|</mo><mi>L</mi><mo stretchy="false">(</mo><msub><mi>d</mi><mn>2</mn></msub><mo stretchy="false">)</mo><mo>|</mo><mo stretchy="false">)</mo></mtd></mtr></mtable>
.
(см. Б. Скляр. Цифровая связь. Теоретические основы и практическое применение / Бернард Скляр - Изд. 2-е, испр. пер. с англ. - М.: Издательский дом "Вильямс", 2003. - С. - 506)
1
2
По сути, L(d) является сочетанием жесткого решения и ИДС символа, который подлежит коррекции, a L(d) является сочетанием жесткого решения и ИДС проверочного символа, на основании которого осуществляется коррекция (см. патент РФ на изобретения №2344556).
Тогда получаем:
<mrow><mtable><mtr><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mrow><mo>+</mo><mn>7</mn></mrow></mtd></mtr></mtable><mtext>    </mtext><mrow><mtable columnalign="left"><mtr><mtd><mtext>1</mtext></mtd></mtr><mtr><mtd><mo>+</mo><mtext>2</mtext></mtd></mtr></mtable><mo>|</mo></mrow><mtext>   </mtext><mtable><mtr><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mrow><mo>+</mo><mn>7</mn></mrow></mtd></mtr></mtable></mrow>
при этом жесткое решение, равное 1, заменяется на символ плюс, а жесткое решение 0 - на символ минус.
<mtable columnalign="left"><mtr><mtd><mo stretchy="false">[</mo><mo>+</mo><mn>2</mn><mo>+</mo><mn>0</mn><mo stretchy="false">]</mo><mover accent="true"><mo>⊕</mo><mo stretchy="true">¯</mo></mover><mo>+</mo><mn>7</mn><mo>=</mo><mo>−</mo><mn>2</mn></mtd></mtr><mtr><mtd><mo stretchy="false">[</mo><mo>+</mo><mn>7</mn><mo>+</mo><mn>0</mn><mo stretchy="false">]</mo><mover accent="true"><mo>⊕</mo><mo stretchy="true">¯</mo></mover><mo>+</mo><mn>7</mn><mo>=</mo><mo>−</mo><mn>7</mn></mtd></mtr></mtable>
1-й шаг итерации дает результат:
<mtable columnalign="left"><mtr><mtd><mo stretchy="false">[</mo><mo>+</mo><mn>2</mn><mo>−</mo><mn>7</mn><mo stretchy="false">]</mo><mover accent="true"><mo>⊕</mo><mo stretchy="true">¯</mo></mover><mo>+</mo><mn>7</mn><mo>=</mo><mo>+</mo><mn>5</mn></mtd></mtr><mtr><mtd><mo stretchy="false">[</mo><mo>+</mo><mn>7</mn><mo>−</mo><mn>2</mn><mo stretchy="false">]</mo><mover accent="true"><mo>⊕</mo><mo stretchy="true">¯</mo></mover><mo>+</mo><mn>7</mn><mo>=</mo><mo>−</mo><mn>5</mn></mtd></mtr></mtable>
2-й шаг итерации обеспечивает:
Результат коррекции символов принимает вид:
<mrow><mo>+</mo><mn>12</mn><mtext>    </mtext><mrow><mrow><mtext>-3</mtext></mrow><mo>|</mo></mrow><mtext>  </mtext><mo>+</mo><mtext>7</mtext></mrow>
.
Таким образом, осуществляется восстановление ошибочно принятого символа кластера. В результате приемник фиксирует достоверно кластер с номером 2, после чего формирует корректирующий вектор, умножая первые две строки порождающей матрицы G на восстановленный номер кластера.
<mrow><msub><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><mn>2</mn></mrow></msub><mo>=</mo><mn>10</mn><mo>×</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow><mo>=</mo><mn>1000101</mn></mrow>
В результате будет получен вектор
кор2
Р=1000101
кор2
пр
<mrow><msubsup><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><mn>2</mn></mrow><mo>'</mo></msubsup><mo>=</mo><mn>00101</mn></mrow>
Далее декодер временно исключает символы номера кластера из вектора Р и полученный вектор
складывает с соответствующими разрядами принятого вектора V.
В итоге образуется вектор укороченного кода W, у которого сохранились ИДС, полученные в ходе демодуляции. Результаты преобразований показаны ниже. При этом младшему разряду этого вектора искусственно присваивается наиболее низкий ИДС (в нашем случае 0).
Данные в блоке 8
V<sub>пр</sub>
0
1
0
1
1
Данные в блоке 12
<maths num="18"><math display="block"><mrow><msubsup><mi>Р</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi><mn>2</mn></mrow><mo>'</mo></msubsup></mrow></math><img file="00000018.tif" he="7" wi="9" img-content="undefined" img-format="tif" /></maths>
0
0
1
0
1
Данные в блоке 11
W
0
1
1
1
0
Данные в блоке 6
ИДС
7
6
3
7
<b><<0>></b>
После выполнения указанных шагов декодер выполняется ранжирование вектора в соответствии с оценками для вектора W. Последовательность шагов по выполнению подстановки символов показана ниже.
Исходная нумерация символов
1
2
3
4
5
Содержание блока 11
W
0
1
1
1
0
Содержание блока 6
ИДС
7
6
3
7
<b><<0>></b>
Новая нумерация символов в блоке 7
1
4
2
3
5
Данные в блоке 8
0
1
1
1
0
Т
В результате образовался информационный вектор укороченного кода 01 (1 и 4 позиции новой нумерации символов в блоке 7). На основании выполненной подстановки формируется перестановочная матрица М и ее транспонированное представление М вида:
<mrow><mi>М</mi><mo>=</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow>
<mrow><msup><mi>М</mi><mi>Т</mi></msup><mo>=</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow>
Учитывая это, декодер выполняет перестановки столбцов порождающей матрицы укороченного кода:
<mrow><msubsup><mi>G</mi><mrow><mi>у</mi><mi>к</mi></mrow><mo>'</mo></msubsup><mo>=</mo><msub><mi>G</mi><mrow><mi>у</mi><mi>к</mi></mrow></msub><mo>⋅</mo><mi>М</mi><mo>=</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mi>G</mi><mrow><mi>у</mi><mi>к</mi></mrow><mo>'</mo></msubsup></mrow>
<mrow><msubsup><mi>G</mi><mrow><mi>у</mi><mi>к</mi></mrow><mo>'</mo></msubsup></mrow>
ук
Новая нумерация столбцов принимает вид 14235. Для оценки возможности создания эквивалентного кода необходимо оценить невырожденность матрицы
. Это действие выполняется только для первых двух столбцов матрицы
, по которым оценивается возможность получения единичной матрицы, что вносит свой вклад в снижение вычислительных затрат. Эта операция с некоторой долей вероятности может закончиться неудачно. Целесообразно неудачные исходы оценить заранее и свести их в некоторую таблицу. Так из вида порождающей матрицы G становится ясно, что перестановка на первые k мест второго и пятого столбца образует чисто нулевую строку и эквивалентный код получить в этом случае невозможно (определитель такой квадратной матрицы будет равен нулю). К аналогичному результату приводят сочетания пятого и второго столбца, первого и третьего столбца, а также третьего и первого столбца. Например, в случае установки на первое и второе место второго и пятого столбца получится матрица
<mrow><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow>
Следовательно, запрещенными перестановками будут являться такие перестановки, которые в новой нумерации в блоке 7 на первых позициях будут иметь значения 25, 52, 13, 31, например, при перестановке вид 31542. Из общего числа комбинаций подобные перестановки составляют всего 20%. Таким образом, в остальных случаях образование эквивалентного кода возможно. Получив комбинацию вида 31542 блок 8 может перейти к комбинации 35142 при условии, что символ на третей позиции принят с достаточно высоким ИДС.
<mrow><msubsup><mi>G</mi><mrow><mi>у</mi><mi>к</mi></mrow><mo>'</mo></msubsup></mrow>
<mrow><msubsup><mi>G</mi><mrow><mi>у</mi><mi>к</mi></mrow><mo>'</mo></msubsup></mrow>
Получив эквивалентную матрицу
, декодер сверяет номера первых двух столбцов с номерами запрещенных перестановок. Так как комбинация 14235 не входит в число запрещенных, декодер без потери времени на анализ и итеративные преобразования строк осуществляет дальнейшие действия: определяя матрицу
в систематической форме.
Порождающая матрица принимает вида
<mrow><msubsup><mi>G</mi><mrow><mi>с</mi><mi>и</mi><mi>с</mi></mrow><mo>'</mo></msubsup><mo>=</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mi>G</mi><mrow><mi>с</mi><mi>и</mi><mi>с</mi></mrow><mo>'</mo></msubsup></mrow>
Умножая вектор 01 на новую порождающую матрицу
, декодер получает комбинацию эквивалентного кода.
<mrow><mn>01</mn><mo>×</mo><mrow><mo>(</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>)</mo></mrow><mo>=</mo><mn>01101</mn></mrow>
Таким образом, получаем:
Вектор с ошибками
0
1
1
1
0
Комбинация эквивалентного кода
0
1
1
0
1
Вектор ошибок
0
0
0
1
1
Вектор ошибок с обратными перестановками
0
0
1
0
1
Полученный результат свидетельствует о результативности алгоритма. Вектор ошибок содержит ошибку в младшем разряде, которая изначально определялась передатчиком как условие защиты номера кластера от искажений, а также еще одну ошибку в четвертом разряде.
<mrow><msubsup><mi>V</mi><mrow><mi>п</mi><mi>е</mi><mi>р</mi></mrow><mo>'</mo></msubsup></mrow>
<mrow><msubsup><mi>V</mi><mi>е</mi><mo>'</mo></msubsup><mo>⊕</mo><msubsup><mi>P</mi><mrow><mi>к</mi><mi>о</mi><mi>р</mi></mrow><mo>'</mo></msubsup><mo>⊕</mo><mi>W</mi><mo>=</mo><msubsup><mi>V</mi><mrow><mi>п</mi><mi>е</mi><mi>р</mi></mrow><mo>'</mo></msubsup></mrow>
е
пер
Для получения вектора
необходимо сложить три вектора: вектор ошибок V, корректирующий вектор P и вектор укороченного кода W:
. После возвращения символов номера кластера на свои позиции декодер получает вектор V.
<mrow><msubsup><mi>V</mi><mrow><mi>п</mi><mi>е</mi><mi>р</mi></mrow><mo>'</mo></msubsup><mo>=</mo><mn>1001110</mn></mrow>
Полученный вектор
свидетельствует о том, что коррекция ошибок осуществлена верно.
Таким образом, предложенный декодер способен исправить ошибки, кратность которых превосходит аналогичный показатель, определяемый метрикой Хэмминга. Кроме того, переход к укороченному коду и применение таблицы запрещенных перестановок снижаю вычислительные затраты при декодировании подобных кодов.