Такая простая фраза, как «Приложение размером 2 КБ», основана на блестящих идеях, которые впервые появились в статье «Математическая теория связи», опубликованной в двух частях в 1948 г. американским инженером Клодом Шенноном.
В этой основополагающей статье Шеннон предложил использовать слово «бит» для обозначения наименьшей единицы информации. Общая проблема, которую Шеннон рассматривал в своей работе, знакома и современным читателям. Как лучше всего зашифровать сообщение, чтобы оно не повредилось во время передачи? Шеннон пришел к выводу, что невозможно найти шифр, который предотвратит потерю информации. Иными словами, при передаче информации неизбежно возникают ошибки. Однако этот вывод не помешал поиску стандартов кодификации, которые, не имея возможности исключить ошибки, могли бы по крайней мере обеспечить высокий уровень надежности.
При цифровой передаче информации сообщение, сгенерированное отправителем (это может быть как человек, так и компьютер или другое устройство), кодируется в двоичной системе и поступает в канал связи, состоящий из компьютеров отправителя и получателя, плюс самой линии связи, которая может быть или физическим кабелем, или беспроводной (радиоволны, инфракрасное излучение и т. д.). Движение по каналу связи является особенно уязвимым процессом, потому что сообщение подвергается всевозможным воздействиям, в том числе взаимодействиям с другими сигналами, неблагоприятным температурам физической среды и затуханиям (ослаблению) сигнала при прохождении через среду. Эти источники помех называются шумами.
Одним из таких методов является избыточность информации. Он состоит в повторении при определенных критериях некоторых характеристик сообщения. Рассмотрим пример, который поможет пояснить процесс. Возьмем текст, в котором каждое слово состоит из четырех битов, общее количество различных слов — 16 (т. к. 24 = 16), каждое слово имеет вид а1а2а3а4. Перед отправкой сообщения мы добавим к слову еще три бита c1c2c3так что закодированное сообщение при движении по каналу связи будет выглядеть как а1а2а3а4c1c2c3. Дополнительные символы c1c2c3 обеспечивают надежность сообщения. Они называются контрольными битами, или битами четности, и строятся следующим образом.
Добавим следующие биты четности к сообщению 0111.
Так как сумма 0 + 1 + 1 = 2 четная, с1 = 0.
Так как сумма 0 + 1 + 1 = 2 четная, с2 = 0.
Так как сумма 1 + 1 + 1 = 3 нечетная, с3 = 1.
Следовательно, сообщение 0111 будет передано в виде 0111001. Для «слов» мы, таким образом, получим следующую таблицу:
* * *
ГЕНИЙ БЕЗ НАГРАДЫ
Клод Элвуд Шеннон (1916–2001) был одним из величайших научных деятелей XX в. Получив образование по специальности «электротехника» в Мичиганском университете и Массачусетском технологическом институте, он работал математиком в лаборатории компании «Белл», где занимался исследованиями по криптографии и теории коммуникации. Его научный вклад настолько велик, что он считается одним из основоположников теории информации, но поскольку его работы были на стыке математики и информационных технологий, он так и не получил самой престижной среди ученых Нобелевской премии.
* * *
Допустим, что на другом конце сообщение будет получено в виде 1010110. Заметим, что такая комбинация нулей и единиц не входит в число возможных кодов и, следовательно, является ошибкой при передаче. В попытке исправить ошибку система сравнивает каждую цифру с набором цифр всех возможных кодов, чтобы найти наиболее вероятную альтернативу. Для этого система проверяет, какие из цифр представляют собой ошибку, следующим образом.
Ошибочное слово (1010110) отличается от другого слова (1000110) одной цифрой. Так как эта разница наименьшая, система предложит получателю этот второй, исправленный вариант. Аналогичный принцип использует программа контроля правописания текстового редактора. При обнаружении слова, которое не содержится в ее внутреннем словаре, программа предлагает ряд близких альтернатив.
Количество позиций, в которых соответствующие символы двух слов (понимаемых как последовательность символов) различны, называется расстоянием между двумя последовательностями. Этот метод обнаружения и исправления ошибок был предложен американцем Ричардом Хэммингом (1915–1998), современником Клода Шеннона.