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

, n = nu + nk , n – значность кода,

Количество контрольных разрядов можно определить по таблице. Номера позиций контрольных символов выбирают по закону 2i, i = 0,1,2… Значения контрольных разрядов выбирают следующим образом.

Алгоритм:

1) Составляется вспомогательная таблица для ряда натуральных чисел в двоичной коде, Число строк в таблице n – значность кода. В каждой i –й строке вспомогательной таблицы ставится в соответствие ai коэффициент, который участвует в проверке, ai – коэффициенты, из которых составлена кодовая комбинация

n

Код

Коэффиц-иенты

n

Код

Коэффици-енты

1

0001

а1

7

0111

a7

2

0010

a2

8

1000

a8

3

0011

a3

9

1001

a9

4

0100

a4

10

1010

a10

5

0101

a5

11

1011

a11

6

0110

a6

12

1100

a12

На основании этой таблицы составляется схема проверок, которые производятся суммированием выбранных проверочных коэффициентов . Для каждой поверки выбираются свои проверочные коэффициенты. В первую проверку входят коэффициенты, которые содержат в младших разрядах единицы. Во вторую проверку входят коэффициенты содержащие единицу во втором разряде(a2,a3,a6,). В третью проверку входят коэффициенты содержащие единицу в третьем разряде.

Схему проверок сведём в отдельную таблицу.

Nпроверок

Схема

Nконтрольных. символов

1

a1 + a3 + a5 + a7 + a9 + a11

1

2

a2 + a3 + a6 + a7 + a10 + a11

2

3

a4 + a5 + a6 + a7 + a12

3

4

a8 + a9 + a10 + a11 + a12 +…

4

Количество проверок равно количеству разрядов. Контрольные коэффициенты выбираются таким образом, чтобы проверочная сумма была равна нулю. Т.е. если количество единиц чётное, то контрольный разряд нулевой, если нечётнно, то контрольный разряд равен единице.

Пример: Построить код Хэминга по комбинации

0101                             nu = 4               nk = 3               nk = log(nu + 1) + log(nu + 1)

1,2,3                                                                             k = 7    2i = 1,3,4,8

Контрольные разряды будут занимать позиции 1,2,4.

Код Хэминга

а1a2a3a4a5a6a7

k1k20  k31  0  1              - макет

1) a1 + a3 + a5 + a7 = k1 + 0 + 1 + 1 = 0 Þ k1 = 0

2) a2 + a3 + a6 + a7 = k2 + 0 + 0 + 1 = 0 Þ k2 = 1

3) a4 + a5 + a6 + a7 = k3 + 1 + 0 + 1 = 0 Þ k3 = 0

Код Хэминга будет иметь вид 0100101

Декодирование кода Хэминга

В процессе декодирования производится проверка на чётность по схеме проверок и строится вектор ошибок S(Sk, …,S1). Если проверочная сумма равна нулю, то в вектор ошибки записывается ноль иначе записывается единица. Всего делается nk проверок. В результате первой проверки определяется составляющая S1, последней составляющая Sk. Если принятая кодовая комбинация содержит ошибку, то в векторе S образуется число, которое указывает номер ошибочной позиции.

a1a2a3a4a5a6a7

 
 


Пример: Послана комбинация vk = 0100101. Принятая комбинация vx = 0100111, т.е. имеется ошибка в шестом разряде Составим схему проверок.

1) a1 + a3 + a5 + a7 = 0 + 0 + 1 + 1 = 0 Þ S1 = 0

2) a2 + a3 + a6 + a7 = 1 + 0 + 1 + 1 = 1 Þ S2 = 1

3) a1 + a5 + a6 + a7 = 0 + 1 + 1 + 1 = 1 Þ S3 = 1

S = 110 ® это двоичное число шесть, что соответствует разряду a6, следовательно, ошибка в шестом разряде.

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

Особенности декодирования.