Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФОПИ-Л7-кодирование_2015.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
601.09 Кб
Скачать

Вопрос 4. Линейные коды

Линейные коды1 образуют некоторый подкласс в классе всех кодов. Почти все известные блоковые и древовидные коды являются ко­дами этого типа.

Можно построить линейные коды, символы которых являются элементами произвольного множества, однако почти все основные результаты в теории кодирования получены в предполо­жении, что символы кода являются элементами конечного поля, в частности при q = 2.

Для двоичных линейных кодов общепринято название групповой код. Кроме того, линейные блоковые коды иногда называют групповыми алфавитами.

Совокупность всех наборов элементов (векторов) длины п образует векторное пространство V. Задано оно может быть квадратной матрицей Wn x n, строками которой являются n базисных (линейно-независимых) векторов w1 - wn, например:

Все векторное пространство является линейной комбинацией этих базисных векторов

(4.1)

Коэффициенты ai в выражении (4.1) принадлежат полю Fq.

Некоторое множество векторов длины n называется линейным блоковым кодом тогда и только тогда, когда, оно является подпространством V’ векторного пространства V всех набо­ров длины п.

Линейные коды могут быть заданы матрицами. Матрица Gk x n , kn для задания кода может содержать некоторые строки матрицы W. Если k = n, то код будет представлять собой все пространство V и кодовое расстояние его будет = 1.

Пример:

Любое множество базисных векторов линейного кода V рассматриваемое как строки матрицы G, называемой порождаю­щей матрицей кода V’.

Пространство строк (совокупность всех линейных комбинаций вектор–строк матрицы) матрицы G является линейным кодом V’, и вектор является кодовым вектором тогда и только тогда, когда он является линейной комбинацией строк матрицы G.

Если размерность векторного пространства Vравна k, то число строк матрицы G (которое равно рангу G, потому что строки матрицы должны быть линейно независимыми) равно k (это будет количество информационных разрядов).

Различные линейные комбинации дают различные кодовые векторы, и так как имеется k коэффи­циентов с q ( при q=2 это 0 и 1) возможными значениями для каждого, то простран­ство V содержит всего qk кодовых векторов.

Такой код называется (п, k)-кодом.

Нулевое пространство V” пространства V’ – совокупность всех наборов длины n, ортогональных подпространству V’, образующее подпространство V”. Ортогональность подпространству означает ортогональность всем его векторам, т.е. скалярное произведение со всеми векторами равно нулю.

Если V’ есть подпространство размерности k, то его нулевое пространство является векторным пространством V” размерности n – k и его порождающей матрицей Hn-k,n является совокупность строк матрицы W, не вошедших в матрицу G:

Следует помнить, что V’ +V” ≠ V, а имеет место V’ +V”  V.

Кроме того, существует подпространство Δ = V – (V’ +V”). В него входят вектора, не принадлежащие подпространствам V’ и V”, но и не ортогональные им.

Пример:

, , , тогда вектор (1, 1) не принадлежит ни одному из них, но и не ортогонален ни одному из них.

Если Vесть нулевое пространство для V’, и вектор v’ принадлежит Vто он ортогонален каждой строке матрицы H (а значит и всем векторам пространства V”), т. е.

. (4.2)

Матрица Н назы­вается проверочной матрицей кода V’, т.е. проверить принадлежность вектора v’ пространству V’ можно по (4.2).

Соотношения (4.2) справедливы для любого вектора v’ из про­странства V’. В частности, они справедливы для k базисных век­торов матрицы G. Эти k уравнений можно записать как

, (4.3)

где 0 обозначает нулевую матрицу размерности k x (п k).

Код V’ обладает избыточностью и может быть использован для помехоустойчивой передачи информации.

Сообщение I 1 x k = ( i1, i2, …, ik) преобразуется в помехоустойчивое сообщение C = vVследующим образом:

. (4.4)

На приемной стороне безошибочность принятого вектора C проверяется по (4.2):

.

Если , то по , называемым синдромом иногда (в случае, если код позволяет исправлять ошибку) можно найти позицию в С, в которой произошла ошибка. Если код обнаруживает позицию, где имеется ошибка, то существует таблица, из которой по синдрому можно найти эту позицию.

Если ошибки нет, то обратным преобразованием

, (4.5)

где

получают передаваемое сообщение I 1 x k .

Можно облегчить процесс декодирования и сделать С более наглядным.

При изучении свойств кодов, исправляющих ошибки, надо иметь в виду, что для любого канала с независимыми ошибками два кода, отличающиеся только расположением символов, имеют одну и ту же вероятность ошибки. Вообще между двумя такими кодами имеется очень тесная связь, и поэтому они называются эквивалентными. В результате любой элементарной опе­рации2 над строками матрицы получается матрица с тем же самым пространством строк, и поэтому измененная матрица является по­рождающей матрицей для того же самого кода.

Если одна матрица может быть получена из другой путем комбинации элементарных операций над строками и перестановок столбцов, то эти две матри­цы называются комбинаторно-эквивалентными.

Любая порождающая матрица G комбинаторно-эквивалентна некоторой матрице G’, имеющей ступенчатую каноническую фор­му3.

Более того, перестановкой столбцов можно образовать приведено-ступенчатую матрицу: сгруппировать слева k столбцов, содержащих единицы в качестве первых ненулевых элементов каждой строки, так чтобы они образовали единичную матрицу размерности k X k, в результате чего получится комбинаторно-эк­вивалентная матрица G" вида

Таким об­разом, для каждой порождающей матрицы G существует комби­наторно-эквивалентная ей матрица G", имеющая приведенно-ступенчатую форму, и каждый код эквивалентен пространству строк некоторой матрицы, имеющей приведенно-ступенчатую форму.

Следует обратить внимание, что матрица G” порождает другой код, но эквивалентный исходному по помехоустойчивости.

Тогда пусть I1 x k = (I1,I2,..., Ik) – произвольный набор длины k. Рассмотрим вектор С:

где

Таким образом, первые k компонент кодового вектора могут быть произвольно выбранными информационными символами, а каж­дая из последних n — k компонент является линейной комбина­цией первых k компонент.

Благодаря этому код становится систематическим (линейным разделимым) кодом, кодирование сильно упрощается, а раскодирование вообще не требует алгебраических операций.

Существует теорема: Каждый линейный код эквивалентен систематиче­скому коду.

Существует простой способ нахождения проверочной матрицы кода, если задана порождающая матрица кода в приведенно-сту­пенчатой форме.

Теорема. 4.1. (О проверочной матрице). Если V’— пространство строк матрицы G” = [EkP], где Ek— единичная матрица размерности k x k, a Р— матрица размерности k x (n — k), то V’ является нулевым пространством матрицы Н” = [ – РТ En-k], где En-k — единичная матрица размер­ности (n - k) x (n - k).

Здесь уместно отметить, что «– P» это матрица, такая, что P + (–P) = 0. Для двоичного исчисления «–P» = P.

Пример. Порождающая матрица задана в приведенно-ступенчатой форме.

Если положить

то GHT=HGT = 0, и пространство строк каждой матрицы яв­ляется нулевым пространством для другой матрицы.