- •Курсовая работа по предмету: «Фундаментальная и компьютерная алгебра» на тему: «Элементы теории кодирования»
- •Тюмень 2013г. Оглавление.
- •Введение.
- •Основные понятия теории кодирования.
- •Идея кодирования. Блоковые коды.
- •Разрежённость кода. Расстояние Хэмминга.
- •Примеры кодирования.
- •Линейный код и его порождающая матрица.
- •Проверочная матрица линейного кода.
- •Декодирование линейных кодов.
- •Коды Хэмминга.
- •Заключение.
- •Список литературы.
Примеры кодирования.
Простое кодирование с повторением.
При любом 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) будет систематическим.