Хэмминг (7,4)

редактировать
Хэмминг (7,4) -Код
Hamming(7,4).svg
Назван в честьРичарда В. Хэмминга
Классификация
ТипЛинейный код блока
Длина блока 7
Длина сообщения 4
Скорость 4/7 ~ 0,571
Расстояние 3
Размер алфавита 2
Обозначение [ 7,4,3] 2 -код
Свойства
совершенный код
  • v
  • t
Графическое изображение 4 битов данных от d 1 до d 4 и 3 бита четности p 1 до p 3 и какие биты четности применяются к каким битам данных

В теории кодирования, Хэмминга (7, 4) - это код линейного исправления ошибок, который кодирует четыре бита данных в семь битов путем добавления трех битов четности. Это член более крупного семейства кодов Хэмминга, но термин код Хэмминга часто относится к этому конкретному коду, который Ричард У. Хэмминг ввел в 1950 году. В то время Хэмминг работал в Bell Telephone Laboratories и был разочарован подверженным ошибкам считывателем перфокарт , поэтому он начал работать над кодами исправления ошибок.

Код Хэмминга добавляет три дополнительных контрольных бита на каждые четыре бита данных сообщения. Алгоритм Хэмминга (7,4) может исправить любую однобитовую ошибку или обнаружить все однобитовые и двухбитовые ошибки. Другими словами, минимальное расстояние Хэмминга между любыми двумя правильными кодовыми словами равно 3, и принятые слова могут быть правильно декодированы, если они находятся на расстоянии не более одного от кодового слова, которое было передано отправителем. Это означает, что для ситуаций среды передачи, в которых пакетных ошибок не возникает, эффективен код Хэмминга (7,4) (поскольку среда должна быть чрезвычайно шумной для переключения двух из семи битов).

В квантовой информации код Хэмминга (7,4) используется в качестве основы для кода Стейна, типа кода CSS используется для квантовой коррекции ошибок.

Содержание
  • 1 Цель
  • 2 Матрицы Хэмминга
  • 3 Канальное кодирование
  • 4 Проверка четности
  • 5 Исправление ошибок
  • 6 Декодирование
  • 7 Множественные битовые ошибки
  • 8 Все кодовые слова
  • 9 E 7 решетка
  • 10 Ссылки
  • 11 Внешние ссылки
Цель

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

Бит №1234567
Переданный битp 1 {\ displaystyle p_ {1}}p_ {1} p 2 {\ displaystyle p_ {2}}p_{2}d 1 {\ displaystyle d_ {1}}d_ {1} p 3 {\ displaystyle p_ {3}}p_ {3} d 2 {\ displaystyle d_ {2}}d_ {2} d 3 {\ displaystyle d_ {3}}d_ {3} d 4 {\ displaystyle d_ {4}}d_ {4 }
p 1 {\ displaystyle p_ {1}}p_ {1} ДаНетДаНетДаНетДа
p 2 {\ displaystyle p_ {2}}p_{2}НетДаДаНетНетДаДа
p 3 {\ displaystyle p_ {3}}p_ {3} НетНетНетДаДаДаДа

Это Таблица описывает, какие биты четности покрывают переданные биты в закодированном слове. Например, p 2 обеспечивает четность для битов 2, 3, 6 и 7. Он также детализирует, какой переданный бит покрывается каким битом четности при чтении столбца. Например, d 1 покрывается p 1 и p 2, но не p 3. Эта таблица будет иметь поразительное сходство с таблицей. матрица проверки на четность (H ) в следующем разделе.

Кроме того, если столбцы четности в приведенной выше таблице были удалены

d 1 {\ displaystyle d_ {1}}d_ {1} d 2 {\ displaystyle d_ {2}}d_ {2} d 3 { \ displaystyle d_ {3}}d_ {3} d 4 {\ displaystyle d_ {4}}d_ {4 }
p 1 {\ displaystyle p_ {1}}p_ {1} ДаДаНетДа
p 2 {\ displaystyle p_ {2}}p_{2}ДаНетДаДа
p 3 {\ displaystyle p_ {3}}p_ {3} НетДаДаДа

, тогда сходство со строками 1, 2 и 4 кода образующая матрица (G ) ниже также будет очевидна.

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

Матрицы Хэмминга

Коды Хэмминга могут быть вычислены в терминах линейной алгебры через матрицы, потому что коды Хэмминга являются линейными кодами. Для кодов Хэмминга могут быть определены две матрицы Хэмминга : порождающая матрица кода Gи матрица проверки на четность H:

