Вы находитесь на странице: 1из 6

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 5.

Помехоустойчивое кодирование.
Линейные групповые коды.

Преобразование информации из одной формы представления


(знаковой системы) в другую называется кодированием. Понятие кодирование означает
преобразование информации в форму, удобную для передачи по определѐнному каналу
связи.
Декодирование – восстановление принятого сообщения из
кодированного вида в вид доступный для потребителя.
Высокие требования к достоверности передачи, обработки и
хранения информации диктуют необходимость такого кодирования
информации, при котором обеспечивалось бы возможность обнаружения и
исправления ошибок. Это достигается путем введения избыточности,
которая позволяет выбрать передаваемые последовательности символов,
чтобы они удовлетворяли дополнительным условиям, проверка которых на
приемной стороне дает возможность обнаружить и исправить ошибки.
Коды, обладающие таким свойством, получили название
помехоустойчивые. Они используются для обнаружения ошибок и для исправления
ошибок (корректирующие коды).

1. Линейные коды – это коды, в которых проверочные символы представляют


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

Для двоичных кодов в качестве линейной операции используют сложение по модулю 2:


0 0=0; 0 1=1; 1 0=1; 1 1=0;
Последовательность нулей и единиц, принадлежащих данному коду – кодовый
вектор.
Свойство линейных кодов: сумма (разность) кодовых векторов линейного кода дает
вектор, принадлежащий данному коду.
Линейные коды образуют алгебраическую группу по отношению к операции
сложения по модулю 2.
Группа – множество элементов, в котором определена одна основная операция
и выполняются следующие аксиомы:
1. В результате применения операции к любым двум элементам группы образуется
элемент этой же группы (требование замкнутости).
2. Для любых трех элементов группы a, b, c удовлетворяется равенство (a+b)+c=a+(b+c) ,
если основная операция – сложение, равенство c(ab)=(bc)a, если основная операция –
умножение.
3. В любой группе Gn существует однозначно определенный элемент, удовлетворяющий
при всех значениях a из Gn условию a+0=0+a, если основная операция – сложение, или
условию a*1=1*a=a , если основная операция – умножение. В первом случае этот элемент
называют нулем и обозначают символом 0, а во втором –1 и обозначают символом 1.
4. Всякий элемент а группы обладает элементом, однозначно определенным уравнением
a+(-a)=-a+a=0, если основная операция – сложение, или уравнением a*a-1=a-1*a=1 если
основная операция – умножение.
В первом случае этот элемент называют противоположным и обозначают (-а), а во
втором – обратным и обозначают а-1 .
Если операция, определенная в группе, коммутативна, то есть справедливо
равенство a+b=b+a (для группы по сложению) или равенство a*b=b*a (для группы по
умножению), то группу называют коммутативной или абелевой.
1
Свойство групповых кодов: минимальное кодовое расстояние между кодовыми
векторами группового кода равно минимальному весу ненулевых кодовых векторов.
Вес кодового вектора (кодовой комбинации) равен числу его ненулевых
компонентов.
Расстояние между двумя кодовыми векторами равно весу вектора, полученного в
результате сложения исходных векторов по модулю 2.
Расстоянием Хэмминга между двумя кодовыми
n-последовательностями, bi и bj, которое будем далее обозначать
d(i; j), является число разрядов, в которых символы этих последовательностей не
совпадают. Для определения кодового расстояния
между двумя комбинациями двоичного кода достаточно сложить их по модулю
2, и подсчитать число единиц в полученном результате.
Код Хэмминга представляет собой один из важнейших классов линейных кодов,
нашедших широкое применение на практике и имеющих простой и удобный для
технической реализации алгоритм обнаружения и исправления одиночной ошибки.
Пример 1. При рассмотрении двоичных кодов используется операция сложения
по модулю 2. Кодовое расстояние между двоичными векторами: 1100011 и 1001111 равно
1100011
1001111
0101100 d=3
Пример 2. Кодовое расстояние между двоичными векторами: 1011101, 0111101 и
0001110 равно
1011101
0111101
0001110
1101110 d=5
Выбранная нами операция коммутативна, поэтому рассматриваемые группы
будут абелевыми.
Нулевым элементом является комбинация, состоящая из одних нулей.
Противоположным элементом при сложении по модулю 2 будет сам заданный элемент.
Следовательно, операция вычитания по модулю 2 тождественна операции сложения.

Задание 1.: Определить, являются ли группами следующие множества


кодовых комбинаций:
1) 0001, 0110 , 0111, 0011
2) 001, 001, 010, 011, 100, 101, 110, 111
3) 1101, 1110, 0000, 0111
4) 1010, 1000, 0000, 1111, 0001, 001
5) 10101, 10001, 01010, 00101, 11100, 11100

Задание 2.: Определить кодовое расстояние d (Хэмминга) между


