В теории кодирования линейный код — это код с исправлением ошибок , для которого любая линейная комбинация кодовых слов также является кодовым словом. Линейные коды традиционно подразделяются на блочные коды и сверточные коды , хотя турбокоды можно рассматривать как гибрид этих двух типов. [1] Линейные коды допускают более эффективные алгоритмы кодирования и декодирования, чем другие коды (ср. синдромное декодирование ). [ требуется цитата ]
Линейные коды используются для прямой коррекции ошибок и применяются в методах передачи символов (например, битов ) по каналу связи , так что если в сообщении возникают ошибки, некоторые ошибки могут быть исправлены или обнаружены получателем блока сообщения. Кодовые слова в линейном блочном коде представляют собой блоки символов, которые кодируются с использованием большего количества символов, чем исходное значение для отправки. [2] Линейный код длины n передает блоки, содержащие n символов. Например, код Хэмминга [7,4,3] представляет собой линейный двоичный код , который представляет 4-битные сообщения с использованием 7-битных кодовых слов. Два различных кодовых слова отличаются по крайней мере тремя битами. Как следствие, может быть обнаружено до двух ошибок на кодовое слово, в то время как одна ошибка может быть исправлена. [3] Этот код содержит 2 4 =16 кодовых слов.
Линейный код длины n и размерности k — это линейное подпространство C размерности k векторного пространства , где — конечное поле с q элементами. Такой код называется q -ичным кодом. Если q = 2 или q = 3, то код описывается как двоичный код или троичный код соответственно. Векторы в C называются кодовыми словами . Размер кода равен количеству кодовых слов и равен q k .
Вес кодового слова — это количество его ненулевых элементов, а расстояние между двумя кодовыми словами — это расстояние Хэмминга между ними, то есть количество элементов, в которых они различаются. Расстояние d линейного кода — это минимальный вес его ненулевых кодовых слов или, что эквивалентно, минимальное расстояние между различными кодовыми словами. Линейный код длины n , размерности k и расстояния d называется кодом [ n , k , d ] (или, точнее, кодом).
Мы хотим дать стандартный базис, потому что каждая координата представляет собой «бит», который передается по «шумному каналу» с некоторой малой вероятностью ошибки передачи ( двоичный симметричный канал ). Если используется какой-либо другой базис, то эта модель не может быть использована, и метрика Хэмминга не измеряет количество ошибок при передаче, как мы хотим.
Как линейное подпространство , весь код C (который может быть очень большим) может быть представлен как диапазон набора кодовых слов (известного как базис в линейной алгебре ). Эти базисные кодовые слова часто объединяются в строки матрицы G , известной как порождающая матрица для кода C . Когда G имеет форму блочной матрицы , где обозначает единичную матрицу, а P — некоторая матрица, то мы говорим, что G находится в стандартной форме .
Матрица H, представляющая линейную функцию , ядром которой является C, называется проверочной матрицей C ( или иногда матрицей проверки четности). Эквивалентно, H — это матрица, нулевое пространство которой — C . Если C — это код с порождающей матрицей G в стандартной форме, , то — это проверочная матрица для C. Код, сгенерированный H, называется дуальным кодом C. Можно проверить, что G — это матрица, а H — это матрица.
Линейность гарантирует, что минимальное расстояние Хэмминга d между кодовым словом c 0 и любым другим кодовым словом c ≠ c 0 не зависит от c 0 . Это следует из свойства, что разность c − c 0 двух кодовых слов в C также является кодовым словом (т. е. элементом подпространства C ), и свойства, что d ( c , c 0 ) = d ( c − c 0 , 0). Эти свойства подразумевают, что
Другими словами, чтобы узнать минимальное расстояние между кодовыми словами линейного кода, нужно будет посмотреть только на ненулевые кодовые слова. Ненулевое кодовое слово с наименьшим весом имеет тогда минимальное расстояние до нулевого кодового слова и, следовательно, определяет минимальное расстояние кода.
Расстояние d линейного кода C также равно минимальному числу линейно зависимых столбцов проверочной матрицы H.
Доказательство: Поскольку , что эквивалентно , где — столбец . Удалим те элементы с , те, у которых линейно зависимы. Следовательно, — по крайней мере минимальное количество линейно зависимых столбцов. С другой стороны, рассмотрим минимальный набор линейно зависимых столбцов, где — набор индексов столбцов. . Теперь рассмотрим вектор такой, что если . Обратите внимание , поскольку . Следовательно, у нас есть , что является минимальным количеством линейно зависимых столбцов в . Заявленное свойство, таким образом, доказано.
Как первый класс линейных кодов, разработанных для исправления ошибок, коды Хэмминга широко использовались в цифровых системах связи. Для любого положительного целого числа существует код Хэмминга. Поскольку , этот код Хэмминга может исправить ошибку в 1 бит.
Пример: Линейный блочный код со следующей порождающей матрицей и матрицей проверки четности является кодом Хэмминга.
Код Адамара является линейным кодом и способен исправлять множество ошибок. Код Адамара может быть построен столбец за столбцом: столбец — это биты двоичного представления целого числа , как показано в следующем примере. Код Адамара имеет минимальное расстояние и, следовательно, может исправлять ошибки.
Пример: Линейный блочный код со следующей порождающей матрицей является кодом Адамара: .
Код Адамара является частным случаем кода Рида–Маллера . Если мы вычтем первый столбец (столбец со всеми нулями) из , то получим симплексный код , который является дуальным кодом кода Хэмминга.
Параметр d тесно связан с возможностью исправления ошибок кода. Следующая конструкция/алгоритм иллюстрирует это (называемая алгоритмом декодирования ближайшего соседа):
Вход: Полученный вектор v в .
Вывод: Кодовое слово , ближайшее к , если таковое имеется.
Мы говорим, что линейный код исправляет ошибки, если существует не более одного кодового слова в , для каждого в .
Коды в целом часто обозначаются буквой C , а код длины n и ранга k (т. е. имеющий n кодовых слов в своей основе и k строк в своей порождающей матрице ) обычно называют кодом ( n , k ). Линейные блочные коды часто обозначают как коды [ n , k , d ], где d относится к минимальному расстоянию Хэмминга кода между любыми двумя кодовыми словами.
(Обозначение [ n , k , d ] не следует путать с обозначением ( n , M , d ), используемым для обозначения нелинейного кода длины n , размера M (т. е. имеющего M кодовых слов) и минимального расстояния Хэмминга d .)
Лемма ( граница синглтона ): Каждый линейный [n,k,d]-код C удовлетворяет .
Код C, параметры которого удовлетворяют условию k+d=n+1, называется разделяемым по максимальному расстоянию или MDS . Такие коды, когда они существуют, в некотором смысле являются наилучшими из возможных.
Если C 1 и C 2 — два кода длины n и если существует перестановка p в симметрической группе S n , для которой (c 1 ,...,c n ) в C 1 тогда и только тогда, когда (c p(1) ,...,c p(n) ) в C 2 , то мы говорим, что C 1 и C 2 эквивалентны перестановкам . В более общем случае, если существует мономиальная матрица , которая изоморфно переводит C 1 в C 2 , то мы говорим, что C 1 и C 2 эквивалентны .
Лемма : Любой линейный код перестановочно эквивалентен коду, который находится в стандартной форме.
Код определяется как эквидистантный тогда и только тогда, когда существует некоторая константа d такая, что расстояние между любыми двумя различными кодовыми словами кода равно d . [4] В 1984 году Арриго Бонисоли определил структуру линейных одновесовых кодов над конечными полями и доказал, что каждый эквидистантный линейный код является последовательностью дуальных кодов Хэмминга . [5]
Вот некоторые примеры линейных кодов:
Также рассматривались пространства Хэмминга над неполевыми алфавитами, особенно над конечными кольцами , в первую очередь кольцами Галуа над Z 4 . Это приводит к появлению модулей вместо векторных пространств и кольцевых линейных кодов (идентифицируемых с подмодулями ) вместо линейных кодов. Типичная метрика, используемая в этом случае, — расстояние Ли . Существует изометрия Грея между (т. е. GF(2 2m )) с расстоянием Хэмминга и (также обозначаемая как GR(4,m)) с расстоянием Ли; ее главная привлекательность в том, что она устанавливает соответствие между некоторыми «хорошими» кодами, которые не являются линейными над как образы кольцевых линейных кодов из . [6] [7] [8]
Некоторые авторы также называли такие коды над кольцами просто линейными кодами. [9]
В линейном блочном коде дополнительные биты являются линейными функциями исходных битов; эти дополнительные биты называются битами проверки четности.
{{cite book}}
: CS1 maint: multiple names: authors list (link)