
- •В.О. Осипян
- •1. Алфавит дискретных устройств. Конечные поля
- •1. 1. Простое поле галуа gf( p )
- •1. 2. Составное поле галуа gf( Рn )
- •2. Кодирование информации
- •2. 1. Основные понятия. Примеры кодов
- •2. 2. Линейные коды. Способы их задания
- •2. 3. Свойства линейного кода. Коды хэмминга
- •2. 4. Циклические коды
- •2. 5. Коды бчх, исправляющие две ошибки
- •2. 6. Нелинейные коды. Коды адамара
- •2. 7. Границы мощности кодов
- •3. Информация и неопределённость
- •3. 1. Количественная мера неопределённости
- •3. 2. Условная неопределённость.
- •3. 3. Передача информации
2. 3. Свойства линейного кода. Коды хэмминга
Пусть С линейный [ n , k ] - код с проверочной матрицей H размерности
( n - k ) n . Если все строки матрицы H линейно независимы , то число кодовых слов ( т .е . мощность кода ) равно В k , где В - алфавит канала. Далее, если х , у С и В , то х + у , х также принадлежат линейному коду С, так как
H ( х + у )т = H хт + H ут = 0 , H (х )т = Hхт = 0 .
Обозначим через d С минимальное расстояние линейного кода С, т.е.
d С = min d ( х , у ) х , у С , х у .
Линейный код С длины n, размерности k и с минимальным расстоянием d С ( или же с кодовым расстоянием d С = d ) назовём также линейным
[ n , k , d ] - кодом.
Рассмотрим простой способ нахождения минимального расстояния линейного двоичного кода, а именно, кодовое расстояние линейного двоичного кода равно минимальному весу ненулевых кодовых слов, т.е.
d С = min W ( х ) х С , х 0 ,
так как
d С = min d ( х , у )х , у С , х у = min W ( х + у ) х , у С, ху =
= min W (z ) z С, z 0 .
Код с кодовым расстоянием d может исправлять [(d - 1 ) / 2 ] ошибок. Если d чётное, то код может одновременно исправлять (d - 1 ) / 2 ошибок и обнаруживать d / 2 ошибок. Таким образом, для построения оптимальных кодов необходимо учитывать его эффективность, т.е. скорость передачи информации и максимальность кодового расстояния для заданных параметров n и k.
Так, например, для кода С 0 с проверкой на чётность R = k / ( k + 1 ), а d С = 2 , т.е. его скорость высокая, а корректирующая возможность очень низкая, он обнаруживает всего лишь одну ошибку. И наоборот, для кода С1 с повторениями R = 1 / n , а d С = n , т.е. он достаточно высокой корректирующей возможностью, но с низкой скоростью.
Для построения линейного [ n , k , d ] - кода длины n размерности k с заданным расстоянием d и с проверочной матрицей H необходимо и достаточно, чтобы любые d - 1 столбцов матрицы H были линейно независимы и в то же время нашлись бы d линейно зависимых столбцов. Причём, если С - [ n , k , d ] - код, то n - k d - 1 , т.е. d n - k + 1 ( Граница Синглтона ) и указанные выше свойства справедливы для линейных кодов над любым конечным полем.
А для обнаружения и исправления ошибок в каналах связи необходимо воспользоваться равенством:
S = H x ' т = e i H i = H a + H b + . . . + H c ,
i
где H i - i - й столбец матрицы H , i - номер ошибочной позиции принятого слова x ' , так как если x ' = х + e , то S = H x ' т = H ( x + e ) т = H e т.
Слово S т называется синдромом принятого слова x '.
Теперь рассмотрим класс двоичных линейных кодов , которые обнаруживают и исправляют одну симметрическую ошибку.
Двоичный код Хэмминга H r. Для любого r 2 двоичный код Хэмминга H r длины n = 2 r - 1 имеет проверочную матрицу H r , столбцы которой состоят из всех ненулевых двоичных векторов длины r, причём каждый вектор встречается в матрице H один раз, т.е.
0
0 . . . 1 1
0 0 . . . 1 1
H r
= . . . = 1 , 2 , . . . , 2 r
- 1 .
0 1 . . . 1 1
1 0 . . . 0 1
Кодовое расстояние кода H r равно 3 , так как любые два столбца её проверочной матрицы H r линейно независимы, и существуют 3 линейно зависимых столбца, следовательно, код Хэмминга обнаруживает и исправляет одну симметрическую ошибку. Данный код представляет собой линейный [2 r - 1 , 2 r - r - 1 , 3 ] - код.
В случае, когда длина кода Хэмминга не равна 2 r - 1 , то r определяется как наименьшее целое решения неравенства
n < 2 r - 1 ,
а проверочная матрица H r' соответствующего кода Хэмминга длины n<2 r-1
получается из проверочной матрицы H r путём исключения любых её 2 r-1- - n столбцов.
Так, например, двоичный [7 , 4 , 3 ] - код Хэмминга имеет следующую проверочную матрицу:
0 0 0 1 1 1 1
H 3 = 0 1 1 0 0 1 1 = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ,
1 0 1 0 1 0 1
а [6 , 3 , 3 ] - код - матрицу ( из H 3 исключим, например, последний столбец ):
0 0 0 1 1 1
H 3' = 0 1 1 0 0 1 = [ 1 , 2 , 3 , 4 , 5 , 6 ] .
1 0 1 0 1 0
Приведём способ построения новых кодов из заданных на примере кодов Хэмминга и кодов проверки на чётность в результате чего кодовое расстояние и длина нового кода увеличиваются на единицу. Это так называемый расширенный [n + 1 , n - r , 4 ] - код Хэмминга с проверочной матрицей:
1
1 . . . 1
0
H r + 1 = .
H r . .
.
0
Два кода называются эквивалентными, если они отличаются только перестановкой символов в кодовых словах. Так, например, коды
А 1= 0 0 0 0, 0 0 1 1, 1 1 0 0, 1 1 1 1 , А 2= 0 0 0 0, 0 1 0 1, 1 0 1 0, 1 1 1 1
являются эквивалентными [ 4 , 2 , 2 ] - кодами.
Если В(n , d) - максимальная мощность некоторого линейного [n, k, d ]-
- кода длины n с кодовым расстоянием d, то для кодов Хэмминга она определяется формулой 2 r - r - 1
В(n , 3 ) = 2 ,
а его эффективность, т.е. его скорость передачи информации - формулой:
R = (2 r - r - 1 ) / (2 r - 1) .
2.3.1. Доказать, что код с кодовым расстоянием d может исправлять
[(d - 1 ) / 2 ] ошибок, причём если d чётное, то он может одновременно исправлять (d - 1 ) / 2 ошибок и обнаруживать d / 2 ошибок.
2.3.2. Доказать, что если H - проверочная матрица линейного кода длины n , то код имеет минимальное расстояние d тогда и только тогда, когда любые d - 1 столбцов матрицы H линейно независимы, но найдутся d линейно зависимых столбцов.
2.3.3. Доказать, что если i , j , . . . , k - номера ошибочных позиций принятого слова x ' некоторого линейного кода с проверочной матрицей H, то S = H x '= H i + H j + . . . + H k , где H i - i- й столбец матрицы H.
2.3.4. Доказать, что кодовое расстояние кодов Хэмминга равно 3 .
2.3.5. Доказать, что кодовое расстояние расширенных кодов Хэмминга равно 4 .
2.3.6. Выписать все кодовые слова кода H 3 .
2.3.7. Построить проверочную матрицу [13 , 10 , 3 ] - кода Хэмминга над полем GF( 3 ).
2.3.8. Доказать, что если С - двоичный линейный код и слово а С , то
С U ( а + С ) также является двоичным линейным кодом.
2.3.9. Доказать, что если С является [n , k , d ]- кодом над полем GF( Р ),
то множество всех слов GFn ( Р ) можно разбить на непересекающиеся смежные классы : GF n ( Р ) = С U ( а 1 + С ) U ( а 2 + С ) U . . . U ( а t + С ) , где t = P n - k - 1 .
2.3.10. Доказать, что коды С и а + С являются эквивалентными для любого слова а.
2.3.11. Построить порождающую матрицу кода H r и, используя её, показать, что каждое ненулевое кодовое слово имеет вес не менее 3 .
2.3.12. Доказать, что код Хэмминга является совершенным кодом ( код называется совершенным, если он покрывает всё пространство ).
2.3.13. Доказать, что если С - [n , k , d ]- код , то d n - k + 1 ( Граница Синглтона ).
2.3.14. Определить значение величины В( n , d ) для любого линейного кода.
2.3.15. Разработать алгоритмы кодирования и декодирования для линейных [n , k , d ]- кодов.
2.3.16. Разработать алгоритмы кодирования и декодирования для линейных кодов Хэмминга.
2.3.17. Доказать, что код Хэмминга обнаруживает и исправляет одну симметрическую ошибку на примере H 3.
2.3.18. Определить веса всех кодовых слов (спектр весов) кода H r .