GT: = (1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1), H: = (1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1). {\ displaystyle \ mathbf {G ^ {T}}: = {\ begin {pmatrix} 1 1 0 1 \\ 1 0 1 1 \\ 1 0 0 0 \\ 0 1 1 1 \\ 0 1 0 0 \\ 0 0 1 0 \\ 0 0 0 1 \\} end {pqumatrix} \ mathbf {H}: = {\ begin {pmatrix} 1 0 1 0 1 0 1 \\ 0 1 1 0 0 1 1 1 \\ 0 0 0 1 1 1 1 \\\ end {pmatrix}}.}{\ displaystyle \ mathbf {G ^ {T}}: = {\ begin {pmatrix} 1 1 0 1 \\ 1 0 1 1 \\ 1 0 0 0 \\ 0 1 1 1 \\ 0 1 0 0 \\ 0 0 \ 1 0 0 \\ 1 \ 0 0 0 \ end {pmatrix}}, \ qquad \ mathbf {H}: = {\ begin {pmatrix} 1 0 1 0 1 0 1 \\ 0 1 1 0 0 1 1 \\ 0 0 0 0 1 1 1 1 1 1 \\\ end {pmatrix}}.}
Разрядность строк и биты четности

Как упоминалось выше,, 2 и 4 из G должны выглядеть знакомо, поскольку они отображают биты данных в свои биты четности:

  • p1охватывает d 1, d 2, d 4
  • p2охватывает d 1, d 3, d 4
  • p3охватывает d 2, d 3, d 4

оставшиеся строки (3, 5, 6, 7) отображают данные в их позицию в закодированной форме, и в этой строке только 1, поэтому это идентичная копия. Фактически, эти четыре строки являются линейно независимыми и образуют единичную матрицу (по замыслу, а не совпадение).

Также, как упоминалось выше, три строки H должны быть знакомы. Эти строки используются для вычисления вектора синдрома на принимающей стороне, и если вектор синдрома является нулевым вектором (все нули), то полученное слово не содержит ошибок; если не ноль, то значение указывает, какой бит был перевернут.

Четыре бита данных, собранные как вектор p, предварительно умножаются на G (т. Е. Gp ) и берутся по модулю 2, чтобы получить передаваемое закодированное значение. Исходные 4 бита данных преобразуются в семь битов (отсюда и название «Хэмминга (7,4)») с добавлением трех битов четности для обеспечения четности с использованием вышеуказанных покрытий битов данных. В первой таблице выше показано отображение между каждым битом данных и битом четности в его конечную битовую позицию (с 1 по 7), но это также может быть представлено на диаграмме Венна. На первой диаграмме в этой статье показаны три круга (по одному для каждого бита четности), в которые включены биты данных, которые покрывает каждый бит четности. Вторая диаграмма (показанная справа) идентична, но вместо этого отмечены позиции битов.

В оставшейся части этого раздела следующие 4 бита (показаны как вектор-столбец) будут использоваться в качестве рабочего примера:

p = (d 1 d 2 d 3 d 4) = (1 0 1 1) {\ displaystyle \ mathbf {p} = {\ begin {pmatrix} d_ {1} \\ d_ {2} \\ d_ {3} \\ d_ {4} \\\ end {pmatrix}} = {\ begin {pmatrix} 1 \\ 0 \\ 1 \\ 1 \ end {pmatrix}}}{\ mathbf {p}} = {\ begin {pmatrix} d_ {1} \\ d_ {2} \\ d_ {3} \\ d_ {4} \\\ end {pmatrix}} = {\ begin {pmatrix} 1 \\ 0 \\ 1 \\ 1 \ end {pmatrix}}
Кодирование канала
Отображение в примере x . Четность красных, зеленых и синих кругов четная.

Предположим, мы хотим передать эти данные (1011) по шумному каналу связи. В частности, двоичный симметричный канал означает, что искажение ошибок не способствует ни нулю, ни единице (он симметричен по возникновению ошибок). Кроме того, предполагается, что все исходные векторы равновероятны. Возьмем произведение G и p с элементами по модулю 2, чтобы определить переданное кодовое слово x:

x = G p = (1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1) (1 0 1 1) = (2 3 1 2 0 1 1) = (0 1 1 0 0 1 1) {\ Displaystyle \ mathbf {x} = \ mathbf {G} \ mathbf {p} = {\ begin {pmatrix} 1 1 0 1 \\ 1 0 1 1 \\ 1 0 0 0 \\ 0 1 1 1 \\ 0 1 0 0 \\ 0 0 1 1 0 \\ 0 0 0 1 \\ }\} end {p begin {pmatrix} 1 \\ 0 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 2 \\ 3 \\ 1 \\ 2 \\ 0 \\ 1 \\ 1 \ end {pmatrix }} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix}}}{\ mathbf {x}} = {\ mathbf {G}} {\ mathbf {p}} = {\ begin {pmatrix } 1 1 0 1 \\ 1 0 1 1 \\ 1 0 0 0 \\ 0 1 1 1 \\ 0 1 0 0 \\ 0 0 1 0 \\ 0 0 0 1 \\\ end {pmatrix}} {\ begin {pmatrix} 1 \\ 0 \\ 1 \\ 1} end {pmatrix = {\ begin {pmatrix} 2 \\ 3 \\ 1 \\ 2 \\ 0 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \ \ 0 \\ 1 \\ 1 \ end {pmatrix}}

Это означает, что 0110011будет передается вместо передачи 1011.

Программисты, озабоченные умножением, должны заметить, что каждая строка результата является младшим значащим битом Счетчика популяции установленных битов, полученных в результате того, что строка и столбец Побитовое И, а не умножение.

На соседней диаграмме семь бит кодированного слова вставлены в свои соответствующие места; при осмотре видно, что четность красного, зеленого и синего кругов четная:

  • красный круг имеет две единицы
  • зеленый круг имеет две единицы
  • синий круг имеет четыре единицы

Вскоре будет показано, что если во время передачи бит перевернут, то четность двух или всех трех кругов будет неправильной, и ошибочный бит может быть определен (даже если один из битов четности), зная, что четность всех трех этих кругов должна быть четной.

Проверка четности

Если во время передачи ошибок не возникает, то полученное кодовое слово r идентично переданному кодовому слову x:

r = x {\ displaystyle \ mathbf { r} = \ mathbf {x}}{\ mathbf {r}} = {\ mathbf {x}}

Получатель умножает H и r, чтобы получить вектор синдрома z, который указывает, произошла ли ошибка, и если да, то для какого бита кодового слова. Выполнение этого умножения (опять же, записи по модулю 2):

z = H r = (1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1) (0 1 1 0 0 1 1) = (2 4 2) = (0 0 0) {\ Displaystyle \ mathbf {z} = \ mathbf {H} \ mathbf {r} = {\ begin {pmatrix} 1 0 1 0 1 0 1 \\ 0 1 1 0 0 1 1 \\ 0 \ 0 1 1 end 1 1 \ {pmatrix}} {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 2 \\ 4 \\ 2 \ end {pmatrix}} = {\ begin {pmatrix} 0 \\ 0 \\ 0 \ end {pmatrix}}}{\ mathbf {z}} = {\ mathbf {H}} {\ mathbf {r}} = {\ begin {pmatrix} 1 0 1 0 1 0 1 \\ 0 1 1 0 0 1 1 \\ 0 0 0 1 1 1 1 \\\ end {pmatrix}} {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin { pmatrix} 2 \\ 4 \\ 2 \ end {pmatrix}} = {\ begin {pmatrix} 0 \\ 0 \\ 0 \ end {pmatrix}}

Поскольку синдром z является нулевым вектором, приемник может сделать вывод, что ошибки не произошло. Этот вывод основан на наблюдении, что когда вектор данных умножается на G, смена базиса происходит в векторном подпространстве, которое является ядром H . Пока во время передачи ничего не происходит, r будет оставаться в ядре H, и умножение даст нулевой вектор.

Исправление ошибок

В противном случае предположим, что произошла ошибка одного бита. Математически мы можем написать

r = x + ei {\ displaystyle \ mathbf {r} = \ mathbf {x} + \ mathbf {e} _ {i}}{\ mathbf {r}} = {\ mathbf {x}} + {\ mathbf {e}} _ {i}

по модулю 2, где ei- это ith {\ displaystyle i_ {th}}i _ {{th}} единичный вектор, то есть нулевой вектор с 1 в i {\ displaystyle i ^ {th}}i ^ {th} , считая от 1.

e 2 = (0 1 0 0 0 0 0) {\ displaystyle \ mathbf {e} _ {2} = {\ begin {pmatrix} 0 \\ 1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \ end {pmatrix}}}{\ mathbf {e}} _ {2} = {\ begin {pmatrix} 0 \\ 1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \ end {pmatrix}}

Таким образом, приведенное выше выражение означает одну битовую ошибку в i {\ displaystyle i ^ {th}}i ^ {th} месте.

Теперь, если мы умножим этот вектор на H:

H r = H (x + ei) = H x + H ei {\ displaystyle \ mathbf {Hr} = \ mathbf {H} \ left (\ mathbf {x} + \ mathbf {e} _ {i} \ right) = \ mathbf {Hx} + \ mathbf {He} _ {i}}{\ mathbf {Hr}} = {\ mathbf {H}} \ left ({\ mathbf {x}} + {\ mathbf {e}} _ {i} \ right) = {\ mathbf {Hx}} + {\ mathbf {He}} _ {i}

Поскольку x - переданные данные, это безошибочно, и в результате произведение H и x равно нулю. Таким образом,

H x + H ei = 0 + H ei = H ei {\ displaystyle \ mathbf {Hx} + \ mathbf {He} _ {i} = \ mathbf {0} + \ mathbf {He} _ {i } = \ mathbf {He} _ {i}}{\ mathbf {Hx}} + {\ mathbf {He}} _ {i} = {\ mathbf {0 }} + {\ mathbf {He}} _ {i} = {\ mathbf {He}} _ {i}

Теперь произведение H со стандартным базисом i {\ displaystyle i ^ {th}}i ^ {th} vector выбирает этот столбец H, мы знаем, что ошибка возникает в том месте, где встречается этот столбец H .

Например, предположим, что мы ввели битовую ошибку в бит №5

r = x + e 5 = (0 1 1 0 0 1 1) + (0 0 0 0 1 0 0) = (0 1 1 0 1 1 1) {\ Displaystyle \ mathbf {r} = \ mathbf {x} + \ mathbf {e} _ {5} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix}} + {\ begin {pmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ 0 \\ 0 \ end {pmatrix}} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 1 \\ 1 \\ 1 \ end {pmatrix}}}{\ mathbf {r}} = {\ mathbf {x}} + {\ mathbf {e}} _ {5} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix }} + {\ begin {pmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ 0 \\ 0 \ end {pmatrix}} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 1 \\ 1 \\ 1 \ end {pmatrix}}
Битовая ошибка в бите 5 приводит к плохой четности в красных и зеленых кругах

