Тема . Высшая проба

Комбинаторика на Высшей пробе: клетки, комбигео, игры, графы

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела высшая проба
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#74783

Фокусник и его Ассистент готовятся показать следующий фокус. Фокуснику завяжут глаза, после чего один из зрителей напишет на доске 60-битное слово (последовательность из 60 нулей и единиц). Ассистент уверен, что сможет незаметно сообщить фокуснику 44 бита (не обязательно написанные в слове, можно вычислять любые функции). После чего Фокусник должен будет назвать слово. Для какого наибольшего числа C  Фокусник и Ассистент могут придумать стратегию, позволяющую всегда назвать слово, совпавшее хотя бы в C  битах с написанным зрителем?

Источники: Высшая проба - 2022, 11.6 (см. olymp.hse.ru)

Подсказки к задаче

Подсказка 1

Давайте начнём решать эту задачу с оценки. Причём мы будем рассуждать так, что фокусник при выписывании последовательности ошибся максимум в k символах, то есть C = 60 - k. Пусть мы знаем последовательность, написанную фокусником. Тогда с помощью какой информации на основе введённых данных мы сможем определить исходную последовательность?

Подсказка 2

Верно, нам нужно знать, в каких символах он ошибся. Тогда мы сможем однозначно определить последовательность. Но как нам это поможет в задаче? Давайте представим немного нашу задачу через множество и его покрытие. Всего возможных последовательностей, которые может написать зритель это 2^60. Давайте подумаем, как мы можем посчитать, сколько покроет одна последовательность, учитывая, что фокусник может ошибиться максимум в k знаках?

Подсказка 3

Верно, это считается с помощью числа сочетаний. Может быть такое, что он вовсе не ошибся, ошибся один раз и т.д. до максимум в k знаках. И того, для одной последовательности мы получаем сумму числа сочетаний. Но всего фокусник может получить 2^44 различных последовательностей, имея информацию от ассистента. Тогда учитывая мысль про покрытия множества размером 2^60, какую оценку мы получаем?

Подсказка 4

Да, сумма, умноженная на 2^44, должна быть больше 2^60. Но зачем? Чтобы даже, если мы ошибёмся максимум в k знаках, то мы всё равно победим, так как затронем все последовательности. Таким образом, несложной прикидкой получим оценку для k=4, откуда C=56. Теперь в следующей подсказке разберёмся с примером.

Подсказка 5

Суть нашего примера будет заключаться в том, как же действовать ассистенту, то есть какую последовательность передавать, и, что с ней делать фокуснику. Заметим, что фокусник в итоге ошибается только в 4 позициях. Давайте тогда для удобства, пока магически разобьём то, что будет передавать ассистент на блоки по 11 цифр. Тогда в каждом блоке фокусник будет что-то досчитывать, записывать и, в итоге, ошибаться максимум 1 раз в блоке. Попробуйте поугадывать, какая информация ему может понадобиться из этих 11 цифр? Стоит подумать в сторону информатики, последовательности 0 и 1 из 4 знаков и чётности, нечётности.

Подсказка 6

Давайте составим табличку из последовательностей с четырьмя символами, в которых есть хотя бы две единицы, и пронумеруем. Их будет как раз 11 штук. В последние 4 позиции блока запишем следующие "контрольные" суммы. Сначала запишем сумму по модулю два тех из первых 11 позиций, записанное 4-значное число которых имеет 1 в первом разряде. Потом аналогичное сделаем для 1 во втором разряде и т.д. до 4 разряда. Попробуем взять произвольную последовательность из 15 символов, а записать только 11. Посчитаем для них самостоятельно контрольные суммы. Теперь поизучайте эту конструкцию, например, что будет если контрольные суммы не совпадут? В скольких разрядах у них будет расхождение и где может быть ошибка – в четырех контрольных суммах или в первых 11 цифрах? А сколько в принципе может случится ошибок в такой строке, если не совпали контрольные суммы?

Подсказка 7

Ага, несложным перебором, где и сколько штук можно было допустить ошибок, понимаем, что она возможна только одна(либо в 11 цифрах, либо в контрольных суммах). Но для чего это всё таки было? Попробуйте прокрутить теперь эту конструкцию в обратном порядке. Пусть мы получили "кодовое слово" длины 15. Дальше считаем контрольные суммы по первым 11 цифрам и дописываем их. Таким образом, 15 цифр будут расходится максимум в 1 позиции. Как тогда отсюда получается окончательный пример?

Подсказка 8

Да, получается, что ассистент бьёт 60 цифр на группы по 15 и делает для них "кодовые слова" длинной 11, убирая контрольные суммы. Так и получается всего передача 44 знаков. Фокусник же далее восстанавливает контрольные суммы, как и само слово, ошибившись максимум 4 раза. Но всё таки осталось ещё понять, почему же вообще любое из слов длины 15 получается искажением какого-то из кодовых слов не более чем в одной позиции. И после этого будет победа!

Показать ответ и решение

Докажем оценку C ≤ 56.

______________________________________________________________________________________________________________________________________________________