следующими комбинациями двоичных кодов, используя правило
четности:
1) 100101100 и 110110101
2) 0001 и 0001
3) 1100101000 и 0101010101
4) 11000111001 и 10000011101
5) 001101 и 101001
6) 100101100 и 110110101
7) 101001011110 и 110000011111
8) 010101100011, 111110001100 и 000010001010.
В общем случае для обнаружения r ошибок минимальное кодовое расстояние d0=r+1.
Минимальное кодовое расстояние, необходимое для одновременного обнаружения и
исправления s ошибок: d0=r+ s +1, (s –число исправляемых ошибок).

2. Проверка на четность для обнаружения одиночной ошибки при передаче


кодированной информации
Рассмотрим пример использования избыточности кодовых обозначений для
обнаружения одиночной ошибки. При этом будем исключать возможность двух и более
ошибок.
Сопоставим кодовые обозначения всевозможным цепочкам x0x1x2 ...xN−2 из N −1
чисел 0 и 1 (таких цепочек будет 2N−1 ), а N-ую цифру xN−1 будем выбирать так, чтобы
сумма по модулю 2 x0 +x1+x2...+xN−1 была четной. После передачи на приемной конце
линии получена цепочка x0’x1’x2’ ...xN−1’. В случае одиночной ошибки среди N
элементарных сигналов сумма x0’+x1’+x2’+ ...xN−1’ будет нечетной.
Этот прием позволяет обнаружить нечетное число ошибок, при этом четное число
ошибок не будет обнаружено. Однако, в случае, если вероятность появления более одной
ошибки среди N сигналов мала, вышеописанный метод представляет ценность. В случае
обнаружения ошибки, сообщение можно либо игнорировать, либо запросить повторно.
Скорость передачи при таком методе кодирования остается большой:
𝑁
* L бит/ед.вр. или 𝑁
1 1
букв/ед.вр.
𝑁 𝑁 𝐻

Прием проверки на четность можно применить несколько раз. Часто это позволяет
не только обнаружить, но и исправить ошибку.
Число информационных символов кода, обнаруживающего и корректирующего
одиночную ошибку равно:

2𝑛 2𝑛
𝑛+1,
где nи –количество информационных символов
2n- -полное число комбинаций кода. При этом подразумевается, что общая длина
кодовой комбинации: n=nи+nk
Пример 3. Пусть N = 3,
𝑛 23 8
=2, nи=1
3+1 4
При этом используется два кодовых обозначения: x0 –информационный сигнал, x1 ,
x2 – проверочные (контрольные сигналы). Подберем x1 и x2 так, чтобы обе суммы по
модулю 2 x0 + x1 и x0 + x2 были четные. Тогда получим два кодовых обозначения 000 и
111.
Проверив на приемном конце линии суммы по модулю 2 x0’+x1’и x0’+x2’ , можно
точно установить, какая цепочка x0’x1’x2 была передана.
Если обе суммы по модулю 2 x0’+x1’и x0’+x2’ четные, то ошибок при передаче не
было.
Если нечетной будет одна из сумм по модулю 2, значит, ошибочно принят
входящий в эту сумму по модулю 2 проверочный (контрольный) сигнал x1 или x2 .
Если обе суммы по модулю 2 нечетные, значит неверно принят информационный
сигнал x0 .
При таком методе кодирования будут исправлены все одиночные ошибки. Скорость
передачи при этом будет
, бит/ед. вр.
3
Для вычисления основных параметров кода Хэмминга задается либо количество
информационных символов, либо информационных комбинаций N= 𝑛 . Соотношения n, nи
и nк представлены в таблице 1:
Таблица 1
n nи nк
1 0 1
2 0 2
3 1 2
4 1 3
5 2 3
6 3 3
7 4 3
8 4 4
9 5 4
10 6 4
11 7 4
12 8 4
13 9 4
14 10 4
15 11 4
16 11 5

Для выбора проверочных позиций составляется таблица для ряда натуральных


чисел в двоичном коде. Число ее строк n = nи + nк. Первой строке соответствует
проверочный коэффициент а1, второй а2 и т.д. Затем выявляют проверочные позиции,
выписывая коэффициенты по следующему принципу: в первую проверку входят
коэффициенты, которые содержат единицу в младшем разряде (а1, а3, а5, а7, а11,…. ), во
вторую – во втором разряде (а2, а3, а6, а7, а10, а11,... ), в третью – в третьем разряде и т. д.
(см. таблицу 2.)
Таблица 2
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
а1 а2 а3 а4 а5 а6 а7 а8 а9 а10 а11
Номера проверочных коэффициентов соответствуют номерам проверочных
позиций. Составляется общая таблица 3 проверочных позиций кода Хэмминга.

Таблица 3
N Проверочные позиции N контрольного
проверки символа
1 1,3,5,7,9,11 1
2 2,3,6,7,10,11,14,15,18.19,22,24... 2
3 4,5,6,7,12,13,14,15,20,21,22,23.. 4
4 8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31,40,41,42... 8
i
Номера контрольных символов выбирают по закону N=2 , i=0,1,2...n.
Затем определяются значения контрольных коэффициентов (0 или 1) по правилу
четности: сумма единиц на проверочных позициях должна быть четной. Если она четная,
то значение контрольного коэффициента 0, в противном случае –1.