На диаграмме справа показаны битовая ошибка (показана синим текстом) и созданная плохая четность (показана красным текстом) в красном и зеленом кругах. Битовую ошибку можно обнаружить, вычислив четность красного, зеленого и синего кружков. Если обнаружена плохая четность, то бит данных, который перекрывает только круги плохой четности, является битом с ошибкой. В приведенном выше примере красный и зеленый кружки имеют плохую четность, поэтому бит, соответствующий пересечению красного и зеленого, но не синего, указывает на бит с ошибкой.

Теперь

z = H r = (1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1) (0 1 1 0 1 1 1) = ( 3 4 3) = (1 0 1) {\ displaystyle \ mathbf {z} = \ mathbf {Hr} = {\ begin {pmatrix} 1 0 1 0 1 0 1 \\ 0 1 1 0 0 1 1 \\ 0 0 0 0 1 1 1 1 \\\ end {begin {pmatrix}} { pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 1 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 3 \\ 4 \\ 3 \ end {pmatrix}} = {\ begin {pmatrix} 1 \\ 0 \\ 1 \ end {pmatrix}}}{\ mathbf {z}} = {\ mathbf {Hr}} = {\ begin {pmatrix} 1 0 1 0 1 0 1 \\ 0 1 1 0 0 1 1 \\ 0 0 0 1 1 1 1 \\\ end {pmatrix}} {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 1 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 3 \\ 4 \\ 3 \ end {pmatrix}} = {\ begin {pmatrix} 1 \\ 0 \\ 1 \ end {pmatrix}}

, что соответствует пятому столбцу H . Кроме того, использованный общий алгоритм (см. код Хэмминга # Общий алгоритм ) был преднамеренным в своей конструкции, так что синдром 101 соответствует двоичному значению 5, которое указывает, что пятый бит был поврежден. Таким образом, в бите 5 обнаружена ошибка, и ее можно исправить (просто переверните или отмените ее значение):

r исправлено = (0 1 1 0 1 ¯ 1 1) = (0 1 1 0 0 1 1) {\ Displaystyle \ mathbf {r} _ {\ text {исправлено}} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ {\ overline {1}} \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix}}}{\ mathbf {r}} _ {{{\ text {corrected}}}} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\\ overline {1} \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \ \ 1 \\ 1 \ end {pmatrix}}

