Информация, язык, общество. Измерение информации. Энтропия и её свойства. Определение информационных потерь в каналах связи. Передача информации по дискретным каналам связи. Код Хэминга, страница 12

А3 = 10          0 Å 1 = 1             нечетн. – 1

А4 = 11          1 Å 1 = 0

Определим кодовую комбинацию

А1ÅА2       Å            d = 1                  А3ÅА4       Å          d = 1

                                   01                                                              01

Для кода 2  

А1=000      А2ÅА4     011                         А3ÅА2         101

А2=011                     110    d = 2                                 011    d = 2

А3=101                     101                                             110 

А4=110

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

Пример: Построим код: К коду 2 добавим два символа, повторив первых два символа получим код 3:

Код 2  

А1=000

А2=011

А3=101

А4=110

            Код 3

00

01

10

11

000

101

110

011

         информационные разряды         контрольные разряды

Определим кодовое расстояние между комбинациями

Строим матрицу кодовых расстояний

А1

А2

А3

А4

d0 = 3

 А1

0

3

3

4

 А2

0

4

3

А3

0

3

А4

0

Пусть передаётся комбинация А3, и она содержит ошибку

                                                                матрица кодовых расстояний

А1

А2

А3

А4

Vx

4

3

1

2

vx ближе всего к А3, следовательно посылалась А3 и мы ошибку исправили.

Корректирующая способность кода зависит от минимального кодового расстояния d0. Если

d0 = 3, то он может исправлять ошибку, то есть корректирующую способность кода можно повышать, если увеличивать минимальное кодовое расстояние.

Для построения кодов, которые обнаруживают и исправляют одиночную ошибку d0 = 3, должно выполняться неравенство:

,  где

nи – количество информационных разрядов

n – значность кода

nк – количество контрольных разрядов

n = nи + nк

Поэтому результаты сведем в таблицу:

n

5

6

7

8

9

10

11

12

13

14

15

nи

2

3

4

4

5

6

7

8

9

10

11

nк

3

3

3

4

4

4

4

4

4

4

4

Предположим, что строим код на тридцать два сообщения nи = 5, выделяем столбец

nк = 4

n = 9

Расчеты можно вести по формуле.

Для кода, который обнаруживает двойную ошибку, а исправляет одиночную:

- значения округляются в большую сторону

 - до большего целого числа

Обозначим буквой:

r – кратность обнаруживающих ошибок;

s – кратность исправляемых ошибок;

Тогда для кодов обнаруживающих и исправляющих ошибки:

d0 = r + s + 1,

для кодов, которые только обнаруживают ошибки d0 = n + 1,

для кодов, которые только исправляют ошибки d0 = 2s + 1 (когда r > s).

Если

d0   r    s

1    0   0                 отличие комбинации 

2    1   0                             обнаружение одиночной ошибки

3    1   1                 обнаружение одиночной ошибки и исправление одиночной ошибки

3    2   0                обнаруживающий 2-ую ошибку

Количество контрольных разрядов и значность кода для разных минимальных кодовых расстояний, связано соотношением:

Для кодов, обнаруживающих все трехкратные ошибки.

          количество обнаруженных ошибок

Для кодов, исправляющих двойные ошибки

Для кодов, исправляющих тройные ошибки:

Для кодов, исправляющих S ошибок:

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

r – кратность обнаруживающих ошибок.

s – кратность исправляемых ошибок.

nи = 5;     nк = 1 + log[6 + log6] = 5

n = nи + nк = 10