Коды Хэмминга

advertisement
Коды Хэмминга
Клод Шеннон
Клод Шеннон (1916-2001) со школьных лет проявлял
равный интерес к математике и электротехнике.
В 1932 году он поступил в Университет штата Мичиган,
в 1936-м — в МТИ, который закончил в 1940 году,
получив две степени — магистра по электротехнике
и доктора в области математики. В 1941 году Шеннон
поступил на работу в Bell Laboratories. В 1948-м
Шеннон опубликовал статью «Математическая теория
связи», где были сформулированы базовые идеи
ученого, в частности, определение количества
информации через энтропию, а также предложил
единицу информации - бит. В 1957-1961 годах Шеннон
опубликовал работы, где доказывалась теорема
о пропускной способности зашумленных каналов
связи, которая теперь носит его имя. В 1957 году
Шеннон стал профессором Массачусетского
технологического института, откуда ушел на пенсию
спустя 21 год.
Ричард Хэмминг
Ричард Хэмминг (1915-1998) начал свое
образование в Чикагском университете, где
в 1937 году получил степень бакалавра. В 1939 году
он получил степень магистра в Университете
Небраски, а степень доктора по математике —
в Университете Иллинойса. В 1945 году Хэмминг
начал работать в рамках Манхэттенского проекта по
созданию атомной бомбы. В 1946 году Хэмминг
поступил на работу в Bell Telephone Laboratories, где
работал в том числе с Клодом Шенноном. Труд,
сделавший его знаменитым, фундаментальное
исследование кодов обнаружения и исправления
ошибок, Хэмминг опубликовал в 1950 году.
В 1956 году он принимал участие в работе над одним
из ранних мэйнфреймов IBM 650. Его работы
заложили основу языка программирования, который
позднее эволюционировал в языки высокого уровня.
В знак признания заслуг Хэмминга в области
информатики институт IEEE учредил медаль за
выдающиеся заслуги в развитии информатики
Использование
• Информационные технологии и связь
• Также
– Сжатие данных
– Некоторые решения известной головоломки
The Hat Game
– Построение блоковых турбо кодов
(7,4) двоичный код Хэмминга
• Передаются 4-х битовые сообщения
• Строится кодовое слово (с1 с2 … с7) из B7
• c3, c5, c6, c7 - информационные
разряды(информационное слово есть (с3 с5
с6 с7 )).
с  c c c
4
5
6
7
с2  c3  c6  c7
с1  c3  c5  c7
(7,4) двоичный код Хэмминга проверки
с4  c5  c6  c7  0
с2  c3  c6  c7  0
с1  c3  c5  c7  0
Проверочная матрица
0 0 0 1 1 1 1


H  0 1 1 0 0 1 1
1 0 1 0 1 0 1
Слова двоичного (7,4) кода
Хэмминга
(7,4) двоичный код Хэмминга синдром
• Пусть
s1  с4  c5  c6  c7
s2  с2  c3  c6  c7
s3  с1  c3  c5  c7
(7,4) двоичный код Хэмминга
• Если (b1 b2 … b7) есть принятое слово и
(s1 s2 s3) ≠ 000, произошла ошибка. Если (s1
s2 s3) =000, предполагаем, что ошибок нет
Общий случай
• Для заданного r строится r × 2r-1 матрица
H, столбцы которой являются двоичными
записями (r – разрядными) чисел 1, …, 2r-1.
• Матрица H является проверочной матрицей
двоичного (2r-1, 2r-1 – r) кода Хэмминга.
• Таким образом
C  { , H    0}
Синдромное декодирование
• Пусть  T  (b1 , b2 ,..., bn ) есть полученное
слово.
• Синдром принятого слова s  H   . Если
s=0, то предполагаем, что ошибок нет. Если
s≠ 0, то s есть двоичное представление
некоторого целого 1 ≤ t ≤ n=2r-1 и
предполагаемоее кодовое слово есть
 T  (b1 , b2 ,..., bt  1,..., bn )
Пример для (7,4)-кода
• Пусть получено слово (1 0 1 0 0 1 0).
синдром
100 есть двоичная запись 4, поэтому
передаваемое слово равно (1 0 1 1 0 1 0).
Расширенный (8,4) код Хэмминга
• Берется (7,4) двоичный код Хэмминга:
с1  c3  c5  c7
с2  c3  c6  c7
с4  c5  c6  c7
• Добавляется новый бит с0 так что
с0  c1  c2  c3  с4  с5  с6  с7
• То есть новый разряд делает сумму всех
разрядов четной (проверка на четность)
Проверочная матрица
расширенного кода
•
Расширенный код Хэмминга
• Минимальный вес расширенного (8,4)-кода
равен 4, поэтому исправляется 1 ошибка и
обнаруживаются две ошибки.
• Общая конструкция расширенного (2r, 2r-1
– r) кода из (2r –1, 2r –1 – r) двоичного кода
аналогична: добавляется бит проверки на
четность.
Недвоичный код Хэмминга
• Рассмотрим алфавитA={0, …, q}, q ≥ 2.
• Для заданного r, строим r × (qr-1)/(q-1)
матрицу H над A, всякие два столбца
которых линейно независимы.
• Проверочная матрица H задает ((qr-1)/(q-1),
(qr-1)/(q-1) – r) q-ный код Хэмминга.
Пример: троичный [4, 2] код
• Два проверочные матрицы для (4, 2)
троичного кода Хэмминга:
Синдромное декодирование:
недвоичный случай
• Синдром принятого слова  : s  H  
является столбцом матрицы H,
умноженным на константу, то есть s  cH i
где c – константа, H i - i-й столбец H.
Предполагая, что ошибка единичная,
получаем
    (0,..., c,...0)
Пример
• (4,2) троичный код с проверочной
матрицей
, полученное слово
(0 1 1 1).
• Декодируем (0 1 1 1) как
(0 1 1 1) – (0 0 2 0) = (0 1 2 1).
Download