Это исправленное полученное значение действительно теперь соответствует переданное значение x сверху.

Декодирование

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

Сначала определите матрицу R:

R = (0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1) {\ displaystyle \ mathbf {R} = {\ begin {pmatrix} 0 0 1 0 0 0 0 \\ 0 0 0 0 1 0 0 \\ 0 0 0 0 0 1 0 \\ 0 0 0 0 0 0 1 \\\ end {pmatrix}}}{\mathbf {R}}={\begin{pmatrix}0010000\\0000100\\0000010\\0000001\\\end{pmatrix}}

<40867>, полученное значение равно <40867>212>. Используя приведенный выше пример выполнения

pr = (0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1) (0 1 1 0 0 1 1) = (1 0 1 1) {\ displaystyle \ mathbf {p_ {r}} = {\ begin {pmatrix} 0 0 1 0 0 0 0 \\ 0 0 0 0 1 0 0 \\ 0 0 0 0 0 1 0 \\ 0 0 0 0 0 0 0 1 \\} end \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 1 \\ 0 \\ 1 \\ 1 \ end {pmatrix}}}{\ mathbf {p_ {r}}} = {\ begin {pmatrix } 0 0 1 0 0 0 0 \\ 0 0 0 0 1 0 0 \\ 0 0 0 0 0 0 1 0 \\ 0 0 0 0 0 0 1 \\\ end {pmatrix}} {\ begini n {pmatrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \ end {pmatrix}} = {\ begin {pmatrix} 1 \\ 0 \\ 1 \\ 1 \ end {pmatrix }}
Множественные битовые ошибки
В битах 4 и 5 появляются битовые ошибки (показаны синим текстом) с плохой четностью только в зеленом кружке (показанном красным текстом)

Нетрудно показать, что только одиночные битовые ошибки могут быть исправлены с помощью этой схемы. В качестве альтернативы, коды Хэмминга могут использоваться для обнаружения одиночных и двойных битовых ошибок, просто отмечая, что произведение H не равно нулю всякий раз, когда возникают ошибки. На соседней диаграмме биты 4 и 5 были перевернуты. Это дает только один кружок (зеленый) с недопустимой четностью, но ошибки не подлежат исправлению.

Однако код Хэмминга (7,4) и аналогичные коды Хэмминга не могут различать однобитовые ошибки и двухбитовые ошибки. То есть двухбитовые ошибки появляются так же, как однобитовые ошибки. Если исправление ошибок выполняется для двухбитовой ошибки, результат будет неверным.

Точно так же коды Хэмминга не могут обнаружить или исправить произвольную трехбитовую ошибку; Рассмотрим диаграмму: если бы бит в зеленом кружке (окрашенный в красный цвет) был равен 1, проверка четности вернула бы нулевой вектор, указывая, что в кодовом слове нет ошибки.

Все кодовые слова

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

Данные. (d 1, d 2, d 3, d 4) {\ displaystyle ({\ color {blue} d_ {1}}, {\ color {blue} d_ {2}}, {\ color {blue} d_ {3}}, {\ color {blue} d_ {4}) })}({\ color {blue} d_ {1}}, {\ color {blue} d_ {2}}, {\ color {blue} d_ {3}}, {\ color {blue} d_ {4}}) Хэмминга (7,4)Хэмминга (7,4) с дополнительным битом четности (Хэмминг (8,4))
Передано. (p 1, п 2, d 1, п 3, d 2, d 3, d 4) {\ displaystyle ({\ color {red} p_ {1}}, {\ color {red} p_ {2}}, {\ color { синий} d_ {1}}, {\ color {красный} p_ {3}}, {\ color {синий} d_ {2}}, {\ color {синий} d_ {3}}, {\ color {синий} d_ {4}})}({\ color {red} p_ {1}}, {\ color {red} p_ {2}}, {\ color {blue } d_ {1}}, {\ color {red} p_ {3}}, {\ color {blue} d_ {2}}, {\ color {blue} d_ {3}}, {\ color {blue} d_ {4}}) ДиаграммаПередано. (p 1, p 2, d 1, p 3, d 2, d 3, d 4, p 4) { \ displaystyle ({\ color {красный} p_ {1}}, {\ color {red} p_ {2}}, {\ color {blue} d_ {1}}, {\ color {red} p_ {3}}), {\ color {blue} d_ {2}}, {\ color {blue} d_ {3}}, {\ color {blue} d_ {4}}, {\ color {green} p_ {4}})}({\ color {red} p_ {1}}, {\ color {red} p_ {2}) }, {\ color {blue} d_ {1}}, {\ color {red} p_ {3}}, {\ color {blue} d_ {2}}, {\ color {blue} d_ {3}}, {\ color {blue} d_ {4}}, {\ color {green} p_ {4}}) Диаграмма
00000000000Код Хэмминга для 0000 становится 0000000 00000000код Хэмминга для 0000 становится 0000000 с дополнительным битом четности 0
10001110000Код Хэмминга для 1000 становится 1000011 11100001код Хэмминга для 1000 становится 1000011 с дополнительным битом четности 1
01001001100код Хэмминга для 0100 становится 0100101 10011001Код Хэмминга для 0100 становится 0100101 с дополнительным битом четности 1
11000111100Код Хэмминга для 1100 становится 1100110 01111000Код Хэмминга для 1100 становится 1100110 с дополнительным битом четности 0
00100101010Код Хэмминга для 0010 становится 0010110 01010101код Хэмминга для 0010 становится 0010110 с дополнительным битом четности 1
10101011010Код Хэмминга для 1010 становится 1010101 10110100Код Хэмминга для 1010 становится 1010101 с дополнительным битом четности 0
01101100110код Хэмминга для 0110 становится 0110011 11001100Хэмминга код для 0110 становится 0110011 с дополнительным битом 0
11100010110код Хэмминга для 1110 становится 1110000 00101101Код Хэмминга для 1110 становится 1110000 с дополнительным битом четности 1
00011101001код Хэмминга для 0001 становится 0001111 11010010Код Хэмминга для 0001 становится 0001111 с дополнительным битом четности 0
10010011001код Хэмминга для 1001 становится 1001100 00110011H код amming для 1001 становится 1001100 с дополнительным битом четности 1
01010100101код Хэмминга для 0101 становится 0101010 01001011Код Хэмминга для 0101 становится 0101010 с дополнительным битом четности 1
11011010101код Хэмминга для 1101 становится 1101001 10101010код Хэмминга для 1101 становится 1101001 с дополнительным битом четности 0
00111000011код Хэмминга для 0011 становится 0011001 10000111Код Хэмминга для 0011 становится 0011001 с дополнительным битом четности 1
10110110011Код Хэмминга для 1011 становится 1011010 01100110Код Хэмминга для 1011 становится 1011010 с дополнительным битом четности 0
01110001111код Хэмминга для 0111 становится 0111100 00011110Hamming code for 0111 becomes 0111100 with extra parity bit 0
11111111111код Хэмминга для 1111 становится 1111111 11111111Код Хэмминга для 1111 становится 1111111 с дополнительными бит четности 1
E7решетка

