Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Для_ЭПСО.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
147.17 Кб
Скачать

Порождающая матрица

До сих пор групповые коды описывались в терминах проверочной матрицы Н. Записанная в канонической форме, такая матрица позволяет выразить каждый проверочный символ в виде линейной комбинации информационных символов. Часто полезным оказывается другое возможное описание. Напомним, что сумма по модулю 2 любых двух кодовых слов снова является кодовым словом. Несколько раз используя это свойство, получаем, что любая линейная комбинация кодовых слов (при сложении по модулю 2) также является кодовым словом. Поскольку информационные символы выбираются независимо, можно надеяться, что существуют кодовые слова, каждое из которых содержит ровно один символ 1 в информационной части кодового слова. Тогда все 2k кодовых слов можно будет получить как 2k возможных линейных комбинаций этих k базисных векторов. Здесь мы приписываем коду свойства линейного векторного пространства. Следующий пример показывает, что это действительно так.

Проверочная матрица (7.4)-кода Хемминга имеет вид

.

Мы хотим найти четыре различных кодовых вектора, каждый из которых содержит единственный символ 1 в первых четырех позициях. Предположим, что первый из этих векторов имеет вид

,

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

,

получаем, что , , совпадают с элементами второго столбца Н и т. д. Таким образом, проверочная часть каждого из четырех базисных векторов совпадает с одним из первых четырех столбцов матрицы Н. Если сформировать из этих четырех векторов матрицу, то получим так называемую порождающую матрицу кода. В канонической форме она всегда состоит из единичной матрицы порядка k × k , к которой присоединенаk X(nk)-матрица проверочных символов. Проверочная часть порождающей матрицы получается из матрицы Н (в канонической форме) транспонированием подматрицы, образованной первыми k столбцами. Таким образом, в данном примере

G = .

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

.

где Р – k X (nk)-матрица проверочных символов, то проверочная матрица

.

Таким образом, по порождающей матрице, записанной в канонической форме, сразу можно получить проверочную матрицу и наоборот.

Задача о взвешивании монет

К настоящему времени уже введены основные понятия теории двоичных групповых кодов. Здесь разумно сделать паузу и закрепить эти понятия, рассмотрев ряд примеров. Классической задачей, непосредственно связанной с теорией кодов Хемминга, явля­ется так называемая задача о взвешивании монет.

Предположим, имеются восемь монет и весы без гирь и известно, что одна из этих монет является фальшивой. Фальшивая монета по внешнему виду не отличается от настоящих, но имеет другую массу. Вам нужно найти фальшивую монету с помощью всего трех взвешиваний. Решение, которое легко найти, рассматривая проверочную матрицу (7,4)-кода Хемминга, состоит в следующем.

Прежде всего занумеруем монеты числами от 1 до 8, и пусть первые 7 из них соответствуют столбцам матрицы Н для (7,4)-кода Хемминга:

.

При первом взвешивании нужно взять монеты 1, 2, 3 и 5 (первая строка проверочной матрицы) и положить по две монеты на каждую чашу. При этом неважно, как распределить монеты по чашкам. Если весы находятся в равновесии, то фальшивой является одна из монет 4, 6, 7 или 8, а если они не находятся в равновесии, то фальшивой является одна из монет 1, 2, 3 или 5. Таким образом, после одного взвешивания удается исключить ровно половину возможностей. При втором взвешивании нужно взять монеты 1, 2, 4 и 6 и повторить эксперимент. Равновесие снова означает, что фальшивой является одна из монет 3, 5, 7 или 8, а отсутствие равновесия означает, что фальшивой является одна из монет 1, 2, 4 или 6. Результат этого взвешивания вместе с результатом пре­дыдущего исключает еще две возможности. Например, если весы оба раза оказывались в равновесии, то фальшивой является либо монета 7, либо монета 8, поскольку только они не участвовали ни в одном взвешивании. Наконец, при последнем взвешивании следует взять монеты 1, 3, 4 и 7. Результат этого взвешивания однозначно определяет фальшивую монету. Процесс станет ясным, если рассмотреть дерево решений, показанное на рис. 1.

Из рис. 1 видно, что каждый возможный исход соответствует одному из столбцов матрицы Н, если интерпретировать равновесие как 0, а неравновесие как 1. Таким образом, множество результатов взвешиваний образует синдром и каждый синдром от­вечает одной из возможных фальшивых монет. Единственное различие между задачей о взвешивании монет и задачей декодирования состоит в том, что при взвешивании заранее известно, что одна из монет является фальшивой, а при декодировании может оказаться, что все символы приняты верно. В любом случае мы пытаемся выделить одно из восьми возможных событий. Если бы существовал канал, в котором всегда появлялась одна ошибка, то можно было бы использовать код Хемминга длиной 8 и аналогия была бы полной.

Рис. 1. Дерево решений для задачи о взвешивании монет:

ф. м. – фальшивая монета

Приведенный пример показывает очень важное свойство хороших кодов. Каждая проверка на четность организована таким образом, чтобы получить максимальную информацию о положении ошибки. Таким образом, при первой проверке исключается половина возможных символов, при следующей – половина оставшихся и т. д. Большинство кодов, конечно, оказываются не столь эффективными; однако при построении кодов для различных специальных применений следует пытаться использовать этот принцип.