Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2Diskretnaya_matematika_-_2_semestr.doc
Скачиваний:
46
Добавлен:
26.09.2019
Размер:
5.82 Mб
Скачать

20(37) Самокорректирующиеся коды. Коды Хэмминга. Алгоритм построения кода Хэмминга

Пусть дан алфавит сообщений из 0 и 1, A={0,1}. Множество A содержит 2 символа

12…ȃs} - сножество всех слов вида ȃ=a1a2…am в алфавите A имеющих фиксированную длину n. Таких слов 2m=S

Предположим, что в канале связи по которому передаются слова (сообщения) действует источник помех который может вызвать ошибки не более чем в p символов одного слова. Это значит что двоичная последовательность полученная на выходе канала связи отличается от двоичной последовательности потупившей на вход этого канала не более чем в p позициях. Если передавать исходное сообщение a1a2…am без предварительного кодирования, то на выходе канала связи невозможно будет установить какое сообщение фактически было передано. В связи с эти возникает вопрос: нельзя ли осуществить кодирование слов ȃ из множество {ȃ12…ȃs}, т.е. слов вида a1a2…am словами b1b2…bn длины n так чтобы коду слова b1’b2’…bn’ полученному на выходе при передаче слова b1b2…bn можно было однозначно восстановить этот код и значит исходное сообщение a1a2…am

Опр Код обладающий данным свойством называется самокорректирующимися кодами относительно рассматриваемого источника помех или кодами исправляющими p ошибок.

Рассмотрим кода исправляющие 1 ошибку т.е. p=1, которые называются кодами Хэмминга. Пусть в канале связи при передаче сообщения может произойти не более 1 ошибки. Это означает что если исходное сообщение a1a2…am кодируется b1b2…bl:(b=m+k), то на выходе возможны следующие варианты кодов:

b1b2…bl

┐b1b2…bl

b1┐b2…bl

b1b2…┐bl

Т.о число вариантов равно l+1. Т.к. ошибка может не произойти либо она в одном из разрядов (компоненте) и символ bi заменится на противоположный ┐bi

Число дополнительных разрядов для построенных кодов Хэмминга нужно выбрать так чтобы их хватило для кодирования перечисленных l+1 случаев => необходимо чтобы 2k>=l+1. Т.к. l=m+k => k=l-m

2l-m>=l+1

2l/2m>=l+1=>2m<=2l/(l+1)

Поэтому зная l выбираем как наименьшее целое удовлетворяющее условию 2m<=2l/(l+1)

Опр Число l называется длиной кода Хэмминга, число m - число информационных символов

Зам Учитывая что l=m+k можно выбирать не l а число k, которое называется числом контрольных символов и является наименьшим целым числом удовлетворяющий условиям 2k>=k+m+1

2m<=2m+k/(m+k+2)

2m/2m+k<=1/(m+k+1)

2-k<=1/(m+k+1)

2k>=m+k+1

Алгоритм построения кода Хэмминга

При построении кодов Хэмминга первое что нужно сделать это по числу m определить число k и l. Пусть для сообщения ȃ=a1a2…am длины m необходимо построить код Хэмминга.

m=9, ȃ=101110111= a1a2…am, l=13, k=4, ƀ=b1b2b3…b13

1) Представим каждое число i L={1,2…l} в виде k-разрядного двоичного числа ῖ =Vk-1Vk-2…V1V0. Результаты запишем в таблицу

1

2

3

4

5

6

7

8

9

10

11

12

13

V0

1

0

1

0

1

0

1

0

1

0

1

0

1

V1

0

1

1

0

0

1

1

0

0

1

1

0

0

V2

0

0

0

1

1

1

1

0

0

0

0

1

1

V3

0

0

0

0

0

0

0

1

1

1

1

1

1

2) Разобьем множество L на k подмножеств следующим образом:

L0={i L|V0=1}

L0={1,3,5,7,9,11,13}

L1={i L|V1=1}

L1={2,3,6,7,10,11}

L2={i L|V2=1}

(37)L2={4,5,6,7,12,13}

L3={i L|V3=1}

L3={8,9,10,11,12,13}

3) Определим номера контрольных и информационных разрядов.

Первые элементы (их ровно k) этих множеств Li есть степени числа 2. Они определяют номера контрольных разрядов кода Хэмминга. Остальные элементы множества L определяют номера информационных разрядов.

=> в коде Хэмминга разряды b1,b2,b4,b8 – контрольные.

Остальные b2,b5,b6,b7,b9,b10,b11,b12,b13 – информационные

4) Формирование значений информационных символов.

Информационные символы коды Хэмминга формируются естественным образом из символов исходного сообщения a1a2…am

А именно

a1=b3=1

a2=b5=0

a3=b6=1

a4=b7=1

a5=b9=1

a6=b10=0

a7=b11=1

a8=b12=1

a9=b13=1

ȃ=101110111

5) Формирование значений контрольных символов.

После определения информационных символов контрольные символы определяются следующим образом

- сложение по модулю 2

bj – разряды имеющие номера из соответствующих множеств Li

b1=b3 b5 b7 b9 b11 b13=1 0 1 1 1 1 1=1

b2=b3 b6 b7 b10 b11=1 1 1 0 1=0

b4=b5 b6 b7 b12 b13=0 1 1 1 1=0

b8=b9 b10 b11 b12 b13=1 0 1 1 1=0

6) Окончательно для сообщения ȃ=101110111 код Хэммига будет иметь следующий вид ƀ=b1b2b3…b13=1010011010111.

Т.о. Можно построить код Хэмминга для сообщения с любым набором длины m