Хэмминга ( 7,4) код тесно связан с E7решеткой и, фактически, может быть использован для ее построения, точнее, ее двойственной решетки E 7 (аналогичная конструкция для E 7 использует двойной код [7,3,4] 2). В частности, если взять набор всех векторов x в Z с x, конгруэнтным (по модулю 2) кодовому слову Хэмминга (7,4), и изменить масштаб на 1 / √2, получится решетка E 7

E 7 ∗ = 1 2 {x ∈ Z 7: x mod 2 ∈ [7, 4, 3] 2}. {\ displaystyle E_ {7} ^ {*} = {\ tfrac {1} {\ sqrt {2}}} \ left \ {x \ in \ mathbb {Z} ^ {7}: x \, {\ bmod { \,}} 2 \ in [7,4,3] _ {2} \ right \}.}{\ displaystyle E_ {7} ^ {*} = {\ tfrac {1} {\ sqrt {2}}} \ left \ {x \ in \ mathbb {Z} ^ {7}: x \, {\ bmod {\,}} 2 \ in [7,4,3] _ {2} \ right \}.}

Это частный пример более общего отношения между решетками и кодами. Например, расширенный (8,4) -код Хэмминга, который возникает в результате добавления бита четности, также связан с решеткой E8.

Ссылки

.

Внешние ссылки
Последняя правка сделана 2021-05-22 11:59:54
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте