Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное_пособие_информатика_v.doc
Скачиваний:
44
Добавлен:
04.11.2018
Размер:
606.21 Кб
Скачать

5.2. Коды с исправлением ошибок

Для того, чтобы код исправлял ошибки, необходимо увеличить его минимальное кодовое расстояние.

Пример. Трёхразрядный код состоит из двух допустимых комбинаций 000 и 111. В случае одиночной ошибки для первого кодового набора возможные кодовые наборы 001,010,100, для второго – 011,101,110. У каждого допустимого кодового набора “свои” недопустимые кодовые наборы. Его минимальное кодовое расстояние dmin равно 3.

Если ошибка одиночная, то удается определить её местоположение и исправить её, так как каждая ошибка приводит к недопустимому кодовому набору, соответствующему только одному из допустимых кодовых наборов.

Определение. Код называется кодом с исправлением ошибок, если всегда из неправильного кодового набора можно получить правильный кодовый набор (например, коды Хэмминга).

Если dmin = 3, то любая одиночная ошибка переводит допустимый кодовый набор в недопустимый, находящийся на расстоянии, равном 1, от исходного кодового набора, и на расстоянии, равном 2, от любого другого допустимого кодового набора. Поэтому в коде с dmin = 3 можно исправить любую одиночную ошибку или обнаружить любую двойную ошибку. Если dmin = 4, то можно исправить любую одиночную ошибку и обнаружить любую двойную или обнаружить тройную ошибку.

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

5.2.1. Основные принципы построения кодов Хэмминга с исправлением ошибок

  1. К каждому набору из m информационных разрядов (сообщению) присоединяются k разрядов p1, p2, …pk проверки на чётность.

  2. Каждому из (m+k) присваивается десятичное значение позиции, начиная со значения 1 для старшего разряда и кончая значением (m+k) для младшего разряда.

  3. Производится k проверок на чётность числа единиц в выбранных разрядах каждого кодового набора. Результат каждой проверки на чётность записывается как 1 или 0 в зависимости от того, обнаружена ошибка или нет.

  4. По результатам проверок строится двоичное число ck c2c1, равное десятичному значению, присвоенному местоположению ошибочного разряда, если произошла ошибка, и нулю при её отсутствии. Это число называется номером позиции ошибочного разряда.

Число разрядов k должно быть достаточно большим для указания положения любой из (m+k) возможных одиночных ошибок. Так как m+k+1-количество возможных событий, 2k – максимальное количество кодовых комбинаций, то k должно удовлетворять неравенству 2k m+k+1.

Определим максимальное значение m для заданного количества k.Обозначим количество разрядов в коде n= m+k.

Таблица 15

n

1

2…3

4…7

8...15

16...31

32...63

m

0

0...1

1…4

4…11

11…26

26…57

k

1

2...2

3…3

4…4

5…5

6…6

Определим теперь позиции, которые необходимо проверить в каждой из k проверок. Если в кодовой комбинации ошибок нет, то контрольное число двоичное ck c2c1 содержит только 0. Если в первом разряде контрольного числа стоит 1, то в результате первой проверки обнаружена ошибка.

Таблица 16

№ позиции

возможной ошибки

Двоичный эквивалент

0

00000

1

00001

2

00010

3

00011

4

00100

5

00101

6

00110

7

00111

8

01000

9

01001

Окончание таблицы 16

№ позиции

возможной ошибки

Двоичный эквивалент

10

01010

11

01011

12

01100

13

01101

14

01110

15

01111

16

10000

17

10001

18

10010

Из табл. 16 двоичных эквивалентов для номера позиции возможной ошибки видно, что в первую проверяемую группу разрядов входят 1,3,5,7,9, 11,13,15, 17 и т.д., во вторую – 2,3,6,7,10,11,14,15,18 и т.д.

Таблица 17

Проверка

Проверяемые разряды

1

1,3,5,7,9, 11,13,15, 17 …

2

2,3,6,7,10,11,14,15,18 …

3

4,5,6,7, 12,13,14, 15 …

4

8,9,10,11, 12,13,14, 15 …

Разряды, номера которых кратны степеням 2: 1,2,4,8,16…, встречаются в каждой проверяемой группе один раз. Удобно использовать эти разряды в качестве контрольных, а остальные – информационных разрядов.

Пример. Пусть исходное сообщение 00111. Количество информационных разрядов m=5. Количество контрольных разрядов k=4. Длина кода Хэмминга равна 9. Построим код Хэмминга для исходного сообщения.

Номер позиции

1

2

3

4

5

6

7

8

9

Исходное сообщение

0

0

1

1

1

1-я контрольная группа

0

0

0

1

1

2-я контрольная группа

0

0

1

1

3-я контрольная группа

0

0

1

1

4-я контрольная группа

1

1

Код Хэмминга

0

0

0

0

0

1

1

1

1

Код Хэмминга для десятичных цифр в двоично-десятичном коде 8421 приведен в табл. 18.

Таблица 18

Десятичная цифра

p1

p2

m1

p3

m2

m3

m4

0

0

0

0

0

0

0

0

1

1

1

0

1

0

0

1

2

0

1

0

1

0

1

0

3

1

0

0

0

0

1

1

4

1

0

0

1

1

0

0

5

0

1

0

0

1

0

1

6

1

1

0

0

1

1

0

7

0

0

0

1

1

1

1

8

1

1

1

0

0

0

0

9

0

0

1

1

0

0

1

Рассмотрим способ выявления положения ошибки и её исправления.

Пример. Пусть передана последовательность 1000011. Из-за ошибки в третьем разряде принято сообщение 1010011. Положение ошибки можно определить, выполняя 3 проверки на четность.

Номер позиции

1

2

3

4

5

6

7

ci

Сообщение

1

0

1

0

0

1

1

1-я проверка на четность

1

1

0

1

1

2-я проверка на четность

0

1

1

1

1

3-я проверка на четность

0

0

1

1

0

Исправленное сообщение

1

0

0

0

0

1

1

Полученный номер позиции c3c2c1= 011, т.е. ошибка в третьем разряде.