Национальный исследовательский университет "Высшая Школа Экономики"
Опубликован: 19.11.2012 | Доступ: свободный | Студентов: 12623 / 7806 | Длительность: 29:54:00
Специальности: Менеджер, Преподаватель
Лекция 7:

Передача информации

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

Декодирование линейного кода по синдрому

Путь Н- матрица размера  (п-к) \times п и ранга (п-к) над полем GF(2). Эта матрица задает линейное отображение B^n \stackel{H} B^{n-k} пространства В^n в пространство В^{n-k} по формуле у=Нх. Ядро этого линейного отображения или множество решений уравнения Hх=0, образующее подпространство пространства В^n, является линейным кодом. Можно рассмотреть разбиение пространства B^n на классы равнообразности. В один класс входят все элементы B^n, которые при отображении В^n \stackel{H} B^{n-k} переходят в один и тот же элемент пространства B^{n-k}. Элемент пространства B^{n-k}, в который переходят все элементы одного класса, называется синдромом. Pис.7.8 иллюстрирует разбиение пространства B^n на классы равнообразности.

Отображение В^n\stackel{H} B^{n-k} является отображением на все пространство B^{n-k}. Для систематической матрицы H это практически очевидно. Действительно, для любого yB^{n-k} можно найти (построить) xB^n, такой, что y=Hx.

Разбиение пространства Bn на классы равнообразности

Рис. 7.8. Разбиение пространства Bn на классы равнообразности

Произведение Hx, x \in B^n называется синдромом [29], [33]. Фактически, синдромом вектора x\in B^n является образ этого вектора при отображении -В^n \stackrel{H} B^{n-k}. Все векторы x \in B^n, имеющие один синдром, образуют класс. Так как синдром s = Hx \in B^{n-k} имеет размерность n-k, всего существует 2^{n-k} классов (если проверочная матрица имеет ранг n-k, в частности, если матрица H имеет систематический вид). Из определения линейного кода следует, что класс, которому соответствует нулевой синдром, является кодом C. Каждый класс C_i, отличный от кода, порождается "сдвигом" C_i =C+a_i кода C на один из векторов a_i класса C_i. Действительно, если y \in C_i ., то есть Hy = s_i, Ha_i =s_i, тогда H(y-a_i)=0 и, следовательно, y-a_i =c \in C и y=a_i+c, где c \in C - кодовое слово. Таким образом, любой некодовый вектор, имеющий синдром s \ne 0, можно представить в виде суммы кодового вектора и вектора, имеющего синдром s. Представление такого вида не является единственным. Некодовый вектор a_i в этой сумме можно рассматривать как вектор ошибок, произошедших в тех разрядах кодового слова c, в которых соответствующие компоненты вектора a_i равны 1. Из всех векторов ошибок, имеющих один синдром, наиболее вероятным является вектор l_s (векторы) с минимальным весом (числом единичных компонент). Такой вектор (векторы) называется лидером класса.

Алгоритм декодирования заключается в следующем. Если получен вектор у и Ну = s \ne 0, считаем, что ошибкам соответствует наиболее вероятный вектор из класса C_s, то есть лидер l_s класса C_s. Тогда декодирование осуществляется в вектор z=у-l_s=У+l_s, получающийся из принятого вектора удалением лидера.

Рассмотрим пример построения кода по заданной проверочной матрице и декодирования полученного сообщения по синдрому. Пусть дана проверочная матрица H=\begin{pmatrix}1&1&1&0\\ 1&0&0&1\end{pmatrix}. Запишем уравнение для определения кодовых векторов (слов) для данной матрицы:

\begin{cases}x_1+x_2+x_3=0\\x_1+x_4=0\end{cases}\Rightarrow \begin{matrix}x_3=x_1+x_2\\x_4=x_1\end{matrix}

x_1 и x_2 которые можно рассматривать как информационные разряды, задаются произвольно (всего 4 варианта 00, 01, 10, 11), а проверочные разряды x_3 и x_4 определяются через x_1 и x_2. В итоге все кодовые слова определяются из выражения

\begin{pmatrix}x_1\\x_2\\x_3\\x_4\end{pmatrix}=\begin{pmatrix}1&0\\0&1\\1&1\\1&0\end{pmatrix}*{x_1 \choose x_2},

где x_1 и х_2 - информационные разряды, а \begin{pmatrix}1&0\\0&1\\1&1\\1&0\end{pmatrix} - порождающая матрица, столбцами которой являются кодовые векторы.

Кодовые слова, рассматриваемые как векторы-столбцы, образуют матрицу кода

C=\begin{pmatrix}0&0&1&1\\
0&1&0&1\\
0&1&1&0\\
0&0&1&1\end{pmatrix}

Расстояние кода \rho_C равно минимальному весу ненулевого слова \rho_C =2.

Найдем смежные классы, которые состоят из векторов пространства В^4, имеющих одинаковый синдром, и выберем в каждом классе лидера (вектор из класса с минимальным весом).

Синдромом является любое возможное значение произведения Н*х.

В данном случае имеется 4 синдрома: {0 \choose 0}, {0 \choose 1}, {1 \choose 0}, {1 \choose 1}.Каждому синдрому соответствует смежный класс, синдром {0 \choose 0} соответствует коду. Смежные классы (столбцы матриц) для каждого синдрома и выбранные лидеры приведены в таблице.

Синдром {o \choose 0} {0 \choose 1} {1 \choose 0} {1 \choose 1}
Класс смежности \begin{pmatrix}0&0&1&1\\0&1&0&1\\0&1&1&0\\0&0&1&1\end{pmatrix} \begin{pmatrix}0&0&1&1\\0&1&0&1\\0&1&1&0\\1&1&0&0\end{pmatrix} \begin{pmatrix}0&0&1&1\\1&0&1&0\\0&1&1&0\\0&0&1&1\end{pmatrix} \begin{pmatrix}1&1&0&0\\0&1&0&1\\0&1&1&0\\0&0&1&1\end{pmatrix}
Лидер \begin{pmatrix}0\\0\\0\\0\end{pmatrix} \begin{pmatrix}0\\0\\0\\1\end{pmatrix} \begin{pmatrix}0\\1\\0\\0\end{pmatrix} \begin{pmatrix}1\\0\\0\\0\end{pmatrix}

В третьем смежном классе - два потенциальных лидера с весом (нормой), равным 1. Один из них выбирается в качестве лидера произвольно.

Рассмотрим на этом примере процесс декодирования полученного вектора (слова) с использованием синдромов. Пусть передавался кодовый вектор \begin{pmatrix}0\\1\\1\\0\end{pmatrix} и в процессе переачи произошла ошибка в первом разряде. Это означает, что на приемном конце был получен вектор у=\begin{pmatrix}1\\1\\1\\0\end{pmatrix}=\begin{pmatrix}0\\1\\1\\0\end{pmatrix}+\begin{pmatrix}1\\0\\0\\1\end{pmatrix}, полученный из переданного вектора \begin{pmatrix}0\\1\\1\\0\end{pmatrix} в результате добавления вектора ошибки \begin{pmatrix}1\\0\\0\\0\end{pmatrix} (ошибка в первом разряде). Определим синдром, вычислив произведение Н*y. В данном случае получим H*y={1 \choose 1}. Это означает, что полученный вектор у водит в четвертый смежный класс (см. таблицу). Лидером этого смежного класса является вектор l=\begin{pmatrix}1\\0\\0\\0\end{pmatrix}, соответствующий данному синдрому. Вычитая (добавляя) лидер к принятому вектору, производим декодирование y-l=y+l=\begin{pmatrix}0\\1\\1\\0\end{pmatrix} В данном случае декодирование выполнено правильно.

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Фахруддин хемракулыев
Фахруддин хемракулыев
Шерхон Давлатов
Шерхон Давлатов

Почему тесты (1,2,3..) не работают. Хочу пройти тест но не получается