Блог пользователя ilyaraz

Автор ilyaraz, 12 лет назад, По-русски

Рассмотрим игру для двух игроков. Первый загадывает два числа от 1 до n. Второй пытается получить об этой паре максимальную информацию. Для этого он называется подмножества {1, 2, ..., n}, а первый сообщает про какое-то из своих чисел, лежит ли оно в этом множестве. Что скрывается под словосочетанием "максимальная информация", и за какое асимптотически минимальное количество вопросов ее можно узнать?

  • Проголосовать: нравится
  • +32
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Я подозреваю, что максимальная информация — узнать одно число. Поскольку если первый игрок захочет, то он всегда будет отвечать по первому числу, и про второе ничего не будет известно никогда.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Не всегда даже можно узнать одно число. См. ответ Егора ниже.

    • »
      »
      »
      12 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

      Понял косяк

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

        Да, на второй итерации уже не сработает.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Предлагаю такую стратегию за первого: пусть второй спрашивает множество A. Если мощность пересечения A и {1, 2, 3} по крайней мере два, то говорим "да", иначе говорим "нет".

»
12 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Ответ на первый вопрос — узнать 1 число или тройку чисел, в которые наши 2 входят

Вроде бы умею за квадрат, но вряд ли это оптимально

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    А как за квадрат?

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится

      Пусть загаданы числа А и В. Перебираем все пары чисел. Второй игрок на паре (А,В) скажет что число лежит. Так же второй игрок выберет некоторое число С отличное от А и В. И на парах (А,С) и (В,С) тоже кажат что принадлежит. на всех остальных ответит нет. Мы находит троику (А,В,С). Если вротой игрок будет отвечать как то подругому то выдаст числа

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      Проверить все пары. Посмотрим все, на что он ответил да. Если там есть две непересекающиеся пары (a, b), (c, d). В каждой из этих пар по загаданному числу. Если на обе (a, c) и (b, d) он ответил да, то ответ либо (a, d), либо (b, c), а точнее — тот из них, на который он ответил да. На обе нет он не мог ответить. Пусть он ответил да на (a, c). По аналогичным соображением он ответит да на (a, d) или (b, c). Все еще без ограничения общности пусть (a, d). Тогда a — точно выбрано, победа.

      Пусть любые 2 пары имеют общую вершину. Заметим, что если число входит не менее, чем в 3 пары, на которые ответ да, то оно выбрано. Если ответов да больше 3, то такое число есть. Если 3 — то либо есть такое число, либо у нас пары (a, b), (a, c) и (b, c) и тогда оба выбранных в этих парах. Если ответ да один, то это пара выбранных чисел. Если 2, то опять же пересечение точно выбрано

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Я придумал что-то похожее(а может и тоже самое). Найдем пару (a,b), на которой он скажет "Да". Достоверно известно, что в этой паре либо a либо b будет одним из загаданных чисел. Далее проверим все пары чисел вида (a,x), где x любое число, кроме b. 1)Если он скажет больше одного раза "Да", то a это ответ, так как если это не ответ,то ответ b и среди всех чисел кроме b может быть только одно, которое он загадал. 2)Если он ни разу не скажет да, то это значит, что a не загаданное число, так как если бы это было загаданное, то нашлась бы пара, на которой он обязательно сказал бы "Да". 3)Если же он скажет один раз "Да"- то мы нашли тройку чисел, в которых есть оба загаданных числа. В 1) отбрасываем b и начинаем искать заново в 2) отбрасываем a и начинаем искать заново

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится -10 Проголосовать: не нравится

один из тегов намекает, что можно делать бинпоиск по длине сабсета. при фиксированой длине d спрашивать о {1,...,d}, {2,...,d+1}, ..., {n-d+1,..., n}. но наверно лажа, из-за неопределённости числа при ответе

»
12 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Такая задача была на киевской городской олимпиаде. http://kievoi.narod.ru/3/2012.html (6 задача). Разбор лежит где-то там же сайте.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    А можете разбор найти? А то я украинский, увы, не знаю.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      http://kievoi.narod.ru/index1.html Рекомендації щодо розв'язання завдань відбірково-тренувальних зборів... файл под номером 29. Но разбор там тоже по украински.

»
12 лет назад, # |
  Проголосовать: нравится -21 Проголосовать: не нравится

Можно и за линию. Называю все числа от 1 до n, а первый игрок говорит лежит число или нет.

  • »
    »
    12 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +9 Проголосовать: не нравится

    Он может отвечать всегда "**нет**" (про другое число).
    Искренне ваш кэп.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Неправда, он может всегда "нет" говорить, если загаданные числа различны.

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Я правильно понимаю, что задачу можно переформулировать в виде: "Дана булева функция n переменных, монотонная по двум переменным, за сколько измерений можно найти эти переменные?"

UPD: нет, не совсем, нужно требование, что на наборе (...0...0..) функция принимает именно 0, а это не следует из монотонности.

»
12 лет назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

Опишу разбор задачи с Киевской городской олимпиады школьников.

Пусть у нас есть 4 разных числа: a, b, c, d. Будем говорить, что множество Q натуральніх чисел разделяет пары {_a_, b} и {_c_, d}, если оба элемента одной пары принадлежат Q, а оба элемента второй пары -- не принадлежат. Будем говорить, что набор множеств Q1, Q2, ..., Qn разделяет пары {_a_, b} и {_c_, d}, если эти пары разделяет хотя бы одно из множеств Q1, Q2, ..., Qn.

Выберем случайное множество чисел Q, элементами которого есть натуральные числа от 1 до N. Несложно показать, что вероятность того что это множество не разделяет данные 2 пары равна . Выберем независимо случайным образом t подмножеств множества {_1_, 2, ..., N}. Ограничим сверху вероятность того, что эта система не разделяет какие-то 2 неупорядоченных пары. Имеем:

P{система не разделяет какие-то 2 пары} = P{система не разделяет 2 конкретные пары} < .

Павую часть этого неравенства можно сделать меньшей, чем любое наперед заданное положительное число ε, выбрав t следующим образом:

.

Покажем, что получив ответы на вопросы про множества {Qi}, которые разделяют любую пару двухэлементных множеств чисел, мы можем либо указать одно число, которое было загадано, либо три числа среди которых есть 2 загаданных.

Пусть S -- множество неупорядоченных пар потенциальных загаданных чисел, которые могли бы привести к тем же ответам, что и Q1, Q2, ..., Qt. Любые 2 множества из S имеют непустое пересечение, поскольку иначе какое-то из множеств Qi разделило бы 2 пары и последовательности ответов отличались бы. Имеем:

  1. Если существует элемент a, который принадлежит всем множествам из S, то ответ -- {_a_}.
  2. Рассмотрим любые 2 пары из S: {_a_, b} и {_a_, c}. В соответствии с предположением, не все пары в S содержат элемент a. Значит, найдется еще пара, которая не содержит a. Как и все остальные пары из S, она имеет общие элементы с выбранными двумя парами. Но такой парой может быть только {_b_, c}. Если бы в S существовала еще одна пара, отличная от выбранных трех, то она бы не имела общих элементов хотя бы с одной из них, а такое невозможно. Следовательно, ответом будет множество {_a_, b, c}.

Математическое ожидание количества вопросов равно для любого наперед заданного ε.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Для специалистов дополнительный вопрос: как найти Qi за полиномиальное время детерминированным алгоритмом?

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      А стандартный метод "возьмем ГПСЧ вида a^i mod p с периодом ~ 3/2 требуемого числа запросов для достаточно маленького eps" и докажем какую-нибудь экспоненциальную сумму не покатит? :)