Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
Министерство образования и науки Российской Федерации
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САРАТОВСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.Г.ЧЕРНЫШЕВСКОГО»
Кафедра дискретной математики
и информационных технологий
Полиномиальное кодирование
АВТОРЕФЕРАТ БАКАЛАВРСКОЙ (МАГИСТЕРСКОЙ, ДИПЛОМНОЙ)
РАБОТЫ
Студентки 4 курса 421 группы
направления 09.03.01 «Информатика и вычислительная техника»
факультета компьютерных наук и информационных технологий
Кирдиной Ульяны Сергеевны
Научный руководитель
к. ф.-м.н., доцент каф ДМиИТ ___________________ И.П. Мангушева
дата, подпись
Заведующий кафедрой
к. ф.-м.н., доцент _____________________ Л. Б. Тяпаев дата, подпись
Саратов 2016 год
СОДЕРЖАНИЕ
ВВЕДЕНИЕ .............................................................................................................. 3
1 Основные понятия ............................................................................................... 4
2 Помехоустойчивое кодирование ........................................................................ 5
2.1 Блочные коды ....................................................................................... 5
2.2 Групповые коды ................................................................................... 6
3 Полиномиальное кодирование ........................................................................... 7
3.1 Возможности полиномиальных кодов ................................................ 8
3.2 Понятие о кодах Боуза-Чоудхури-Хоккенгема ............................... 10
ЗАКЛЮЧЕНИЕ ..................................................................................................... 12
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ........................................... 13
3
ВВЕДЕНИЕ
Целью выпускной квалификационной работы является рассмотрение
одного из методов помехоустойчивого кодирования, а именно, метода поли-
номиального кодирования и декодирования двоичных сообщений. Для дос-
тижения цели, поставленной в дипломной работе, необходимо было решить
следующие задачи.
1 Изучить теоретический материал, касающийся метода полиноми-
ального кодирования и его использования для обнаружения и корректировки
искажений при передаче по каналу связи с помехами.
2 Продемонстрировать работу метода на примерах.
3 Разработать и реализовать алгоритмы построения кода двоично-
го сообщения, обнаружения ошибки в коде на выходе канала связи и коррек-
тировки кода для случая, когда это возможно.
4 Описать область применения полиномиальных кодов;
5 Рассмотреть задачу нахождения порождающих многочленов;
6 Реализовать метод полиномиального кодирования и декодиро-
вания двоичных сообщений.
Структурно работа состоит из введения, теоретической части, практи-
ческой части, заключения, списка использованных источников и трех прило-
жений.
4
1 Основные понятия
Группой называется система [G, ∙, 1, ˉ¹] со следующими свойствами:
1. x*(y*z) = (x*y)*z для всех x, y, z ∈ G;
2. 1*x = x*1 = x для всех x ∈ G;
3. x*xˉ¹ = xˉ¹*x = 1 для всех x ∈ G
Кольцом называется алгебраическая система R= [R, +, *] с двумя би-
нарными операциями + и *, которые удовлетворяют следующим условиям
[1].
1. + определят на R структуру абелевой группы: abba для
любых Gba , ;
2. * определяет на R структуру моноида;
3.справедливы законы дистрибутивности:
,)( acabcba bcaccba )( для любых Rcba ,, .
Кольцо называется коммутативным, если a*b=b*a для всех a, b ∈ R.
Моноидом называется полугруппа с нейтральным элементом e , что
xxeex
Полем называется коммутативное кольцо, содержащее не менее двух
элементов, в котором все ненулевые элементы образуют группу по умноже-
нию. К этому классу принадлежат поля целых чисел nZ по модулю простого
числа n . Для построения кодов используются поля степени двойки 2Z .
Двоичным (m, n) - кодом называется пара, состоящая из схемы кодиро-
вания E : 2m→2
n и схемы декодирования D: 2
n→2
m, где 2
n - множество всех
двоичных последовательностей длины n.
Систематический код - это код, в котором каждой кодовой последова-
тельности однозначно сопоставляется входная последовательность [2].
5
2 Помехоустойчивое кодирование
При передаче информации по каналам связи возможны ошибки вслед-
ствие помех и искажений сигналов. Для обнаружения и исправления возни-
кающих ошибок используются помехоустойчивые коды.
Помехоустойчивость - способность системы осуществлять прием ин-
формации в условиях наличия помех в линии связи и искажений во внутри
аппаратных трактов. Помехоустойчивость обеспечивает надежность и досто-
верность передаваемой информации (данных).
Помехоустойчивое кодирование – один из эффективных методов по-
вышения достоверности и надежности передачи данных. Этот метод позво-
ляет за счет внесения дополнительной избыточности в кодовые комбинации
передаваемых сообщений обеспечить возможность обнаружения и исправле-
ния одиночных, кратных и групповых ошибок [8].
2.1 Блочные коды
Блочный код заменяет каждый блок из m символов некоторым более
длинным блоком из n символов, который после передачи подлежит декоди-
рованию. Из соображений простоты и надежности большинство систем связи
конструируется для передачи двоичных последовательностей. Блочный
(m, n) – код определяется двумя функциями: E: 2m →2
n, D: 2
n→2
m, m≤n.
Одним из ключевых понятий теории кодирования принадлежит поня-
тие расстояния между двоичными словами. Расстояние d(a, b) между двумя
словами a = (a1,…,an) и b=(b1,…,bn) равно числу позиций, в которых ai≠bi. Ес-
ли слова отличаются в точно одной позиции, то расстояние равно единице.
Весом w(a) слова a=(a1,..,an) называется число единиц среди его коор-
динат. Тогда расстоянием d(a, b) между двоичными словами одинаковой
длины называется вес их суммы, то есть d(a, b) = w(a+b) [2].
Теорема 1. Для того чтобы код давал возможность обнаруживать все
ошибки в ≤ k позициях, необходимо и достаточно, чтобы наименьшее рас-
стояние между двумя кодовыми словами было k+1.
6
Теорема 2. Для того чтобы код давал возможность исправлять все
ошибки в ≤ k позициях, необходимо и достаточно, чтобы наименьшее рас-
стояние между двумя кодовыми словами было 2k+1.
2.2 Групповые коды
Блочный код называется групповым, если его кодовые слова образуют
группу. Иногда групповые коды являются блоковыми кодами, имеющими
практическое значение. Групповые коды также называют линейными или
кодами с обобщенными проверками на четность [2].
Теорема 3. Если код является групповым, то наименьшее расстояние
между двумя кодовыми словами равно наименьшему весу ненулевого кодо-
вого слова [2].
7
3 Полиномиальное кодирование
Полиномом степени ≤ m от неизвестной x над коммутативным коль-
цом R называется выражение вида:
Raxaxaxaa k
km
k
k
m
m
,0
10
Элементы ak называются коэффициентами полинома, они могут быть
нулевыми.
Полином иногда обозначается символически a(x). При таком обозначе-
нии имеется в виду, что полином рассматривается как функция из R в R.
Вес многочлена - это количество ненулевых слагаемых в многочлене.
Два стандартных полинома называются равными, если у них одинако-
вая каноническая форма.
Полиномиальные коды – это специальный класс групповых кодов.
При кодировании сообщения отождествляются с многочленами, а само коди-
рование заключается в умножении на фиксированный многочлен [4]. Для
блочных (m, n) – кодов в каждом блоке имеется k = n – m контрольных сим-
волов. Пусть a0, …. , am-1 – символы сообщения a. Будем рассматривать дво-
ичный алфавит, его нужно отождествить с Z2. Тогда слова сообщения можно
отождествить с многочленами степени ≤ m – 1 над Z2:
a↔a0 + a1x + … + am-1xm-1
. (5)
Пусть F – некоторое конечное поле. Фиксируем многочлен степени k:
g(x) = g0+g1x+ … + gkxk∈F[x], g0≠0, gk≠0. (6)
Если g0=0, то все кодовые слова будут начинаться с нуля, и первый
символ не будет нести никакой информации, если же gk=0, то последний
символ не будет нести информации.
Полиномиальный код с кодирующим многочленом g (x) кодирует сло-
во сообщения а вида (6) следующим многочленом:
b(x) = b0+b1x+…+bn-1xn-1
=a(x) g(x) [6].
8
Теорема 4. Минимальное расстояние между двумя кодовыми словами
полиномиального кода с кодирующим многочленом g(x) совпадает с мини-
мумом весов многочленов a(x)g(x).
Теорема 5. Если многочлен с коэффициентами в Z2 делится на 1+x, то
он имеет четное число ненулевых коэффициентов.
Декодирование при полиномиальном кодировании осуществляется пу-
тем деления кодового полинома b(x) на порождающий полином g(x). Если
остаток от деления на g(x) равен 0, то значит, что ошибки отсутствуют в про-
цессе передачи кодовой комбинации. Частное от деления является искомым
полиномом a(x).
3.1 Возможности полиномиальных кодов
Теорема 7. Если g(x) не является делителем ни одного многочлена ви-
да xk-1 при k<n, то для (m, n) – кода, порожденного g(x), минимальное рас-
стояние между словами не меньше трех [1].
Доказательство. Множество кодовых слов имеет вид a(x) g(x), de-
ga(x)<m. Так как код является групповым, то минимальное расстояние между
кодовыми словами совпадает с минимальным весом кодового слова. Если
существует кодовое слово веса 2, то g(x) делит многочлен вида e(x)= xi+x
j=
xi(1+x
j-1). Так как g0=1, g(x) делит 1+ x
j-1, поэтому не существует кодовых
слов весом 2. Также не может существовать кодовое слово веса 1, иначе g(x)
должен был бы делить xi.
Многочлен g(x) степени k над Z2 называется примитивным, если
g(x)│(xm - 1) для m = 2
k – 1, но ни для какого меньшего значения m.
Примитивные многочлены строятся путем перебора. Некоторые при-
митивные многочлены приведены в таблице 1.
9
Таблица 1 - Примитивные многочлены
Теорема 6. Рассмотрим полиномиальный (m, n)- код, порожденный
многочленом g(x). «Строка ошибок» e=e0e1…en-1 останется необнаруженной в
том и только том случае, если соответствующий многочлен ошибок делится
на g(x).
Доказательство. Строка ошибок остается необнаруженной только в том
случае, если она является кодовым словом, это доказывает требуемое.
Обнаружение ошибок производится с помощью алгоритма деления с
остатком: нужно поделить многочлен, отвечающий принятому слову, на g(x);
если остаток степени <deg g оказывается ненулевым, то при передаче про-
изошло искажение.
Лемма (алгоритм Евклида). Пусть )(),( xbxa - многочлены в
0)(],[ xbxF . Тогда существует неполное частное ][)( xFxq и остаток
][)( xFxr со свойствами: либо 0)( xr , либо )(deg xr < )(deg xb и
),()()()( xrxqxbxa )(deg xr < )(deg xb
Частное q(x) и остаток r(x) можно вычислить с помощью следующего
алгоритма.
Положим km
k
k xaxa
1
)( и kn
k
k xbxb
0
)( , где 0nb . Рассмотрим два слу-
чая.
Случай 1. Если m<n, полагаем 0)( xq и )()( xaxr .
10
Случай 2. Если ,nm положим
).()()()()()( 1
1
1 xbxqxaxbxabxaxa nm
mn
Степень этого многочлена не больше 1m , ибо старшие коэффициенты
у )(xa и )()(1 xbxq совпадают и равны mnmn abab 1 . После не более чем 1 nm
таких шагов степень остатка окажется меньше m .
Экспонентой многочлена g называется наименьшее положительное
целое число e, для которого g(x)│(xe - 1). В частности, g∈Z2[x] примитивен,
если его степень равна k, а экспонента e = 2k - 1.
Теорема 7. Пусть кодирующий многочлен полиномиального (m, n) –
кода имеет вид g(x) = (1 + x)*h(x), где экспонента eмногочлена h(x) больше n.
Тогда можно обнаружить любую комбинацию из двух простых или двойных
ошибок.
При простом умножении на g(x) входные символы перемешиваются и
заменяются их линейными комбинациями, поэтому на самом деле использу-
ется другая процедура кодирования. А именно, многочлен a(x) кодируется
многочленом b(x)=xn-m
a(x) - r(x)=q(x)g(x), где r(x)- остаток от деления xn-m
a(x)
на g(x), а q(x) - неполное частное.
При таком методе кодирования кодовые слова состоят из всех много-
членов, делящихся на )(xg . Вектор коэффициентов nkn bb ,..., совпадает с
входным вектором 10 ,.., maa .
3.2 Понятие о кодах Боуза - Чоудхури - Хоккенгема
В 1960 году независимо Боуз, Чоудхури и Хоккенгем открыли один
класс эффективных полиномиальных кодов с исправлением многократных
ошибок. Эти коды получили название кодов Боуза-Чоудхури-Хоккенгема
или БЧХ-кодов. В таких кодах число контрольных символов зависит от числа
ошибок, которое нужно обнаружить или исправить.
Алфавит БЧХ - кода отождествляется с некоторым конечным полем GF
(q). Из-за использования двоичных устройств q обычно является степенью
11
двойки. Кодирующий многочлен g(x) имеет коэффициенты в этом поле, а
кодовые слова состоят из всех кратных многочлена g(x) [1].
Можно построить БЧХ - код, у которого минимальное расстояние
между словами d , т.е. для любого наперед заданного d.
Кодирующий многочлен g(x) для БЧХ-кода, длина кодовых слов
которого n, строится так: находится примитивный многочлен минимальной
степени q такой, что 12 qn или )1(log 2 nq . Пусть — корень этого
многочлена, тогда рассмотрим кодирующий многочлен g(x) = НОК
))(),...,(( 11 xmxm d , где )(),...,( 11 xmxm d - многочлены минимальной степени,
имеющие корни соответственно 12 ,...,, d .
Построенный кодирующий многочлен производит код с минимальным
расстоянием между кодовыми словами, не меньшим d, и длиной кодовых
слов n [4].
12
ЗАКЛЮЧЕНИЕ
В ходе работы были решены следующие задачи:
1. Изучен теоретический материал, касающийся метода полиноми-
ального кодирования и его использования для обнаружения и корректировки
искажений при передаче по каналу связи с помехами.
2. Продемонстрирована работа метода на примерах.
3. Разработаны алгоритмы построения кода двоичного сообщения,
обнаружения ошибки в коде на выходе канала связи и корректировки кода
для случая, когда это возможно.
4. Реализован метод полиномиального кодирования и декодирова-
ния двоичных сообщений.
В ходе работы сделан вывод, что полиномиальные коды могут исправ-
лять однократные, двойные и многократные ошибки.
13
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 Биркгоф Г., Барти Т. Современная прикладная алгебра, Мир, 1976
2 Дж. Кларк, мл.Дж.Кейн. Кодирование с исправлением ошибок в системах
цифровой связи, 1987
3 Мангушева И.П. Курс лекций по дискретной математике. Часть I. Элемен-
ты теории множеств и отношений. Функции алгебры логики. Функции к-
значной логики. : учеб. пособие. Саратов: Издат. центр «Наука».
4 Лидовский В. В. Теория информации, Москва, 2004
5 Планета информатики. Кодирование информации. [Электронный
ресурс]:[сайт].
URL: http://www.inf1.info/book/export/html/202
Дата обращения 18.05.16
6 НОУ ИНТУИТ. Полиномиальные коды. [Электронный ресурс]:[сайт].
URL: http://www.intuit.ru/studies/courses/2256/140/lecture/3920?page=3
Дата обращения 20.05.16
7 Прикладная математика. Алгоритм Евклида. [Электронный ресурс]:[сайт].
URL : http://www.pm298.ru/mnog2.php
Дата обращения 10.05.16
8 Золотарѐв В. В., Овечкин Г.В. Помехоустойчивое кодирование. Горячая
линия - Телеком, 2004