
Лекция 23.
Циклические коды: Хемминга, Боуза-Чоудхури-Хоквингема (БЧХ), Файра.
Весовой коэффициент двоичных векторов и расстояние между ними
Конечно
же, понятно, что правильно декодировать
можно не все ошибочные комбинации.
Возможности кода для исправления ошибок
в первую очередь определяются его
структурой. Весовой
коэффициент Хэмминга
кодового
слова
определяется как число ненулевых
элементов в
.
Для двоичного вектора это эквивалентно
числу единиц в векторе. Например, если
,
то
.
Расстояние
Хэмминга между
двумя кодовыми словами
и
,
обозначаемое как
,
определяется как количество элементов,
которыми они отличаются.
Согласно свойствам сложения по модулю 2, можно отметить, что сумма двух двоичных векторов является другим двоичным вектором, двоичные единицы которого расположены на тех позициях, которыми эти векторы отличаются.
Таким
образом, можно видеть, что расстояние
Хэмминга между двумя векторами равно
весовому коэффициенту Хэмминга их
суммы, т.е.
.
Также видно, что весовой коэффициент
Хэмминга кодового слова равен его
расстоянию Хэмминга до нулевого вектора.
Минимальное расстояние для линейного кода
Рассмотрим
множество расстояний между всеми парами
кодовых слой в пространстве
.
Наименьший элемент этого множества
называется минимальным
расстоянием кода
и обозначается
.
Как
вы думаете, почему нас интересует именно
минимальное расстояние, а не максимальное?
Минимальное расстояние подобно наиболее
слабому звену в цепи, оно дает нам меру
минимальных возможностей кода и,
следовательно, характеризует его
мощность.
Как
обсуждалось ранее, сумма двух произвольных
кодовых слов дает другой элемент
пространства кодовых слов. Это свойство
линейных кодов формулируется просто:
если
и
— кодовые слова, то
тоже должно быть кодовым словом.
Следовательно, расстояние между двумя
кодовыми словами равно весовому
коэффициенту третьего кодового слова,
т.е.
.
Таким образом, минимальное расстояние
линейного кода можно определить, не
прибегая к изучению расстояний между
всеми комбинациями пар кодовых слов.
Нам нужно лишь определить вес каждого
кодового слова (за исключением нулевого
вектора) в подпространстве; минимальный
вес соответствует минимальному расстоянию
.
Иными словами,
соответствует наименьшему из множества
расстояний между нулевым кодовым словом
и всеми остальными кодовыми словами.
Оценка возможностей кода
Нормальную
матрицу можно представлять как
организационный инструмент, картотеку,
содержащую все возможные
записи в пространстве n-кортежей,
в которой ничего не упущено и не
продублировано. На первый взгляд может
показаться, что выгода от использования
этого инструмента ограничена малыми
блочными
кодами, поскольку для кодов длиной более
n=20
пространство n-кортежей
насчитывает миллионы элементов. Впрочем,
даже для больших кодов нормальная
матрица позволяет определить важные
исходные характеристики, такие как
возможные компромиссы между обнаружением
и исправлением ошибок и пределы
возможностей кода в коррекции ошибок.
Одно из таких ограничений, называемое
пределом
Хэмминг],
описывается
следующим образом.
Количество
бит четности:
(6.52,а)
или
Количество
классов смежности:
(6.52,6)
Здесь
величина
,
представляет
число способов выбора из п
бит
j
ошибочных.
Заметим, что сумма членов уравнения
(6.52), находящихся в квадратных скобках,
дает минимальное количество строк,
которое должно присутствовать в
нормальной матрице для исправления
всех комбинаций ошибок, вплоть до
t-битовых
ошибок. Неравенство определяет нижнюю
границу числа п-k
бит
четности (или
классов смежности) как функцию возможностей
кода в коррекции t-битовых
ошибок. Аналогичным образом можно
сказать, что неравенство дает верхнюю
границу возможностей кода в коррекции
t-битовых
ошибок как функцию числа n-k
бит
четности (или
классов смежности). Для обеспечения
возможности коррекции t-битовых
ошибок произвольных линейных блочных
кодов (п,
k) необходимым
условием является удовлетворение
предела Хэмминга.
Пример кода (n, k)
Нормальная матрица дает возможность взглянуть на возможные компромиссы между исправлением и обнаружением ошибок. Рассмотрим пример кода (n, k) и факторы, определяющие выбор конкретных значений (n, k).
1.
Для получения нетривиального соотношения
между исправлением и обнаружением
ошибок желательно, чтобы код имел
возможности коррекции ошибок, по крайней
мере, с t
=
2. Согласно уравнению, минимальное
расстояние при этом равно
.
2.
Чтобы кодовая система была нетривиальной,
желательно, чтобы количество бит данных
было не менее k
= 2.
Следовательно,
число кодовых слов
.
Далее будем считать наш код следующим:
(п,
2).
3.
Нас интересует минимальное значение
п,
которое позволит исправлять все одно-
и двух битовые ошибки. В этом примере
каждый из
n-кортежей
в матрице будет табулирован. Минимальное
значение n
нас интересует потому, что при каждом
увеличении n
на единицу число n-кортежей
в нормальной матрице удваивается. Это
условие, разумеется, диктуется только
соображениями удобства использования
таблицы. Для реальных прикладных кодов
минимальное значение n
выбирается по разным причинам—эффективность
использования полосы пропускания и
простота системы. Если при выборе n
используется предел Хэмминга, то n
следует выбрать равным 7. В то же время
размерность полученного кода (7,2) не
соответствует указанным выше требованиям
t
= 2 и
.
Чтобы увидеть это, следует ввести другую
верхнюю границу возможностей кода в
коррекции t-битовых
ошибок (или
).
Эта граница, называемая предел
Плоткина,
определяется следующим образом.
Вообще, линейный код (n, k) должен удовлетворять всем перечисленным выше условиям, включая возможности коррекции ошибок (или минимальное расстояние). Для высокоскоростных кодов из удовлетворения предела Хэмминга следует удовлетворение предела Плоткина; это справедливо, например, для рассмотренного ранее кода (127,106). Для кодов с низкими скоростями передачи существует обходной путь удовлетворения названных требований. Поскольку в нашем примере речь идет именно о таких кодах, важно оценить их возможности в коррекции ошибок с помощью предела Плоткина. Поскольку , из уравнения (6.53) получаем, что n должно быть равно 8; следовательно, для удовлетворения всех требований, поставленных в этом примере, минимальная размерность кода равна (8,2). Можно ли практически использовать подобный код (8,2)? Этого делать не стоит, поскольку это потребует слишком большой полосы пропускания; лучше выбрать более эффективный код. Данный код мы используем только с методической целью, единственным его преимуществом являются удобные размеры его нормальной матрицы.