Множество всех двоичных слов $$a=a_1\ldots a_m$$ длины $$m$$ образует абелеву (коммутативную) группу относительно поразрядного сложения.
Пусть $$E$$ - кодирующая $$m\times n$$ -матрица, у которой есть $$m\times m$$ -подматрица с отличным от нуля определителем, например, единичная. Тогда отображение $$a\rightarrow aE$$ переводит группу всех двоичных слов длины $$m$$ в группу кодовых слов длины $$n$$.
Предположим, что $$a=a_1\ldots a_m=a'+a"$$. Тогда для $$b=b_1\cdots b_n=aE$$, $$b'=a'E$$, $$b"=a"E$$, получаем$$b_j = a_1e_{1j}+a_2e_{2j}+\cdots+a_me_{mj} =$$ $$= (a_1'+a_2')e_{1j}+(a_2'+a_2")e_{2j}+\cdots+(a_m'+a_m")e_{mj} = b_j'+b_j",$$ т.е. $$b=b'+b"$$. Следовательно, взаимно-однозначное отображение группы двоичных слов длины $$m$$ при помощи заданной матрицы $$E$$ сохраняет свойства групповой операции, что означает, что кодовые слова образуют группу.
Блочный код называется
Если код является групповым, то наименьшее расстояние между двумя кодовыми словами равно наименьшему весу ненулевого слова.
Это следует из соотношения $$d(b_i,b_j)=w(b_i+b_j)$$.
В предыдущем примере наименьший вес ненулевого слова равен 3. Следовательно, этот код способен исправлять однократную ошибку или обнаруживать однократную и двойную.
При использовании группового кода незамеченными остаются те и только те ошибки, которые отвечают строкам ошибок, в точности равным кодовым словам.
Такие строки ошибок переводят одно кодовое слово в другое.
Следовательно, вероятность того, что ошибка останется необнаруженной, равна сумме вероятностей всех строк ошибок, равных кодовым словам.
В рассмотренном примере вероятность ошибки равна $$4p^3q^3+3p^2q^4$$.
Рассмотрим задачу оптимизации декодирования группового кода с двоичной матрицей кодирования $$E$$. Требуется минимизировать вероятность того, что $$D(T(aE))\ne a$$.
Схема декодирования состоит из группы $$G$$ всех слов, которые могут быть приняты ( $$\#G=2^n$$ ). Так как кодовые слова $$B$$ образуют нормальную (нормальность следует из коммутативности $$G$$ ) подгруппу $$G$$, то множеству $$G$$ можно придать структуру таблицы: будем записывать в одну строку те элементы $$G$$, которые являются членами одного смежного класса $$G$$ по $$B$$. Первая строка, соответствующая нулевому слову из $$G$$, будет тогда всеми кодовыми словами из $$B$$, т.е. $$b_0, b_1, \ldots, b_{2^m-1}$$. В общем случае, если $$g_i\in G$$, то строка, содержащая $$g_i$$ (смежный класс $$g_iB$$ ) имеет вид $$b_0+g_i, b_1+g_i, \ldots, b_{2^m-1}+g_i$$.
Каждый элемент $$g$$ из $$G$$ однозначно представляется в виде суммы $$g_i+b_j$$, где $$g_i\in G$$ - лидер соответствующего смежного класса и $$b_j\in B$$.
Множество классов смежности группы образуют фактор-группу, которая есть фактор-множество множества $$G$$ по отношению эквивалентности-принадлежности к одному смежному классу, а это означает, что множества, составляющие это фактор-множество, образуют разбиение $$G$$. Отсюда следует, что строки построенной таблицы попарно либо не пересекаются, либо совпадают.
Если в рассматриваемой таблице в первом столбце записать лидеры, то
полученная таблица называется
$$\centerline{\vbox{\offinterlineskip\halign{\strut\quad#\hfil\cr
b_0 b_1 b_2 \cdots b_{2^m-1}\cr
g_1 g_1+b_1 g_1+b_2 \cdots g_1+b_{2^m-1}\cr
\cdots \cdots \cdots \cdots \cdots\cr
g_{2^{n-m}-1} g_{2^{n-m}-1}+b_1 g_{2^{n-m}-1}+b_2 \cdots\quad
g_{2^{n-m}-1}+b_{2^m-1}.\cr}}}$$
То, что строк будет $$2^{n-m}$$ следует из теоремы
Декодирование слова $$g=b_j+g_i$$ состоит в выборе кодового слова $$b_j$$ в качестве переданного и последующем применении операции, обратной умножению на $$E$$. Такая схема декодирования сможет исправлять ошибки.
Для $$(3,6)$$ -кода из рассматриваемого примера таблица декодирования будет следующей:
$$\centerline{\vbox{\offinterlineskip\halign{#\strut\hskip7pt#\cr 000000 100110 010011 110101 001111 101001 011100 111010\cr 100000 000110 110011 010101 101111 001001 111100 011010\cr 010000 110110 000011 100101 011111 011001 001100 101010\cr 001000 101110 011011 111101 000111 100001 010100 110010\cr 000100 100010 010111 110001 001011 101101 011000 111110\cr 000010 100100 010001 110111 001101 101011 011110 111000\cr %}}} %\centerline{\vbox{\offinterlineskip\halign{#\strut\hskip7pt#\cr 000001 100111 010010 110100 001110 101000 011101 111011\cr 000101 100011 010110 110000 001010 101100 011001 111111.\cr }}}$$
Первая строка в ней - это строка кодовых слов, а первый столбец - это лидеры.
Чтобы декодировать слово $$b_j+e$$, следует отыскать его в таблице и выбрать в качестве переданного слово в том же столбце и в первой строке.
Например, если принято слово 110011 (2-я строка, 3-й столбец таблицы), то считается, что было передано слово 010011; аналогично, если принято слово 100101 (3-я строка, 4-й столбец таблицы), переданным считается слово 110101, и т.д.
Групповое кодирование со схемой декодирования посредством лидеров исправляет все ошибки, строки которых совпадают с лидерами. Следовательно, вероятность правильного декодирования переданного по двоичному симметричному каналу кода равна сумме вероятностей всех лидеров, включая нулевой.
В рассмотренной схеме вероятность правильной передачи слова будет $$p^6+6p^5q+p^4q^2$$.
Кодовое слово любого столбца
Пусть переданное слово $$b_i$$ принято как $$b_i+e$$, $$d(b_i,b_i+e)=w(e)$$, т.е. это расстояние равно весу соответствующего лидера. Расстояние от $$b_i+e$$ до любого другого кодового слова $$b_j$$ равно весу их поразрядной суммы, т.е. $$d(b_j,b_i+e)=w(b_j+b_i+e)=d(b_j+b_i,e)=d(b_k,e)=w(b_k+e)\ge w(e)$$, т.к. $$e$$ - лидер смежного класса, к которому принадлежат как $$b_k+e$$, так и $$b_i+e$$.
Доказано, при схеме декодирования лидерами по полученному слову берется ближайшее к нему кодовое.
Упражнение 40 Для кодирующих матриц$$E_1=\left\lbrack\matrix{ 1 0 1 0 1\cr 0 1 1 1 0\cr}\right\rbrack$$ , $$E_2=\left\lbrack\matrix{ 1 0 0 1\cr 0 1 0 1\cr 0 0 1 0\cr}\right\rbrack$$:
Групповой $$(m,n)$$ -код, исправляющий все ошибки веса, не большего $$k$$, и
никаких других, называется
Свойства совершенного
Совершенный код - это лучший код, обеспечивающий максимум минимального расстояния между кодовыми словами при минимуме длины кодовых слов. Совершенный код легко декодировать: каждому полученному слову однозначно ставится в соответствие ближайшее кодовое. Чисел $$m$$, $$n$$ и $$k$$ $$(1<k<{n-1\over2})$$, удовлетворяющих условию совершенности кода очень мало. Но и при подобранных $$m$$, $$n$$ и $$k$$ совершенный код можно построить только в исключительных случаях.
Если $$m$$, $$n$$ и $$k$$ не удовлетворяют
условию совершенности, то лучший групповой код, который им соответствует называется
Двоичный блочный $$(m,n)$$ -код называется
Для любого целого положительного числа $$r$$ существует
совершенный $$(m,n)$$ -код, исправляющий одну ошибку, называемый
Действительно, $$\sum^1_{i=0}C^i_n=1+2^r-1=2^r=2^{n-m}$$.
Порядок построения
r=2, 3 и 4 таковы: $$M_{3\times2}=\left\lbrack\matrix{01\cr
10\cr
11\cr}\right\rbrack\qquad
M_{7\times3}=\left\lbrack\matrix{001\cr
010\cr
011\cr
100\cr
101\cr
110\cr
111\cr}\right\rbrack\qquad
M_{15\times4}=\left\lbrack\matrix{0001\cr
0010\cr
0011\cr
0100\cr
0101\cr
0110\cr
0111\cr
1000\cr
1001\cr
1010\cr
1011\cr
1100\cr
1101\cr
1110\cr
1111\cr}\right\rbrack;$$Декодирование
Пример. $$(4,7)$$ -
Код Хэмминга - это групповой код.
Это следует из того, что $$(m,n)$$ -
Пример. Кодирующая матрица для $$(4,7)$$ -
К $$(m,n)$$ -коду Хэмминга можно добавить проверку четности. Получится $$(m,n+1)$$ -код с наименьшим весом ненулевого кодового слова 4, способный исправлять одну и обнаруживать две ошибки.
Квазисовершенные $$(m,n)$$ -коды, исправляющие одну ошибку, строятся следующим образом. Выбирается минимальное $$n$$ так, чтобы$${2^n\over n+1}\ge2^m.$$ Каждое кодовое слово такого кода будет содержать $$k=n-m$$ контрольных разрядов. Из предыдущих соотношений следует, что$$2^k=2^{n-m}\ge n+1=C^1_n+C^0_n=m+k+1.$$ Каждому из $$n$$ разрядов присваивается слева-направо номер от 1 до $$n$$. Для заданного слова сообщения составляются $$k$$ контрольных сумм $$S_1, \ldots, S_k$$ по модулю 2 значений специально выбранных разрядов кодового слова, которые помещаются в позиции-степени 2 в нем: для $$S_i$$ $$(1\le i\le k)$$ выбираются разряды, содержащие биты исходного сообщения, двоичные числа-номера которых имеют в $$i$$ -м разряде единицу. Для суммы $$S_1$$ это будут, например, разряды 3, 5, 7 и т.д., для суммы $$S_2$$ - 3, 6, 7 и т.д. Таким образом, для слова сообщения $$a=a_1\ldots a_m$$ будет построено кодовое слово $$b=S_1S_2a_1S_3a_2a_3a_4S_4a_5\ldots a_m$$. Обозначим $$S^*_i$$ сумму по модулю 2 разрядов полученного слова, соответствующих контрольной сумме $$S_i$$ и самой этой контрольной суммы. Если $$S^*_k\ldots S^*_1=0$$, то считается, что передача прошла без ошибок. В случае одинарной ошибки $$S^*_k\ldots S^*_1$$ будет равно двоичному числу-номеру сбойного бита. В случае ошибки, кратности большей 1, когда $$S^*_k\ldots S^*_1>n$$, ее можно обнаружить. Подобная схема декодирования не позволяет исправлять некоторые двойные ошибки, чего можно было бы достичь, используя схему декодирования с лидерами, но последняя значительно сложнее в реализации и дает незначительное улучшение качества кода.
Пример построения кодового слова квазисовершенного $$(9,n)$$ -кода, исправляющего все однократные ошибки, для сообщения 100011010.$${2^{12}\over13}={4096\over13}<2^9=512\quad\hbox{и}\quad {2^{13}\over14}={4096\over7}>512,\hbox{ т.е. }n=13.$$ Искомое кодовое слово имеет вид $$\lower.1ex\hbox{\vbox{\halign{\hbox to 1.1em{\hfil # \hfil}\cr _1 _2 _3 _4_5_6_7 _8_9_{10}_{11}_{12}_{13}\cr S_1S_2 1S_3 0 0 0S_4 1 1 0 1 0\cr}}}$$. Далее нужно вычислить контрольные суммы.$$\matrix{\hfill1_{10}=0001_2\cr \hfill2_{10}=0010_2\cr \hfill3_{10}=0011_2\cr \hfill4_{10}=0100_2\cr \hfill5_{10}=0101_2\cr \hfill6_{10}=0110_2\cr \hfill7_{10}=0111_2\cr \hfill8_{10}=1000_2\cr \hfill9_{10}=1001_2\cr \hfill10_{10}=1010_2\cr \hfill11_{10}=1011_2\cr \hfill12_{10}=1100_2\cr \hfill13_{10}=1101_2\cr}\qquad \matrix{S_1=b_3+b_5+b_7+b_9+b_{11}+b_{13}=0\hfill\cr S_2=b_3+b_6+b_7+b_{10}+b_{11}=0\hfill\cr S_3=b_5+b_6+b_7+b_{12}+b_{13}=1\hfill\cr S_4=b_9+b_{10}+b_{11}+b_{12}+b_{13}=1\hfill\cr}$$ Таким образом, искомый код - 0011000111010. Если в процессе передачи этого кода будет испорчен его пятый бит, то приемник получит код 0011100111010. Для его декодирования опять вычисляются контрольные суммы:$$$$\matrix S_1^*=b_1+b_3+b_5+b_7+b_9+b_{11}+b_{13}=1\hfill\cr\\ S_2^*=b_2+b_3+b_6+b_7+b_{10}+b_{11}=0\hfill\cr\\ S_3^*=b_4+b_5+b_6+b_7+b_{12}+b_{13}=1\hfill\cr\\ S_4^*=b_8+b_9+b_{10}+b_{11}+b_{12}+b_{13}=0\hfill\cr}\\ \ifdim\hsize>155mm\qquad\else$${}$$\fi S_4^*S_3^*S_2^*S_1^*=0101_2=5_{10}.$$$$ Приемник преобразует изменением пятого бита полученное сообщение в отправленное передатчиком, из которого затем отбрасыванием контрольных разрядов восстанавливает исходное сообщение.
Совершенный
Для исправление одинарной ошибки к 8-разрядному коду достаточно приписать 4 разряда ( $$2^{12}/13>2^8$$ ), к 16-разрядному - 5, к 32-разрядному - 6, к 64-разрядному - 7.
Упражнение 41 Может ли $$(6,14)$$ -код, минимальное расстояние между кодовыми словами которого 5, быть совершенным?
Упражнение 42
Построить кодовые слова квазисовершенного $$(9,n)$$ -кода,
исправляющего однократные ошибки, для тех сообщений, которые соответствуют числам
55, 200 и декодировать слова 1000001000001, 1100010111100,
полученные по каналу связи, использующему этот код.
При
Пусть $$a=a_0\ldots a_{m-1}$$ - двоичное сообщение. Тогда сопоставим ему многочлен $$a(x)=a_0+a_1x+\cdots+a_{m-1}x^{m-1}$$. Все вычисления происходят в поле классов вычетов по модулю 2, т. е. от результата любой арифметической операции берется остаток от его деления на 2.
Например, последовательности 10011 при $$m=5$$ соответствует многочлен $$1+x^3+x^4$$.
Зафиксируем некоторый многочлен степени $$k$$,$$g(x)=g_0+g_1x+\cdots+g_kx^k,\quad g_0\ne0,\quad g_k\ne0.$$ Полиномиальный код с кодирующим многочленом $$g(x)$$ кодирует слово сообщения $$a(x)$$ многочленом $$b(x)=a(x)g(x)=b_0+b_1x+\cdots+b_{n-1}x^{n-1}$$ или кодовым словом из коэффициентов этого многочлена $$b=b_0\ldots b_{n-1}$$. Условия $$g_0\ne0$$ и $$g_k\ne0$$ необходимы, потому что в противном случае $$b_0$$ и $$b_{n-1}$$ не будут нести никакой информации, т.к. они всегда будут нулями.
Пример. Рассмотрим кодирующий многочлен $$g(x)=1+x^2+x^3$$. Сообщение 01011, отвечающее многочлену $$a(x)=x+x^3+x^4$$, будет закодировано коэффициентами многочлена $$b(x)=g(x)a(x)=x+x^5+x^7$$, т.е. $$b=01000101$$.
Полиномиальный код с кодирующим многочленом $$g(x)$$ степени $$k$$ является матричным кодом с кодирующей матрицей $$G$$ размерности $$m\times(m+k)$$:$$G=\left\lbrack\matrix{ g_0 g_1 g_2 \cdots g_k 0 0 \cdots 0\cr 0 g_0 g_1 \cdots g_{k-1} g_k 0 \cdots 0\cr 0 0 g_0 \cdots g_{k-2} g_{k-1} g_k \cdots 0\cr \cdots\cdots\cdots \cdots \cdots \cdots \cdots \cdots \cdots\cr 0 0 0 \cdots \cdots \cdots \cdots \cdots g_k\cr} \right\rbrack.$$ Т е. ненулевые элементы в $$j$$ -й строке - это последовательность коэффициентов кодирующего многочлена, расположенных с $$j$$ -го по $$(j+k)$$ -й столбцах.
Например, $$(3,6)$$ -код с кодирующим многочленом $$1+x+x^3$$ отвечает матрице$$G=\left\lbrack\matrix{110100\cr 011010\cr 001101\cr}\right\rbrack$$ или отображению: $$000\rightarrow000000$$ ; $$001\rightarrow001101$$ ; $$010\rightarrow011010$$ ; $$011\rightarrow010111$$ ; $$100\rightarrow110100$$ ; $$101\rightarrow111001$$ ; $$110\rightarrow101110$$ ; $$111\rightarrow100011$$.
Полиномиальные коды являются групповыми.
Это следует из того, что коды, получаемые матричным кодированием, - групповые.
Рассмотрим $$(m,n)$$ -код с кодирующим многочленом $$g(x)$$. Строка ошибок $$e=e_0\ldots e_{n-1}$$ останется необнаруженной в том и только в том случае, если соответствующий ей многочлен $$e(x)=e_0+e_1x+\cdots+e_{n-1}x^{n-1}$$ делится на $$g(x)$$.
Действительно, $$a(x)g(x)+e(x)$$ делится на $$g(x)$$ тогда и только тогда, когда $$e(x)$$ делится на $$g(x)$$. Поэтому любая ошибка, многочлен которой не делится на $$g(x)$$, будет обнаружена и, соответственно, любая ошибка, многочлен которой делится на $$g(x)$$, не может быть обнаружена.
Таким образом, обнаружение ошибки при использовании полиномиального кода с кодирующим многочленом $$g(x)$$ может быть реализовано при помощи алгоритма деления многочленов с остатком: если остаток ненулевой, то при передаче произошло искажение данных.
Вообще же, если кодирующий многочлен $$g(x)$$, порождающий соответствующий $$(m,n)$$ -код, не является делителем ни одного из многочленов вида $$x^j+1$$ при $$j<n$$, то минимальное расстояние между кодовыми словами порожденного им кода не меньше 3.
Пусть $$d$$ - минимальное расстояние между кодовыми словами, оно равно минимуму среди весов ненулевых кодовых слов. Предположим $$d=2$$. Тогда существует $$a(x)$$ такой, что $$a(x)g(x)=b(x)$$ и степень $$b(x)$$ не больше $$n$$. Вес $$b$$ равен 2, поэтому $$b(x)=x^m+x^l$$ и $$l<m<n$$. Следовательно, $$b(x)=x^l(x^{m-l}+1)$$, что означает, что $$x^{m-l}+1$$ должен делиться на $$g(x)$$, а это невозможно по условию. Если предположить, что $$d=1$$, то это приведет к утверждению о том, что $$x^m$$ должен делиться на $$g(x)$$, что тоже противоречит условию. Итак, $$d\ge3$$.
Кодирующий многочлен $$x^{11}+x^9+x^7+x^6+x^5+x+1$$ определяет совершенный $$(12,23)$$ -код Голея (Golay) с минимальным расстоянием между кодовыми словами 7.
В 1971 году финскими и советскими математиками было
Наиболее интересными среди полиномиальных кодов являются циклические коды, в которых вместе с любым кодовым словом вида $$b_0\ldots b_{n-2}b_{n-1}$$ есть кодовое слово $$b_{n-1}b_0\ldots b_{n-2}$$.
Упражнение 43 По кодирующему многочлену $$x^7+x^5+x+1$$ построить полиномиальные коды для двоичных сообщений 0100, 10001101, 11110.
Упражнение 44
Принадлежат ли коду Голея кодовые слова 10000101011111010011111
и 11000111011110010011111?
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.