Репортаж с ничейной земли. Рассказы об информации
Шрифт:
Теорема Шеннона не дает ответа на этот вопрос. Она лишь доказывает, что такой код может быть создан. В разных случаях он может быть разным. Стоит лишь найти лучший из кодов, и сообщение перестанет «бояться» шумов.
С тех пор теория информации неустанно ищет лучшие коды...
Польза сравнений
«Истина познается путем сравнения». Этот издавна применяемый в науке принцип в связи с развитием теории информации воплотился в целый ряд приемов и схем. Есть совсем простые приемы.
Одно сообщение идет по трем каналам связи. Каждый канал состоит из приемника и передатчика, работающих в определенном
Но слишком уж дорого обходится эта уверенность: должны непрерывно работать все 3 канала, хотя в принципе мог бы справляться один. Ну что ж, давайте попробуем обходиться одним каналом. А для того чтобы не бояться случайной помехи, будем передавать сообщение три раза подряд. А отличать истинное от ложного мы поручим специальному автомату. Принцип действия его очень прост.
Пусть число 01001 передается подряд три раза, причем каждая из передач сопровождается помехой, дающей ложный знак 1 вместо одного из нулей. Вот эти случаи:
Истинное сообщение. .. .. .. .. .. .. .. .. .. .. .. .. . .
01001
Ложное сообщение первое. .. .. .. .. .. .. .. .. .. .. .. . .
11001
Ложное сообщение второе. .. .. .. .. .. .. .. .. .. .. .. . .
01101
Ложное сообщение третье. .. .. .. .. .. .. .. .. .. .. .. . .
01011
Число, полученное в результате сравнения. .. .. .. .. .. .. .. .
01001
Каждый полученный знак поступает в ячейку памяти. Для того чтобы в этой ячейке накопился знак 1, необходимо, чтобы сообщение 1 повторилось не менее трех раз подряд. Создать такую ячейку нетрудно.
Подключим конденсатор к сетке радиолампы, и пусть каждый импульс (то есть сигнал 1) несет ему «порцию» заряда. Трех таких «порций» должно быть достаточно для того, чтобы лампа могла отпереться. Когда она отперта, она «помнит» знак 1.
Взгляните теперь на таблицу: три раза подряд сигнал 1 повторился при передаче 2-го и 5-го знаков.
Значит, только 2-я и 5-я ячейки будут отперты, остальные будут «помнить» знак 0. А все пять ячеек передадут истинное сообщение: число 01001.
Это простое устройство делает сложное дело: извлекает истинное сообщение из трех ложных. Между прочим, так же работает следователь, когда, пользуясь ложными показаниями трех соучастников, он восстанавливает истинную картину, сравнив показания между собой.
И все же, как ни остроумно это устройство, оно так же невыгодно, как и система из трех каналов. Арифметика тут довольно простая: каждое сообщение повторялось три раза, значит в три раза уменьшилось количество информации, проходящей через данный канал. Увеличился лишь объем ее упаковки. Как же создать надежную упаковку, не загружая канал? Вот тут и приходят на помощь те специальные коды, которые имеет в виду Шеннон.
К обычным обозначениям двоичных чисел добавляется еще один знак.
Сообщения в
двоичном коде
Добавочный
знак
Сообщения с
добавочным знаком
00
0
000
01
1
011
10
1
101
11
0
110
В одних случаях добавляется 0, в других - 1. В результате в любом сообщении (см. 3-ю колонку) будет содержаться четное число единиц.
В какой бы момент ни появилась теперь помеха, она не сможет создать ложного числа. Она может превратить сообщение 101 в 111 или ООО в 100, но ни одна из этих ложных комбинаций не содержится в нашей таблице, потому что помеха, добавив знак 1, создала нечетное число единиц. Значит, приняв такое сообщение, мы сразу обнаружим, что оно содержит ошибку, которую породил посторонний сигнал.
Однако это лишь одна сторона вопроса. Ведь, обнаружив ложное число 111, мы еще не можем установить истину, так как в этом случае могло передаваться и 011, и 110, и 101. Оказывается, можно создать и такие коды, которые способны исправить самих себя. Этот код выглядит так:
Передаваемое
число
Обозначение
кодом
1
00 000
2
01 110
3
10 101
4
11 011
Код построен таким образом, что любые две комбинации отличаются друг от друга не менее чем тремя знаками (например, у 10 101 и 11 011 отличаются 2-й, 3-й и 4-й знаки). Пусть пришло сообщение: 10 111. Истинно оно или ложно? Автомат начинает «оценивать» этот сигнал. В его памяти хранятся все истинные комбинации:
00
000
(I)
01
110
(II)
10
101
(III)
11
011
(IV)
Он начинает по очереди извлекать их из «памяти» и сравнивать с принятым числом 10 111. Может быть, было передано 00 000? Нет, сходства здесь нет никакого: четыре знака принятого сигнала не совпадают с этим числом. Автомат продолжает действовать.
II комбинация (01 110) уже больше похожа на принятую, но и здесь не совпадают целых 3 знака. Зато III комбинация отличается только одним знаком: в памяти есть комбинация 10 101, а принято 10 111. Автомат делает вывод: передавалось число 10 101, но в момент передачи 4-го знака появилась помеха, и потому вместо 0 в приемник пришла лишняя единица. Такой код не требует повторений: автомат однажды «запомнил» истину и ни одного сообщения не принимает «на веру».