Фокусник и его Ассистент готовятся показать следующий фокус. Фокуснику завяжут глаза, после чего один из зрителей напишет на доске 60-битное слово (последовательность из 60 нулей и единиц). Ассистент уверен, что сможет незаметно передать фокуснику записку, содержащую 44 бита (не обязательно биты загаданного слова, может написать какие хочет). После чего Фокусник должен будет назвать слово. Для какого наибольшего числа C Фокусник и Ассистент могут придумать стратегию, позволяющую всегда назвать слово, совпавшее хотя бы в C битах с написанным зрителем.
Докажем оценку Пусть существует стратегия, позволяющая ошибаться не более чем в k битах (т. е. Тогда заметим, что Наблюдатель, знающий стратегию Фокусника, сообщенное Ассистентом слово, и набор бит, в которых ошибся Фокусник, может восстановить написанное Зрителем слово. В самом деле, Наблюдатель берет слово, которое должен был написать Фокусник, и меняет его в тех местах, где Фокусник ошибся. Значит, количество различных пар вида «слово сообщенное Ассистентом и набор мест, в которых фокусник ошибся» не меньше, чем различных слов, которые мог написать зритель. То есть
Перепишем в виде
и заметим, что при неравенство неверно: но
Теперь попробуем показать, из каких соображений строится пример. Для начала напомним конструкцию, известную как математикам так и программистам: двоичный код длины 15, позволяющий передать 11 бит полезной информации и исправить ошибку не более чем в одном бите (также известен как
Для начала заметим, что есть ровно 11 слов длины 4 из нулей и единиц, содержащих хотя бы две единицы (всего слов минус одно из одних нулей, минус четыре с одной единицей). Припишем такие слова номерам от 1 до 11 как угодно, например как в таблице:
№1 | №2 | №3 | №4 | №5 | №6 | №7 | №8 | №9 | №10 | №11 |
0011 | 0101 | 1001 | 0110 | 1010 | 1100 | 0111 | 1011 | 1101 | 1110 | 1111 |
Теперь построим код таким образом: в первые 11 бит запишем те биты, которые хотим передать (первые 11 позиций будем называть информационными). В последние 4 бита запишем следующие контрольные суммы. В 12-й запишем сумму по модулю два тех из первых 11 бит, приписанное 4-значное число которых имеет 1 в первом разряде, то есть биты №№ 3, 5, 6, 8, 9, 10, 11. В 13-й — сумму тех из первых 11 бит, приписанное 4-значное число которых имеет 1 во втором разряде, в
Пусть Получатель получил кодовое слово, возможно искаженное в одном бите. Получатель точно так же по первым 11 битам посчитает 4 контрольные суммы, и сравнит их с четырьмя полученными. Если совпали все четыре — то слово дошло без искажений. В самом деле, если бы исказился контрольный бит — в нем было бы расхождение, а если информационный — то расхождения были бы во всех контрольных, в которые он входит. Аналогично, если расхождение есть ровно в одном контрольном бите, то исказился именно он. В самом деле, если исказился другой контрольный — то все информационные дошли правильно, тогда в этом контрольном расхождения бы не было; а если исказился информационный, то все контрольные дошли правильно, и тогда расхождения были бы во всех контрольных, в которые входит искаженный информационный, а таких контрольных хотя бы два (именно за этим мы приписывали комбинации нулей и единиц, содержащие хотя бы две единицы). По аналогичным соображениям если получатель видит не менее двух расхождений с контрольными битами, то искажен точно информационный. Тогда достаточно из 11 информационных позиций выбрать ту, в приписанном
Теперь подумаем в других терминах, что же мы построили. У нас есть код из 211 кодовых слов. Каждое из этих слов можно исказить 16 способами (ничего не менять, или изменить один из 15 бит). Все полученных в результате слов будут разными. В самом деле, если бы какое-то слово w получалось двумя разными способами: искажением кодового слова u1 и искажением кодового слова u2 (в обоих случаях — не более чем в одном бите), то код бы не исправлял одну ошибку — Получатель может получить слово w, но в этом случае не может понять, посылали ему u1 или u2. Итак, все слов разные, но это означает что вообще любое из слов длины 15 получается искажением какого-то из кодовых слов не более чем в одном бите.
На этом и построим стратегию Фокусника и Ассистента. Ассистент видит написанное зрителем
Ответ: