Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OTI Lections2011.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
1.74 Mб
Скачать

10.5.1Пример. Код Хемминга.

Пусть m – натуральное число. Проверочная матрица кода имеет размеры m x (2m-1).

В столбцах находятся все ненулевые последовательности длины m, представляющие собой двоичную запись числа – номера столбца. Очевидно, что любые два столбца линейно независимы, а среди троек столбцов уже есть линейно зависимые наборы. Поэтому согласно приведенной выше теореме кодовое расстояние кода Хемминга d = 3. Следовательно этот код исправляет ровно одну ошибку.

Длина кодовых слов n = 2m – 1. Число проверочных символов m = log (n + 1). Число информационных символов равно 2m – 1 - m. Отсюда следует, что число кодовых слов |C| в коде Хэмминга |C| = 2n / (1 + n).

Заметим теперь, что число точек в шаре радиуса единица равно 1 + n, и вспомним приведенную выше границу Хэмминга:

Код Хемминга исправляет одну ошибку и A(n, 3) = 2 / (1 + n). Получаем, что для Хемминга граница Хемминга достигается, «шары вокруг кодовых точек покрывают все пространство Bn».

Опр.: Код С, исправляющий t ошибок, называется совершенным, если . Совершенный код – код, на котором достигается граница Хемминга.

Сразу из определения проверочной матрицы кода Хэмминга следует простой алгоритм декодирования. Декодирование происходит сразу после вычисления синдрома принятого слова y. Для принятого слова y есть три возможности:

  1. Ошибок не было. Тогда синдром S = y HT=0.

  2. Ошибка ровно одна. Тогда синдром является двоичной записью (индикатором) номера бита, в котором произошла ошибка.

  3. Произошло более одной ошибки. Тогда код Хэмминга не обеспечивает защиты от ошибок.

Пример:

m = 3, n = 23 – 1 = 7, k = 4. Пусть информационными будут символы ( ).

U = 1100 → 0 1 1 1 1 0 0

Если U – передано, U’ – получено, рассмотрим 3 случая:

С Заметим, что в данном примере

В общем случае мы получаем, что синдром это UHT = - сумма «локаторов ошибок».

Задача: Построить код, исправляющий t ошибок.

10.5.2Замечание. Совершенные коды и теорема Шеннона.

Еще одна теорема Шеннона связана с совершенными кодами. Эта теорема отвечает на вопрос, что будет в случае невыполнения условия второй теоремы Шеннона: R = log M / n = k / n < 1 – H(p).

В лемме (*) было доказано, что |Bpn(x)| ≤ 2nH(p). На самом деле, справедлива более точная оценка: |Bpn(x)| ~ 2nH(p) (при n → ∞). И это асимптотическое равенство достигается именно для совершенных кодов. В итоге получим, что k = nn H(p) для совершенного кода. А отсюда можно получить, что максимум вероятности правильного декодирования достигается именно на совершенном коде.

Теорема. Если то k / n > 1 – H(p) → pn> t, t>o, то не существует метода кодирования такого, что вероятность правильного декодирования стремится к единице..

10.5.3Бчх – коды

В основу легли 2 идеи: построить такую проверочную матрицу, у которой кодовое расстояние 2t + 1 (2t столбцов линейно-независимы); нужно соответствующим образом построить алгоритм кодирования (декодирования).

Получаем t уравнений с t неизвестными, решаем их и находим, где произошли ошибки.

многочлен степени (n-1) ( )

Для любого n существует неприводимый многочлен степени n. Пусть это h(n). Рассмотрим произвольное числовое поле:

Берем Md – определитель Вандермонда, не равный 0. Значит, любые d столбцов различны.

Код, считающий t ошибок, будет работать с m = t log n тактами. Скорость кода log 2k / m = k / n, (nt log n) / n = 1 – t log n / n

Смысл в том, чтобы перейти от GF(2) к GF(2*) [GF(p) → GF(pk)]

Есть бинарный вектор α1αk. Сопоставим этому вектору полином: α1 + α2x + … + αk-1xk-2

Утверждение: Для любого k существует неприводимый полином P(x), т.е. не существует Q(x) и R(x) отличных от константы, таких что P(x) = Q(x) R(x).

Берем P(x) и рассматриваем кольцо класса вычетов по P(x) (degP(x) = k). Другими словами, рассмотрим все полиномы, которые при делении на P(x) дают один и тот же остаток – они образуют один класс; таких классов конечное число.

Сколько полиномов со степенью не больше k? 2k. Т.о. всего классов вычетов по неприводимому полиному 2k.

Опр.: Неприводимый полином P(x) называется примитивным, если все x0, x1, … ,

лежат в разных классах вычетов.

Утверждение: Кольцо классов вычетов по P(x) является полем.

Пример: GF(2) → GF(24), P(x) = x4 + x +1

x 0 1 1000

x1 x 0100

x2 x2 0010

x3 x3 0001

x4 x+1  110

x5 x + x2 0110

x6 x2 + x3 0011

x7 1 + x + x3 1101

x8 1 + x2 1010

x9 x + x3 0101

x10 1 + x +x2 1110

x11 x + x2 + x3 0111

x12 1 + x2 + x3 + x 1111

x13 1 + x2 + x3 1011

x 14 1 + x3 1001

x15 = x0 1000

Можем решать в этом поле уравнения.

α1αn – элементы поля GF(2k)

αi – вектор ( ) = γi

= (0,1)-матрица

Теорема: Любые 2S столбцов m – линейно-независимые.

(α1 + … + αn)2 = α12 + … + αn2 (*)

Доказательство (от противного):

Пусть существует h столбцов (h ≤ 2S), являющихся линейно-зависимыми. Это столбцы с номерами i1ihγ2t-1i1 + … + γ2t-1in = (0…0)T, t = 1…S

Если перейти к элементам поля:

α 2t-1i1 + … + α 2t-1in = 0, t = 1…S (1)

Для любого четного q (1 ≤ q ≤ 2S): q = 2U (2t – 1), U ≥ 1, tS

Применим соотношение (*) к равенству (1) U раз: α 1i1 + … + α qin = 0, q = 1…2S (**)

Определитель Вандермонда

Возьмем ее и любой минор порядка (d – 1); минор будет представлять собой определитель Вандермонда порядка d – 1 αi = αj.

Теперь возьмем d = 2S + 1, т.о. любой минор порядка 2S не равен 0 → любые 2S столбцов – линейно-независимые → противоречие с (**)

Следствие: Матрица может быть проверочной матрицей (n, k) – кода, исправляющего S ошибок.

Число проверочных символов БЧХ-кода для исправления S ошибок:

m ~ s log n

k = n s log n при n → ∞, kn

Пусть произошло 3 ошибки в позициях η, δ, ζ. Тогда при рассмотрении верхней части матрицы η + δ + ζ = ρ-1; второй части: η3 + δ3 + ζ3 = ρ*; третьей части: η5 + δ5 + ζ5 = ρ**. Система из трех уравнений с тремя неизвестными. Чем больше S, тем больше сложность алгоритма.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]