Пусть существует стратегия, позволяющая ошибаться не более чем в k  битах (  т.е. C =60− k).  Тогда заметим, что Наблюдатель, знающий стратегию Фокусника, сообщенное Ассистентом слово, и набор бит, в которых ошибся Фокусник, может восстановить написанное Зрителем слово. В самом деле, Наблюдатель берет слово, которое должен был написать Фокусник, и меняет его в тех местах, где Фокусник ошибся. Значит, количество различных пар вида "слово сообщенное Ассистентом и набор мест, в которых фокусник ошибся"не меньше, чем различных слов, которые мог написать зритель. То есть

   (               )
244 C060+C160+ ...+ Ck60 ≥ 260

Перепишем в виде

(                )
 C060+ C160+ ...+ Ck60  ≥216

Заметим, что при k ≤3  неравенство неверно:

216 > 64000

 0    1    2   3         602  603
C60+ C60+C 60+ C60 < 1+ 60 + 2 + 6 = 1+ 60+ 1800+ 36000

_________________________________________________________________________________________________________________________________________________________________________________

Теперь попробуем показать, из каких соображений строится пример. Для начала напомним конструкцию, известную как математикам так и программистам: двоичный код длины 15, позволяющий передать 11 бит полезной информации и исправить ошибку не более чем в одном бите (также известен как 15-битный код Хэмминга). Построим его.

Для начала заметим, что есть ровно 11 слов длины 4 из нулей и единиц, содержащих хотя бы две единицы (всего слов  4
2 = 16,  минус одно из одних нулей, минус четыре с одной единицей). Припишем такие слова номерам от 1 до 11 как угодно, например как в таблице:

PIC

Теперь построим код таким образом: в первые 11 бит запишем те биты, которые хотим передать (первые 11 позиций будем называть информационными). В последние 4 бита запишем следующие контрольные суммы. В 12-й запишем сумму по модулю два тех из первых 11 бит, приписанное 4-значное число которых имеет 1 в первом разряде, то есть биты № 3,5,6,8,9,10,11. В 13-й — сумму тех из первых 11 бит, приписанное 4-значное число которых имеет 1 во втором разряде, в 14-й сумму бит, имеющих 1 в третьем разряде приписанного слова, в 15-й — в четвертом. Покажем, почему этот код позволяет исправить одну ошибку при передаче.

_________________________________________________________________________________________________________________________________________________________________________________

Пусть Получатель получил кодовое слово, возможно искаженное в одном бите. Получатель точно так же по первым 11 битам посчитает 4 контрольные суммы, и сравнит их с четырьмя полученными. Если совпали все четыре — то слово дошло без искажений. В самом деле, если бы исказился контрольный бит — в нем было бы расхождение, а если информационный — то расхождения были бы во всех контрольных, в которые он входит. Аналогично, если расхождение есть ровно в одном контрольном бите, то исказился именно он. В самом деле, если исказился другой контрольный — то все информационные дошли правильно, тогда в этом контрольном расхождения бы не было; а если исказился информационный, то все контрольные дошли правильно, и тогда расхождения были бы во всех контрольных, в которые входит искаженный информационный, а таких контрольных хотя бы два (именно за этим мы приписывали комбинации нулей и единиц, содержащие хотя бы две единицы). По аналогичным соображениям если получатель видит не менее двух расхождений с контрольными битами, то искажен точно информационный. Тогда достаточно из 11 информационных позиций выбрать ту, в приписанном 4-битном слове которой единицы стоят ровно на тех местах, на которых есть расхождения с контрольными суммами — это и есть искаженная позиция.

_________________________________________________________________________________________________________________________________________________________________________________

Теперь подумаем в других терминах, что же мы построили. У нас есть код из 211  кодовых слов. Каждое из этих слов можно исказить 16 способами (ничего не менять, или изменить один из 15 бит). Все     11
16× 2  полученных в результате слов будут разными. В самом деле, если бы какое-то слово w  получалось двумя разными способами: искажением кодового слова u1  и искажением кодового слова u2  (в обоих случаях — не более чем в одном бите), то код бы не исправлял одну ошибку — Получатель может получить слово w,  но в этом случае не может понять, посылали ему u1  или u2.  Итак, все      11
16× 2  слов разные, но это означает что вообще любое из слов длины 15 получается искажением какого-то из кодовых слов не более чем в одном бите.

На этом и построим стратегию Фокусника и Ассистента. Ассистент видит написанное зрителем 60-битное слово, режет его на четыре 15-битных слова w1,w2,w3,w4.  Как доказано выше, для них найдутся кодовые слова u1,u2,u3,u4,  такие что wi  отличается от ui  не более чем в одном символе. Тогда Ассистент выбрасывает из каждого кодового слова контрольные символы, получает четыре слова длины 11, то есть одно слово длины 44. Его он и передает Фокуснику. Фокусник восстанавливает контрольные суммы, получает слово u1u2u3u4,  отличающееся от исходного максимум в четырех битах — победа.

Ответ: 56

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!