Пример 4. Построить макет кода Хэмминга и определить значения


корректирующих разрядов для кодовой комбинации(nи=4) 0101.
Решение.
По таблице 1 минимальное число контрольных символов nк=3, а общее число
символов n= nи + nк =7. По закону N N=2i, i=0,1,2...n определяются позиции проверочных
символов: 1,2 и 4, остальные позиции занимают информационные символы. Кодовая
комбинация будет иметь вид:
К=_ _ 0 _ 1 0 1
Для определения значения корректирующих разрядов составляются уравнения:
а1= а3 а5 а7 = 0 1 1= 0
а2= а3 а6 а7 = 0 0 1=1
а4= а5 а6 а7 = 1 0 1=0

Следовательно, К=0100101.

Задание 3.: Пусть дана информационная последовательность:


1) 11001001
2) 10011010
3)
4) 10101001.
Преобразовать заданные информационные слова в код Хэмминга.

Пример 5. Пусть теперь N = 7.

𝑛
27 128
7+1 8
, nи=4
x1 ,x2 ,x3 ,x4 – информационные сигналы. Тогда число кодовых обозначений будет
24 = 16. Первые четыре сигнала в 16- ти кодовых обозначениях:

0000 0100 1000 1100


0001 0101 1001 1101
0010 0110 1010 1110
0011 0111 1011 1111
x5 ,x6 ,x7 – проверочные (контрольные) сигналы. Подберем их так, чтобы были
четными суммы:

s1 = x 1 +x 2 +x 3 +x 5=0+0+0+0=0
s2 = x 1 +x 2 +x 4 +x 6
s3 = x 1 +x 3 +x 4+x 7
Получим:
0000000 0100110 1000111 1100001
0001011 0101101 1001100 1101010
0010101 0110011 1010010 1110100
0011110 0111000 1011001 1111111
На приемном конце линии получим цепочку сигналов x1’x2’ x3’ x4’ x5’ x6’ x7’.
Если один элементарный сигнал принят неправильно, то хотя бы одна из сумм
s1’ = x1’ +x2’ +x3’+x5’
s2’ = x1’+ x2’ +x4’ +x6’
s3 ’= x1’ +x3’ +x4’ +x7’
окажется нечетной.
Если все суммы четные, то сообщение принято без ошибок.
Нечетность одной из сумм s1’, s2’ ,s3’ указывает на ошибочно принятый входящий в
эту сумму один из трех контрольных сигналов (x5’ ,x6’ ,x7’).
Нечетность двух сумм говорит о неверно принятии того из трех сигналов x1’, x2’,
x3’, который входит в обе эти суммы.
Если все три суммы нечетные, то неверно принят сигнал x1’ , который входит во
все эти суммы.
Пусть на приемном конце линии получено сообщение 0001101. Суммы
s1’ = x1’+x2’+x3’+x5’=0 0 0 1=1,
s2’ = x1’+ x2’ +x4’ +x6’=0 0 1 0=1, - нечетные,
а сумма s3 ’= x1’ +x3’ +x4’ +x7’=0 0 1 1=0 – четная.

Значит, неверно принят входящий в суммы s1’и s2’ сигнал x1’ . На самом деле
передавался сигнал x1=1, а не x1=0, а сообщение выглядело 1001101.

Пример 6. В результате передачи кодовой комбинации К=111010001001 принята


кодовая комбинация К*=110010001001, т.е. произошло искажение 3-го разряда.
Обнаружить ошибку.
Решение.
Значения проверок равны:
Е1= а1 а3 а5 а7 а9 а11 = 1 0 1 0 1 0=1
Е2= а2 а3 а6 а7 а10 а11 = 1 0 0 0 0 0=1
Е3= а4 а5 а6 а7 а12 = 0 1 0 0 1=0
Е4= а8 а9 а10 а11 а12 = 0 1 0 0 1=0

Тогда контрольное число (синдром) ошибки:

С= Е4 Е3 Е2 Е1=0011(2)=3(10)

Переход из двоичной системы счисления в десятичную:


1*20+1*21+0*22+0*23=3

Значение синдрома указывает, что в результате однократной ошибки искажен 3-й


разряд принятой кодовой комбинации. Для исправления ошибки достаточно
инвертировать искаженный разряд.

Задание 4.: Пользуясь кодом Хэмминга найти ошибку в следующем сообщении:


1111 1011 0010 1100 1101 1100 110.
Контрольные вопросы
1.Какие коды называются помехоустойчивыми?
2.Что называется избыточностью?
3.Как образуются корректирующие коды?
4.Объяснить методику построения кода Хэмминга.
5.Назовите основные параметры кода Хэмминга?
6.Как определить общее число элементов кодовых комбинаций кодов Хэмминга?
7.Как определить число проверочных и информационных элементов кода
Хэмминга?
8.Как выбираются номера проверочных позиций кода Хэмминга?
9.По какому закону рассчитывают номера контрольных символов?
10.Объяснить правило четности.
11.Как происходит переход из двоичной системы счисления в десятичную?