- •Теория информационных процессов и систем
- •Лекции читает канд.техн.наук, доцент Литвинов Владислав Леонидович
- •Связь между корректирующей способностью кода и длиной кода
- ••Пусть необходимо исправить ошибки кратности от 1 до t. Число возможных однократных ошибок
- •• Отсюда получим:
- ••В частном случае, когда требуется исправить однократные ошибки, имеем зависимость 2r – r
- ••Сравните с аналогичной таблицей для помехоустойчивого кода, исправляющего двукратные ошибки
- •Систематические коды
- ••Получение кодовых комбинаций производится с помощью порождающих матриц, состоящих из k строк и
- ••Информационную подматрицу часто берут в виде квадратной единичной матрицы:
- •• Пусть, например, порождающая матрица (7,4)-кода имеет вид:
- •Обнаружение ошибок с помощью систематических кодов
- •• Получается матрица H PT Ir ,
- ••Возьмем порождающую матрицу (7.4)-кода из предыдущего примера и составим проверочную матрицу. Проверочная подматрица
- ••Проверим полученное в предыдущем примере кодовое слово
- ••Синдром ненулевой, следовательно, обнаружена ошибка. Можно ли эту ошибку не только обнаружить, но
- •Коды Хемминга
- ••Затем строят порождающую матрицу G, исходя из того, что матрицы H и G
• Пусть, например, порождающая матрица (7,4)-кода имеет вид:
|
1 |
0 |
0 |
0 |
0 |
1 |
1 |
|
0 |
1 |
0 |
0 |
1 |
0 |
1 |
|
0 |
0 |
1 |
0 |
1 |
1 |
|
G |
0 |
||||||
|
0 |
0 |
0 |
1 |
1 |
1 |
|
|
1 |
•и на вход вторичного (помехоустойчивого) кодера поступила исходная комбинация m = [0 0 1 1]. Тогда кодовое слово образуется умножением исходной комбинации на порождающую матрицу.
|
|
1 |
0 |
0 |
0 |
0 |
1 |
1 |
|
|
• U = m·G = |
|
0 |
1 |
0 |
0 |
1 |
0 |
|
|
|
|
1 |
0 0 1 1 0 |
0 1 |
|||||||
|
0011 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
||
|
|
|
|
|||||||
|
|
0 |
0 |
0 |
1 |
1 |
1 |
|
|
|
|
|
1 |
|
|
Обнаружение ошибок с помощью систематических кодов
•Имея порождающую матрицу систематического кода G, строят проверочную матрицу H, посредством которой можно обнаруживать и по возможности исправлять ошибки.
•Проверочная матрица должна быть ортогональна любой разрешенной комбинации кода, то есть произведение проверочной матрицы на любую разрешенную кодовую комбинацию должно давать нулевой вектор. Порядок построения проверочной матрицы следующий.
1.В порождающей матрице G выделяют информационную квадратную подматрицу I и проверочную подматрицу P.
2.Проверочную подматрицу транспонируют, получая подматрицу PT.
b11 |
b21 |
... |
bk1 |
|
|||
PT b |
12 |
b |
22 |
... |
b |
k 2 |
|
|
b |
... |
|
|
|||
b |
1r |
2r |
b |
kr |
|
||
|
|
|
|
|
|||
3.Справа к подматрице PT приписывают квадратную единичную матрицу размера r×r.
• Получается матрица H PT 
Ir ,
•которую используют для обнаружения ошибок путем проверки ее ортогональности полученному кодовому слову Û. Вычисляют вектор s, называемый синдромом ошибки:
•s = H·Û.
•Если синдром ошибки равен нулю, то комбинация передана безошибочно, в противном случае ошибка существует, ее можно даже исправить.
•Можно показать, что синдром ошибки однозначно определяется вектором ошибки. Действительно: S = H∙Û, но в свою очередь
Û = U e, значит S = H∙(U e) = H∙U H∙e. Матрица H составляется так, чтобы выполнялось условие ортогональности H∙U = 0, следовательно
S = H∙e.
•Возьмем порождающую матрицу (7.4)-кода из предыдущего примера и составим проверочную матрицу. Проверочная подматрица P имеет вид:
|
0 |
1 |
1 |
|
|
|
0 |
1 |
1 |
1 |
|
|
|
1 |
|
|
|
|
|
|
|
1 |
0 |
P |
T |
|
1 |
0 |
1 |
|
||
P |
1 |
1 |
|
|
|
1 |
||||
|
0 |
|
|
|
1 |
1 |
0 |
|
||
|
1 |
1 |
|
|
|
|
1 |
|||
|
1 |
|
|
|
|
|
|
|
•Составим проверочную матрицу, приписав справа единичную матрицу 3 X 3:
|
0 |
1 |
1 |
1 |
1 |
0 |
0 |
H |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
|
1 |
1 |
0 |
1 |
0 |
0 |
|
|
1 |
||||||
|
|
|
|
|
|
|
|
•Проверим полученное в предыдущем примере кодовое слово
•U = [0 0 1 1 0 0 1].
|
0 |
1 |
1 |
1 |
1 |
0 |
0 |
|
|
Т |
0 |
||||
s H U |
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
|
0 |
0 1 1 0 0 1 |
|
0 |
|
|
|
|
|
|
|
|||||||||||
|
|
1 |
1 |
0 |
1 |
0 |
0 |
|
|
|
|
|
|
||
|
|
1 |
|
|
|
|
0 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•Синдром равен 0, следовательно, ошибки нет. Комбинацию можно декодировать. Это просто.
•Первые четыре разряда принятого кодового слова и представляют собой исходную комбинацию.
•Допустим, произошла ошибка во втором разряде и была принята ошибочная комбинация Û = [0 1 1 1 0 0 1].
•Вычислим синдром
ˆ |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
|
|
Т |
1 |
||||
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
|
0 1 1 1 0 |
0 1 |
|
0 |
|
||
s H U |
|
|
|
|
|||||||||||
|
|
1 |
1 |
0 |
1 |
0 |
0 |
|
|
|
|
|
|
||
|
|
1 |
|
|
|
|
1 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•Синдром ненулевой, следовательно, обнаружена ошибка. Можно ли эту ошибку не только обнаружить, но и исправить?
•Обратим внимание, что всего возможно 7 различных однократных ошибок (по числу разрядов). Синдром трехзначный, значит, существует 7 ненулевых синдромов. То есть каждой ошибке можно сопоставить свой синдром. Следовательно, по виду синдрома можно локализовать, а значит, исправить ошибку.
•Синдром совпадает с тем столбцом проверочной матрицы, номер которого соответствует позиции ошибки (верно только для однократных ошибок).
Коды Хемминга
•В отличие от канонического систематического кода, в коде Хемминга информационные и проверочные биты не разнесены в отдельные подматрицы, а чередуются. Если биты кодовой комбинации пронумеровать, начиная с 1, слева направо, то контрольными (проверочными) оказываются биты с номерами 1, 2, 4, 8 и т.д. – все остальные являются информационными. Цель этих перестановок – сделать так, чтобы синдром ошибки непосредственно указывал на локализацию ошибок, миную промежуточную таблицу соответствия синдромов и ошибок.
•Код Хемминга начинают строить с проверочной матрицы H, так как ее вид очевиден: столбцы проверочной матрицы представляют собой набор синдромов, соответствующих двоичному представлению номера столбца.
•Затем строят порождающую матрицу G, исходя из того, что матрицы H и G ортогональны, т.е. скалярное произведение каждой строки матрицы G на каждую строку матрицы H равно нулю, то есть
•H× GT = 0 и G× HT = 0 .
•Построим код Хемминга для (7,4)-кода. Чтобы синдром ошибки указывал на место ошибки, проверочная матрица должна иметь вид:
|
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
H |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
1 |
0 |
1 |
0 |
|
|
1 |
||||||
|
|
|
|
|
|
|
|
•В ней на 1-м, 2-м и 4-м местах стоят столбцы единичной матрицы, а на остальных – столбцы, соответствующие информационным разрядам кода. Выделим подматрицу, соответствующую информационным разрядам:
|
|
|
0 |
1 |
1 |
1 |
|
|
|
|
|
|
|
H |
|
|
1 |
0 |
1 |
|
I |
|
1 |
||||
|
|
1 |
1 |
0 |
|
|
|
|
|
1 |
|||
|
|
|
|
|
|
|
•Повернем матрицу по часовой стрелке и получим проверочную подматрицу порождающей матрицы
|
1 |
1 |
0 |
|
1 |
0 |
|
|
1 |
||
P |
0 |
1 |
1 |
|
|||
|
1 |
1 |
|
|
1 |
•Поставим столбцы матрицы P на 1, 2 и 4-е место, а остальные столбцы будут столбцами единичной матрицы. Получим порождающую
матрицу кода Хемминга:
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
1 |
0 |
0 |
1 |
1 |
0 |
|
|
0 |
||||||
GХ |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|||||||
|
1 |
1 |
0 |
1 |
0 |
0 |
|
|
1 |
•Закодируем по Хеммингу входную комбинацию m = [0 0 1 1].
|
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
1 |
0 |
0 |
1 |
1 |
0 |
|
|
|
U m GХ 0 |
0 1 1 |
|
0 |
1 0 |
0 0 0 1 1 |
||||||
|
0 |
1 |
0 |
1 |
0 |
1 |
0 |
||||
|
|
|
|
|
|||||||
|
|
|
1 |
1 |
0 |
1 |
0 |
0 |
|
|
|
|
|
|
1 |
|
|
||||||
•Проверим кодовое слово, вычислив синдром:
|
|
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
Т |
|
|||
s H u |
|
0 |
1 |
1 |
0 |
0 |
1 |
|
0 0 1 1 |
|
0 |
|
|
|
1 1 0 0 |
|
|
|
|||||||||
|
|
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
1 |
|
|
|
0 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•Синдром нулевой, следовательно, получена разрешенная кодовая комбинация. Предположим, что произошла ошибка в третьем разряде и принята кодовая комбинация Û=[1 0 1 0 0 1 1]. Вычислим синдром:
|
|
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
Т |
|
|||
ˆ |
|
0 |
1 |
1 |
0 |
0 |
1 |
|
0 1 1 |
|
1 |
|
|
s H U |
|
1 1 0 1 0 |
|
|
|
||||||||
|
|
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
1 |
|
|
|
1 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•Синдром представляет собой двоичное число 3, что локализует ошибку в третьем разряде.
