Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ.docx
Скачиваний:
40
Добавлен:
19.04.2015
Размер:
60.19 Кб
Скачать

Примеры кодирования.

Простое кодирование с повторением.

При любом n ∈ N множество M = {0,1} можно кодировать следующим образом:

0 →0. . . 0 (n ),

1 →1. . . 1 (n ).

Декодировать принятое слово длины n можно по ”принципу большинства”: если в нем больше половины нулей, то оно декодируется как 0, в противном случае — как 1. Такое кодирование имеет большую надежность (d = n и, значит, код исправляет [(n−1)/2] ошибок), но малую скорость передачи информации (R =1/n). Кодирование из примера, состоящее в утроении каждого символа слова, есть видоизмененная форма этого кодирования, также использующее идею повторения.

Простое кодирование с проверкой на четность

Пусть k — любое натуральное число и M — множество всех слов длины k в алфавите {0,1}. Произведем кодирование этого множества, добавляя к каждому слову (a1, ..., ak) длины k еще один символ ak+1 следующим образом: полагаем ak+1 = 0, если a1 + ... + ak четно, и ak+1 = 1,

если a1 + ... + ak нечетно. Другими словами, ak+1 выбирается так, чтобы a1 + ... + ak+1 было всегда четно. Скорость R передачи информации при таком кодировании велика: R =k/k+1. Но разреженность d = 2. Следовательно, код не может исправить ни одной ошибки.

- 6 -

Он может только обнаружить одну ошибку, и именно для этой цели он и используется, при условии, однако, что частота ошибок мала. Декодер работает так: если в принятом слове x = (a1, ..., ak+1) сумма координат четная, то он считает, что переданное слово есть (a1, ..., ak+1) (и, следовательно, информационное слово есть (a1, ..., ak), в противном случае он отказывается от декодирования. Важно, что при таком декодировании декодер не обращается к памяти. Это кодирование используется в бухгалтерских расчётах.

Прямоугольные коды.

В случае, когда число k информационных символов представляется в виде произведения k =st, известна конструкция кодов, называемых прямоугольными кодами. Обычно, это — коды над алфавитом {0,1}. Рассмотрим случай, когда s = 2 и t = 3. К шести информационным символам

i1, ..., i6 добавим пять проверочных p1, ..., p5, которые строятся по следующему ”правилу прямоугольника”:

i1 i2 i3

i4 i5 i6

p1= i1+ i2+ i3

p2= i4+ i5+ i6

p3= i1+ i4 p4= i2+ i5 p5= i3+ i6

(p1, p2 — проверки по строкам, p3, p4, p5 — проверки по столбцам.) Таким образом, построен ”прямоугольный” код K = {(i1, ..., i6, p1, ..., p5) | i1, ..., i6 ∈ {0,1}, pi — как в таблице}.

(Иногда добавляют еще один проверочный символ p6 = i1 + ... + i6.)

Кодирование с помощью этого кода выглядит так:

(i1, ..., i6) → (i1, ..., i6, p1, ..., p5).

Линейный код и его порождающая матрица.

Определение 1. Линейным (n, k)-кодом над полем Fq называется подпространство размерности k векторного пространства V (n, Fq). Линейный код—это линейный (n, k)-код над Fq при некоторых n, k, q. Число R =k/n называется скоростью кода.

Линейный (n, k)-код состоит из qk векторов, а в V (n, Fq) всего qn векторов. На практике значения k находятся обычно между 3 и несколькими сотнями, а типичные значения R — между 1/4 и 7/8.

Определение 2. Пусть K — линейный (n, k)-код над Fq и {g1, . . . , gk} — его базис. Тогда k × n-матрица

g1

.

G=.

gk

- 7 -

составленная из координат векторов g1, . . . , gk , называется порождающей матрицей кода K. Порождающая матрица кода K = {0} (который не имеет базиса) не определена.

Определение 3. Пусть K — линейный (n, k)-код и π Sn (т. е. π — любая перестановка чисел 1, . . . , n). Если каждый вектор v = (v1, . . . , vn) кода K заменить вектором vπ =(vπ(1), . . . , vπ(n)) (т. е. осуществить перестановку координат вектора v в соответствии с перестановкой π), то множество Kπ = {vπ | v K} снова будет кодом. Для любого π Sn код Kπ называется эквивалентным коду K.

Очевидно, код Kπ имеет те же параметры n,k,q,d, R, что и K, а порождающая матрица кода Kπ получается из порождающей матрицы кода K той же перестановкой столбцов π. Подобно тому, как в теории групп, группы рассматриваются с точностью до изоморфизма, в теории кодирования

коды обычно изучаются с точностью до эквивалентности.

Теорема 1.Для любого линейного (n, k)-кода K существует эквивалентный ему код с порождающей матрицей вида

G = (Ik | P),

где Ik — единичная матрица степени k, а P — некоторая матрица размера

k × (n − k).

Доказательство. Любая порождающая матрица G1 кода K состоит из k линейно независимых строк. Но, как известно из линейной алгебры, такую матрицу можно привести к виду (Ik | P) элементарными преобразованиями строк и перестановкой столбцов. Но элементарные преобразования

строк переводят G1 снова в порождающую матрицу G2 кода K (так как они не изменяют ранга матрицы), а перестановка столбцов в G2 переводит ее в порождающую матрицу эквивалентного к K кода.

Порождающую матрицу вида G = (Ik | P) называют порождающей матрицей в систематическом виде. Название оправдывается тем, что кодирование пространства V (k, Fq) с помощью матрицы G = (Ik | P) будет систематическим.