WikiDer > Хэмминга (7,4)
Эта статья нужны дополнительные цитаты для проверка. (Июнь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) |
Хэмминга (7,4) -Код | |
---|---|
Названный в честь | Ричард В. Хэмминг |
Классификация | |
Тип | Линейный блочный код |
Длина блока | 7 |
Длина сообщения | 4 |
Ставка | 4/7 ~ 0.571 |
Расстояние | 3 |
Размер алфавита | 2 |
Обозначение | [7,4,3]2-код |
Характеристики | |
идеальный код | |
В теория кодирования, Хэмминга (7,4) это линейный код исправления ошибок это кодирует четыре биты данных в семь бит, добавив три биты четности. Это член большой семьи Коды Хэмминга, но термин Код Хэмминга часто ссылается на этот конкретный код, который Ричард В. Хэмминг введен в 1950 году. В то время Хэмминг работал в Bell Telephone Laboratories и был разочарован подверженным ошибкам перфокарта читатель, поэтому он начал работать над кодами исправления ошибок.[1]
Код Хэмминга добавляет три дополнительных контрольных бита к каждым четырем битам данных сообщения. Хэмминга (7,4) алгоритм может исправить любую однобитовую ошибку или обнаружить все однобитовые и двухбитовые ошибки. Другими словами, минимальная Расстояние Хэмминга между любыми двумя правильными кодовыми словами равно 3, и полученные слова могут быть правильно декодированы, если они находятся на расстоянии не более одного от кодового слова, которое было передано отправителем. Это означает, что для ситуаций среды передачи, когда пакетные ошибки не возникают, эффективен код Хэмминга (7,4) (поскольку среда должна быть чрезвычайно шумной, чтобы два из семи битов были перевернуты).
В квантовая информация, Хэмминга (7,4) используется в качестве основы для Код Steane, тип CSS код используется для квантовая коррекция ошибок.
Цель
Целью кодов Хэмминга является создание набора биты четности которые перекрываются, так что однобитовая ошибка в бите данных или же бит четности может быть обнаружен и исправлен. Хотя можно создать несколько перекрытий, общий метод представлен в Коды Хэмминга.
Кусочек # 1 2 3 4 5 6 7 Переданный бит да Нет да Нет да Нет да Нет да да Нет Нет да да Нет Нет Нет да да да да
Эта таблица описывает, какие биты четности покрывают переданные биты в закодированном слове. Например, п2 обеспечивает четность для битов 2, 3, 6 и 7. Он также детализирует, какой переданный бит покрывается каким битом четности при чтении столбца. Например, d1 покрывается п1 и п2 но нет п3 Эта таблица будет иметь поразительное сходство с матрицей проверки на четность (ЧАС) в следующем разделе.
Кроме того, если столбцы четности в приведенной выше таблице были удалены
да да Нет да да Нет да да Нет да да да
то сходство со строками 1, 2 и 4 матрицы генератора кода (грамм) ниже также будет очевидно.
Таким образом, при правильном выборе покрытия битов четности все ошибки с расстоянием Хэмминга, равным 1, могут быть обнаружены и исправлены, что и является целью использования кода Хэмминга.
Матрицы Хэмминга
Коды Хэмминга можно вычислить в линейная алгебра условия через матрицы потому что коды Хэмминга линейные коды. Для кодов Хэмминга два Матрицы Хэмминга можно определить: код матрица генератора грамм и матрица проверки на четность ЧАС:
Как упоминалось выше, строки 1, 2 и 4 из грамм должны выглядеть знакомо, поскольку они отображают биты данных в свои биты четности:
- п1 охватывает d1, d2, d4
- п2 охватывает d1, d3, d4
- п3 охватывает d2, d3, d4
Остальные строки (3, 5, 6, 7) отображают данные в их позицию в закодированной форме, и в этой строке только 1, поэтому это идентичная копия. Фактически, эти четыре ряда линейно независимый и сформировать единичная матрица (по задумке, а не случайно).
Также, как упоминалось выше, три ряда ЧАС должно быть знакомо. Эти строки используются для вычисления вектор синдрома на принимающей стороне и если вектор синдрома нулевой вектор (все нули), то полученное слово безошибочно; если не ноль, то значение указывает, какой бит был перевернут.
Четыре бита данных - собраны как вектор п - предварительно умножается на грамм (т.е. Gp) и взяты по модулю 2, чтобы получить передаваемое закодированное значение. Исходные 4 бита данных преобразуются в семь битов (отсюда и название «Хэмминга (7,4)») с добавлением трех битов четности для обеспечения четности с использованием вышеуказанных покрытий битов данных. В первой таблице выше показано отображение между каждым битом данных и битом четности в его конечную битовую позицию (с 1 по 7), но это также может быть представлено в виде Диаграмма Венна. На первой диаграмме в этой статье показаны три круга (по одному для каждого бита четности), в которые включены биты данных, которые покрывает каждый бит четности. Вторая диаграмма (показанная справа) идентична, но вместо этого отмечены позиции битов.
В оставшейся части этого раздела следующие 4 бита (показанные как вектор-столбец) будут использоваться в качестве рабочего примера:
Кодирование каналов
Предположим, мы хотим передать эти данные (1011
) через шумный канал связи. В частности, двоичный симметричный канал Это означает, что искажение ошибок не способствует ни нулю, ни единице (оно симметрично по возникновению ошибок). Кроме того, предполагается, что все исходные векторы равновероятны. Берем продукт грамм и п, с записями по модулю 2, чтобы определить переданное кодовое слово Икс:
Это означает, что 0110011
будет передаваться вместо передачи 1011
.
Программисты, озабоченные умножением, должны заметить, что каждая строка результата является младшим значащим битом Количество населения набора битов в результате того, что строка и столбец Побитовое И вместе, а не умножаются.
На соседней диаграмме семь бит закодированного слова вставлены в соответствующие места; при осмотре видно, что четность красного, зеленого и синего кругов четная:
- красный кружок имеет две единицы
- в зеленом кружке две единицы
- синий круг состоит из четырех единиц
Вскоре будет показано, что если во время передачи бит перевернут, то четность двух или всех трех кругов будет неправильной, и бит с ошибкой может быть определен (даже если один из битов четности), зная, что четность все три круга должны быть четными.
Проверка четности
Если во время передачи ошибок не возникает, то полученное кодовое слово р идентично переданному кодовому слову Икс:
Приемник умножает ЧАС и р получить синдром вектор z, который указывает, произошла ли ошибка, и если да, то для какого бита кодового слова. Выполнение этого умножения (опять же, записи по модулю 2):
Поскольку синдром z это нулевой вектор, получатель может сделать вывод, что ошибки не было. Этот вывод основан на наблюдении, что когда вектор данных умножается на грамм, смена базиса происходит в векторное подпространство, которое является ядро из ЧАС. Если во время передачи ничего не происходит, р останется в ядре ЧАС и умножение даст нулевой вектор.
Исправление ошибки
В противном случае предположим, что Один произошла битовая ошибка. Математически мы можем написать
по модулю 2, где ея это единичный вектор, то есть нулевой вектор с единицей в , считая от 1.
Таким образом, приведенное выше выражение означает единственную битовую ошибку в место.
Теперь, если мы умножим этот вектор на ЧАС:
С Икс - это переданные данные, они безошибочны, и в результате продукт ЧАС и Икс равно нулю. Таким образом
Теперь продукт ЧАС с стандартный базисный вектор выбирает этот столбец ЧАС, мы знаем, что ошибка возникает в том месте, где этот столбец ЧАС происходит.
Например, предположим, что мы ввели битовую ошибку в бит # 5.
На диаграмме справа показаны битовая ошибка (отображается синим текстом) и созданная плохая четность (отображается красным текстом) в красном и зеленом кругах. Битовую ошибку можно обнаружить, вычислив четность красного, зеленого и синего кружков. Если обнаружена плохая четность, то бит данных, который перекрывается Только кружки с плохой четностью - это бит с ошибкой. В приведенном выше примере красный и зеленый кружки имеют плохую четность, поэтому бит, соответствующий пересечению красного и зеленого, но не синего, указывает на бит с ошибкой.
Сейчас же,
что соответствует пятой колонке ЧАС. Кроме того, использовался общий алгоритм (видеть Код Хэмминга # Общий алгоритм) была намеренно построена так, чтобы синдром 101 соответствовал двоичному значению 5, что указывает на повреждение пятого бита. Таким образом, в бите 5 обнаружена ошибка, которую можно исправить (просто переверните или отмените ее значение):
Это исправленное полученное значение действительно теперь совпадает с переданным значением. Икс сверху.
Расшифровка
После того как полученный вектор был определен как свободный от ошибок или исправлен, если произошла ошибка (при условии, что возможны только нулевые или однобитовые ошибки), тогда принятые данные необходимо декодировать обратно в исходные четыре бита.
Сначала определите матрицу р:
Затем полученное значение, пр, равно Rr. Используя рабочий пример сверху
Множественные битовые ошибки
Нетрудно показать, что с помощью этой схемы можно исправить только однобитовые ошибки. В качестве альтернативы коды Хэмминга можно использовать для обнаружения одно- и двухбитовых ошибок, просто отметив, что произведение ЧАС отличен от нуля при возникновении ошибок. На соседней диаграмме биты 4 и 5 были перевернуты. Это дает только один кружок (зеленый) с недопустимой четностью, но ошибки не подлежат исправлению.
Однако коды Хэмминга (7,4) и аналогичные коды Хэмминга не могут различать однобитовые и двухбитовые ошибки. То есть двухбитовые ошибки появляются так же, как однобитовые ошибки. Если исправление ошибок выполняется для двухбитовой ошибки, результат будет неверным.
Точно так же коды Хэмминга не могут обнаружить или исправить произвольную трехбитовую ошибку; Рассмотрим диаграмму: если бы бит в зеленом кружке (окрашенный в красный цвет) был равен 1, проверка четности вернула бы нулевой вектор, указывая, что в кодовом слове нет ошибки.
Все кодовые слова
Так как у источника всего 4 бита, то есть только 16 возможных передаваемых слов. Включено восьмибитовое значение, если используется дополнительный бит четности (видеть Код Хэмминга (7,4) с дополнительным битом четности). (Биты данных показаны синим цветом, биты четности показаны красным цветом, а дополнительный бит четности показан желтым цветом.)
E7 решетка
Код Хэмминга (7,4) тесно связан с E7 решетка и, по сути, может быть использован для его построения, точнее, двойственной решетки E7∗ (аналогичная конструкция для E7 использует двойной код [7,3,4]2). В частности, взяв множество всех векторов Икс в Z7 с Икс конгруэнтно (по модулю 2) кодовому слову Хэмминга (7,4) и масштабируется на 1 /√2, дает решетку E7∗
Это частный пример более общей связи между решетками и кодами. Например, расширенный (8,4) -код Хэмминга, который возникает в результате добавления бита четности, также связан с E8 решетка. [2]
Рекомендации
- ^ "История кодов Хэмминга". Архивировано из оригинал на 2007-10-25. Получено 2008-04-03.
- ^ Конвей, Джон Х.; Слоан, Нил Дж. А. (1998). Сферические упаковки, решетки и группы (3-е изд.). Нью-Йорк: Springer-Verlag. ISBN 0-387-98585-9.