Коды Хэмминга Клод Шеннон Клод Шеннон (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).