Опубликован: 19.11.2012 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский университет "Высшая Школа Экономики"
Лекция 7:

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

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

Особенности векторных пространств над конечным полем GF(2). Линейный групповой код

Одним из подходов к регулярному построению кодов является применение в качестве кодовых множеств линейных подпространств [29], [33], [34]. Одно из преимуществ такого подхода заключается в хорошо изученной структуре подпространств линейных векторных пространств.

Для построения кодов, обнаруживающих и исправляющих ошибки, используются векторные пространства над конечным полем GF(2) [32]. В этом случае множество (n-мерный куб) B^n рассматривается как линейное векторное пространство над конечным полем GF(2). Точки из B^n становятся векторами, их можно складывать и умножать на числа из поля GF(2).

Специфика некоторых понятий линейной алгебры в векторном пространстве B^n является следствием особенностей поля GF(2). Сложение векторов из B^n производится покоординатно с учетом особенностей операции сложения в поле GF(2).

Сложение и умножение в поле определяется следующими таблицами.

Таблица сложения
\oplus 0 1
0 0 1
1 1 0
Таблица умножения
\times 0 1
0 0 1
1 0 1

Сложение в поле GF(2) (сложение по модулю 2) часто обозначается \oplus. Этим же знаком будем обозначать сложение векторов из B^n. Следует отметить справедливое для всех векторов \alpha \in B^n равенство \alpha \oplus \alpha = 0, вытекающее из таблицы сложения. Оно означает, что любой вектор является противоположным себе \alpha =-\alpha, а также что при заданных \alpha и (\beta уравнение имеет решение \chi = \alpha \oplus \beta= \beta \oplus \alpha.

Рассмотрим особенности еще некоторых понятий линейной алгебры.

Линейная комбинация в B^n. Учитывая, что B^n рассматривается как векторное пространство над конечным полем GF(2), содержащим только два элемента 0 и 1, линейная комбинация в B^n превращается в сумму векторов

\sum_{i=1}^ka_iv_i=a_1v_1+a_2v_2+\dots+a_kv_k=v_{j_1}+v_{j_2}++\dots+v_{j_k}

Линейная оболочка множества векторов из B^n \; v_{j_1}, v_{j_2}, \dots, v_{j_k} - это совокупность различных сумм этих векторов. Линейная оболочка векторов \alpha, \beta, \dots, \gamma будет обозначаться через  [\alpha, \beta, \dots, \gamma].

Линейная зависимость векторов из B^n. Векторы v_{j_1}, v_{j_2}, \dots, v_{j_k}линейно зависимы, если существует сумма некоторых из них, равная 0.

Векторы v_{j_1}, v_{j_2}, \dots, v_{j_k}линейно независимы, если любая сумма некоторых из них не равна 0.

Утверждение. Если векторы v_{j_1}, v_{j_2}, \dots, v_{j_k} независимы, то все их линейные комбинации (суммы) различны.

Доказательство. Предположим, что v_{j_1}, v_{j_2}, \dots, v_{j_k}=v_{j_1}, v_{j_2}, \dots, v_{j_m} Удалив из левой и правой частей этого равенства одинаковые векторы и перенеся оставшиеся из правой части в левую, получим нулевую сумму векторов. Это противоречит их линейной независимости.

Всего из m линейно независимых векторов можно составить

1+m+{m \choose 2}+\dots+{m \choose m}=2^m

линейных комбинаций, и все они различны.

Из доказанного утверждения следует, что линейная оболочка m линейно независимых векторов содержит 2^m вектора.

Рассмотрим пример. Пусть имеем два вектора

\alpha_1=\begin{pmatrix}1\\0\\0\end{pmatrix},\; \alpha_2=\begin{pmatrix}1\\1\\1\end{pmatrix}\alpha_1=\begin{pmatrix}1\\0\\0\end{pmatrix},\; \alpha_2=\begin{pmatrix}1\\1\\1\end{pmatrix}\; \alpha_3=\begin{pmatrix}0\\1\\1\end{pmatrix},\; \alpha_4=\begin{pmatrix}0\\0\\0\end{pmatrix}

Их линейная оболочка [\alpha_1, \alpha_2] состоит из четырех векторов На традиционном изображении B^3 в виде точек куба \alpha_1, \alpha_2, \alpha_3, \alpha_4 образуют плоскость (увеличенные светлые вершины куба на рисунке).


Подпространства в B^n. Подпространством векторного пространства B^n называется подмножество векторов из B^n, замкнутое относительно операций сложения и умножения на число из поля GF(2). Линейная оболочка [\alpha, \beta, \dots \gamma] векторов \alpha, \beta, \dots, \gamma уявляется подпространством пространства B^n.

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

\beta_1=\begin{pmatrix}1\\0\\0\end{pmatrix},\; \beta_2=\begin{pmatrix}1\\1\\1\end{pmatrix}\; \beta_3=\begin{pmatrix}0\\0\\1\end{pmatrix},\; \beta_4=\begin{pmatrix}0\\0\\0\end{pmatrix}

подпространством не является, поскольку оно не замкнуто относительно операции сложения. Например, \beta_1+\beta_2 не входит в это множество векторов.

По аналогии с подпространствами в R^n подпространства в B^n могут задаваться системами линейных уравнений (но над полем GF(2) ). Именно таким образом далее будет задаваться линейный групповой код.

Нормой вектора \alpha \in B^n называется число ||\alpha|| единичных координат этого вектора. В кодировании норму вектора называют также весом этого вектора. С помощью нормы вектора и операции сложения векторов в B^n (операции покоординатного сложения по mod\; 2) выражение для расстояния Хеминга может быть записано в виде

\rho(\alpha, \beta)=||\alpha-\beta||+||\alpha \oplus \beta||=\sum_{i=1}^n \alpha_i \oplus \beta_i=\mbox {числу единиц в}\alpha \oplus \beta

Кодовое расстояние линейного кода может быть вычислено проще, чем кодовое расстояние произвольного кода. Учитывая, что для слов \alpha \in C, \beta \in C линейного кода C справедливо \alpha \oplus \beta \in C, выполняется следующая цепочка равенств

р_с =min_{\alpha \ne \beta}\rho (\alpha, \beta) = min_{\alpha \ne \beta}||\alpha \oplus \beta||=min_{\gamma \in C}||\gamma||

Определение. Пусть H - матрица над полем GF(2) размера  (n-k)\times n и ранга (n-k). Множество C \subset GF^n(2) решений уравнения Hx=0 называется линейным (n,k) кодом. H - проверочная матрица, n - длина кода, k - размерность кода. Если матрица H имеет вид H=(A E_{n-k}), где E_{n-k} - единичная матрица порядка n-k, то код называется систематическим.

Построение линейного кода по заданной порождающей матрице

Рассмотрим, как можно получить линейный код, зная порождающую матрицу. Для этого решим уравнение Hx=0 и найдем кодовые слова. В матричном виде уравнение для кодовых слов запишется в виде

Hx=n-k\{(\overbrace{A}^{k} \overbrace{E_{n-k}}^{n-k})*\begin{pmatrix}x_1\\\vdots\\x_k\\x_{k+1}\\\vdots\\x_n\end{pmatrix}=A*\begin{pmatrix}x_1\\x_2\\\vdots\\x_k\end{pmatrix}+E_{n-k}*\begin{pmatrix}x_{k+1}\\x_{k+2}\\\vdots\\x_n\end{pmatrix}=A*\begin{pmatrix}x_1\\x_2\\\vdots\\x_k\end{pmatrix}+\begin{pmatrix}x_{k+1}\\x_{k+2}\\\vdots\\x_n\end{pmatrix}=0\\
\begin{pmatrix}x_{k+1}\\x_{k+2}\\\vdots\\x_n\end{pmatrix}=-A*\begin{pmatrix}x_1\\x_2\\\vdots\\x_k\end{pmatrix} ( 7.1)

Чтобы найти решение, нужно произвольно задать k компонент x_1= u_1, x_2=u_2,\dots , x_k = u_k вектора x, а остальные вычислить по формуле (2.6). Таким образом, первые k компонент вектора x полностью его определяют

\begin{pmatrix}u_1\\u_2\\\vdots\\u_k\\x_{k+1}\\x_{k+2}\\\vdots\\x_n\end{pmatrix}={E_k \choose -A}*\begin{pmatrix}u_1\\u_2\\\vdots\\u_k\end{pmatrix} ( 7.2)

Матрица G={E_k \choose -A} называется порождающей. Ее столбцы образуют базис пространства решений системы Hx=0. Учитывая особенности поля GF(2), порождающая матрица имеет вид G ={E_k \choose A}.

Нетрудно показать, что справедливо равенство H *G=O, где O - матрица из нулевых элементов, имеющая n-k строк и k столбцов.

Для того чтобы лучше понять свойства линейных кодов, полезно рассматривать произведение Hx как линейную комбинацию столбцов h_1, h_2, \dots , h_n матрицы H с коэффициентами, являющимися компонентами вектора x.

Н*х=h_1x_1+h_2x_2+\dots h+nx_n

Свойства линейных кодов зависят от проверочной матрицы. Эта зависимость описывается следующей леммой [34].

Лемма. Линейный код C с проверочной матрицей H_C имеет кодовое расстояние \rho_{C_s} \ge s +1 тогда и только тогда, когда любые s столбцов матрицы H_C линейного кода C линейно независимы.

Если любые s столбцов матрицы H_C линейно независимы, то никакой вектор x=(x_1, x_2, \dots, x_n)^T, имеющий s или менее ненулевых (единичных) компонент, не обращает в ноль произведение H_c * x =h_1x_1+h_2x_2+\dots h_nx_n. Это означает, что нормы всех кодовых слов, то есть слов z, для которых справедливо H_C*z=0, больше s, и следовательно, кодовое расстояние \rho_C \ge s+1.

Пусть теперь линейный код C с проверочной матрицей H_C имеет кодовое расстояние \rho_C \ge s+1. Для доказательства линейной независимости любых s столбцов проверочной матрицы H_C предположим противное, то есть предположим, что существует t<s линейно зависимых столбцов матрицы H_C Это значит, что сумма h_{i_1}+h_{i_2}+ \dots h_{i_k}k \le t < s некоторых из этих столбцов равна нулевому вектору пространства B^n. Эту сумму можно представить как произведение h_{i_1}+h_{i_2} +\dots h_{i_k}, =H_c*x, где x - вектор, у которого компоненты с номерами i_1, i_2, \dots, i_k, k \le t < s равны 1, а остальные компоненты равны 0. Значит x - кодовый вектор с нормой k<s, что противоречит тому, что кодовое расстояние \rho_C \ge s+1.

Рассмотрим некоторые примеры линейных кодов.

Код с разрядом для проверки на четность является линейным кодом с проверочной матрицей H=(1111) . Действительно, уравнение Hx=0 в этом случае имеет вид

х_1+х_2+х_3+х_4 =0

или

х_4=х_1+х_2+х_3,

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

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

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

Линейное уравнение, определяющее код, в данном случае имеет вид

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

а его решения описываются соотношениями х_2=х_1,х_3=х_1,х_4=х_1. Эти равенства означают, что три проверочных разряда повторяют один информационный разряд. Любые 3 столбца проверочной матрицы являются линейно независимыми (сумма любых трех столбцов не равна нулевому столбцу), поэтому кодовое расстояние, равное 4, обеспечивает исправление одной ошибки и обнаружение трех. Код содержит всего 2 кодовых слова: (0000)^T и (1111)^T. Считается, что слово передано с ошибкой, если не все разряды в нем одинаковы. Исправление одной ошибки производится по принципу голосования. Если в полученном слове больше единичных разрядов, то, очевидно, оно ближе к кодовому слову (1111)^T, чем к кодовому слову (0000)^T, поэтому декодирование производится в слово (1111)^T. По аналогичной причине, когда в принятом слове больше нулевых разрядов, декодирование производится в слово (0000)^T.

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

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

Денис Шаяхметов
Денис Шаяхметов
Россия, г. Нижневартовск
Кирилл Коршук
Кирилл Коршук
Беларусь, Минск, Международный университет МИТСО