TwiddleLab / Код / Как компьютер хранит всё
Исправляем ошибки на лету
Что ты узнаешь
- Исправление ошибок добавляет запасные биты, чтобы получатель сам мог найти и исправить перевёрнутые биты.
- В трёх кругах 4 бита данных летят с 3 битами чётности: это код Хэмминга.
- Нечётные круги указывают на тот единственный бит, который перевернулся.
- Запасные биты это избыточность: весь фокус в том, чтобы их понадобилось как можно меньше.
Как идёт урок
Оторви куски от QR-кода. Телефон всё равно его читает. Как?
Нажимай на жёлтые места, чтобы отрывать куски.
Три круга, семь бит. В каждом круге должно быть чётное число единиц.
4 бита данных стоят там, где круги пересекаются. Перетащи 0 или 1 на каждое фиолетовое место.
Отправь это по шумному проводу.
Один бит перевернётся. Пройди по шагам, что проверяет получатель.
Исправление ошибок.
Исправление ошибок: получатель находит перевёрнутый бит и исправляет его, не прося прислать сообщение заново.
Избыточность: лишние биты, которые делают это возможным. Здесь 7 бит несут 4.
Этот код с кругами это код Хэмминга (Ричард Хэмминг, 1950). QR-коды и космические зонды используют его более сильных родственников.
Пришли три сообщения, в каждом один плохой бит. Почини их.
Нажми на бит, который внутри каждого красного круга и снаружи каждого зелёного.
Закодируй своё сообщение.
Выбери любые 4 бита данных, потом поставь фиолетовые биты так, чтобы все три круга были чётными.
Шумный канал: почини каждое сообщение, пока оно не долетело до Марса.
Шум может перевернуть один бит. Нажми на него или нажми «Ошибки нет», если все круги чётные.
Простой способ пережить шум: отправить каждый бит три раза.
Сколько бит это займёт для сообщения из 100 бит? Передвинь метку.
На этот раз красный только один круг. Что сломалось?
Нажми на бит, который нужно починить.
Гонка: кто первым перенесёт 100 бит?
Нажми на свою ставку, потом запусти гонку.
Предыдущий урок: Фокус с чётностью · Следующий урок: Тайные послания · Часть курса: Как компьютер хранит всё
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.