
- •Белорусский государственный университет информатики
- •Теоретическая часть Линейные коды.
- •Метрики Хэмминга и Ли.
- •Описание линейных кодов при помощи матриц.
- •Эквивалентность линейных кодов.
- •Декодирование линейных кодов.
- •Синдромное декодирование.
- •Коды Хэмминга.
- •Коды Рида-Маллера.
- •Коды, получаемые с помощью матриц Адамара.
- •Треугольный код
- •Практическая часть
- •Заключение
- •Приложение Листинг программы
Коды, получаемые с помощью матриц Адамара.
Матрицей Адамара называется ортогональная квадратная матрица размерности n x n, элементами которой являются действительные числа +1 и -1. Ортогональной называется матрица, строки которой являются взаимно ортогональными векторами.
Теорема 1. Если существует матрица Адамара размерности n x n, то существует двоичный код из n символов, образованный 2n векторами, с минимальным расстоянием, равным n/2 (не обязательно линейный код).
Доказательство: Пусть H – матрица Адамара. Код строиться следующим образом. Берется совокупность из 2n векторов v1,v2,…,vn,-v1v2,…,-vn, где v1,v2,…,-vn и заменяются в каждом из векторов все +1 на 0, а все -1 на 1. Тогда получается совокупность 2n двоичных векторов длины n. Поскольку соответствующие компоненты векторов vi и –vi различны, то расстояние между векторами vi и –vi равно n. Поскольку векторы ±vi и ±vj ортогональны, если i≠j, то они должны совпадать в половине компонент и отличаться друг от друга в остальных компонентах, так что соответствующие двоичные векторы находятся на расстоянии n/2.
Теорема 2. Если H – матрица Адамара размерности n x n, то матрица
является матрицей Адамара размерности 2n x 2n.
Доказательство: Очевидно, что матрица H’ является квадратной матрицей с элементами, равными +1 или -1. Скалярное произведение j-ой и (n+j)-й строк (j≤n) равно
(vj,vj)(vj,-vj)=vjvj+vj(-vj)=n-n=0.
Для любых других комбинаций строк
(vi, ±vi)(vj, ±vj)=vivj±vivj=0±0=0.
Следовательно, H’ – ортогональная матрица.
Многократно применяя теорему 2 можно построить матрицу Адамара размерности 2(m) x 2(m) для любого целого положительного m. Соответствующий ей код совпадает с кодом Рида-Маллера первого порядка. Для других значений n двоичные коды, получаемые с помощью матриц Адамара, не могу быть групповыми кодами, поскольку число их кодовых векторов не является степенью двойки.
Треугольный код
Примером высокоскоростных кодов являются коды с одной проверкой на
четность, содержащие только один проверочный символ. Проверочный символ вычисляется таким образом, чтобы четность всех кодовых слов была одинаковой. Например, C ={000,011,101,110}. Если полученное слово содержит нечетное число единиц, то считается, что произошла ошибка. Коды с одной проверкой на четность позволяют обнаруживать любое нечетное число ошибок.
На основе кодов с проверкой на четность строятся итеративные коды. Так,
в прямоугольных итеративных кодах сообщение располагается в виде прямоугольной матрицы и к каждой строке и столбцу матрицы добавляется проверка на четность. Любая одиночная ошибка может быть исправлена, так как при ее возникновении соответствующие строке и столбцу проверки на четность не выполняются. Минимальное расстояние такого кода d* = 4 , но его избыточность довольно высока. Можно построить итеративные коды с меньшей избыточностью – треугольные коды. В таких кодах проверки на четность, в которые входят как строка, так и соответствующий столбец, располагаются на диагонали.
Пример.
Пусть передается сообщение 110101. Представим его в виде треугольника
110
10
1
Теперь, расположим проверки на четность на диагонали.
1100
101
10
1
1+1+0=0, 1+0+0=1, 1+0+1=0, 1+1+1=1.
Переписывая полученный треугольник, получим кодовое слово
1100101101.
Если при построении остаются пустые ячейки, то они игнорируются.