Профессор Шор о кодах Хэмминга: «Первая практическая защита от шума»

MIT OpenCourseWare 1 тыс. 1 ч 18 мин 3 мин 17.12.2025
Главное

Искусство исправления: как работают коды Хэмминга 0:00

Теория кодирования — это фундамент надежной передачи данных в условиях шума. В лекции MIT OpenCourseWare профессор Питер Шор объясняет, как линейные коды, и в частности коды Хэмминга, позволяют обнаруживать и исправлять ошибки, возникающие при передаче сообщений через ненадежные каналы.

Теорема Шеннона и проблема поиска 0:28

В 1948 году Клод Шеннон доказал фундаментальную теорему о кодировании для каналов с шумом. Суть идеи заключается в следующем: если скорость передачи данных (отношение количества информационных бит $k$ к общему числу переданных бит $n$) меньше пропускной способности канала, то при увеличении длины блока $n$ вероятность ошибки стремится к нулю.

Однако реализация этого на практике сталкивается с трудностями:

По словам профессора Шора, для практических систем необходимы специфические коды с эффективными алгоритмами декодирования, которыми и являются линейные коды.

Рождение кодов Хэмминга 6:23

Ричард Хэмминг в 1950 году разработал первый класс кодов, способных исправлять ошибки. Простейший из них кодирует 4 информационных бита в 7 бит, что позволяет исправить одну ошибку.

Механизм работы можно представить через диаграмму Венна:

  1. Сообщение из четырех бит ($a, b, c, d$) дополняется тремя проверочными битами четности.
  2. Эти биты размещаются в пересечениях кругов так, чтобы сумма в каждом круге (по модулю 2, через операцию XOR) была четной.
  3. Если при передаче происходит ошибка в одном бите, соответствующие круги будут показывать «нечетную» сумму, что позволяет однозначно вычислить позицию поврежденного бита.

Математика линейных кодов 15:31

Линейный код над полем $F$ — это совокупность строк, где любая линейная комбинация кодовых слов также является кодовым словом. Каждый такой код имеет:

Как отмечает профессор Шор, код способен исправить $t = \lfloor(d-1)/2\rfloor$ ошибок. Для линейных кодов расстояние $d$ совпадает с минимальным весом (количеством ненулевых элементов) любого ненулевого кодового слова.

Синдромное декодирование 1:02:02

Для автоматизации исправления ошибок используется проверочная матрица $H$, для которой выполняется условие $G \times H = 0$. Процесс декодирования выглядит так:

  1. При получении слова $c_{tilde}$ вычисляется синдром: $S = c_{tilde} \times H$.
  2. Если ошибка $e$ имела вес 1, то синдром равен соответствующему столбцу или строке матрицы $H$, что позволяет мгновенно локализовать сбой.
  3. Это делает алгоритм чрезвычайно эффективным для кодов Хэмминга, так как расчет синдрома не зависит от исходного сообщения.

Совершенные коды и код Голея 1:10:27

Совершенный код — это код, в котором все возможные синдромы однозначно соответствуют ошибкам веса $t$ или меньше. Коды Хэмминга являются совершенными.

Помимо них, существует лишь один другой класс бинарных совершенных кодов — код Голея (с длиной блока $n=23$ и $t=3$). Интересно, что, по словам Шора, этот код был обнаружен энтузиастом футбольных ставок, а позже математически связан с теорией конечных простых групп. Несмотря на свою элегантность, совершенных кодов в природе крайне мало, поэтому инженерам приходится использовать и другие подходы, такие как коды Рида — Соломона.

💬 Цитаты

«Коды Хэмминга — это первая практическая защита от шума, найденная всего через два года после теоремы Шеннона.»

Питер Шор 06:23

«Синдром называется так, потому что вы используете его для диагностики ошибки.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Синдром
Вектор, вычисляемый при декодировании, который указывает на наличие и позицию ошибки в данных.
Вес Хэмминга
Количество ненулевых элементов (обычно единиц) в векторе.
Линейный код
Код, в котором любая линейная комбинация кодовых слов является допустимым кодовым словом.
Совершенный код
Код, в котором все возможные комбинации синдромов соответствуют уникальным ошибкам.
📊 Цифры
🗓 Хронология
  1. 1948 Клод Шеннон доказывает теорему о кодировании для каналов с шумом.
  2. 1950 Ричард Хэмминг представляет первые практические коды для исправления ошибок.
⚖️ Другая сторона
Математика и физика Richard Hamming MIT OpenCourseWare Error-Correcting Codes Hamming Codes Syndrome Decoding