Какое минимальное количество вопросов, на которые можно получить ответ «да» или «нет», нужно задать, чтобы отгадать одно из 128 чисел?

Поляков Евгений Александрович

Учитель информатики высшей категории

Проверено учителем

Для того чтобы найти одно число из множества за минимальное количество вопросов, используется метод бинарного (двоичного) поиска. Этот метод позволяет исключать ровно половину вариантов с каждым новым вопросом. Математическое обоснование Количество вопросов определяется с помощью логарифма по основанию 2 от общего количества вариантов. Если общее количество чисел обозначить как Ncap N, а минимальное количество вопросов как kk, то выполняется следующее соотношение: 2kN2 to the k-th power is greater than or equal to cap NВ данном случае N=128cap N equals 128. Подставим это значение в формулу: 2k1282 to the k-th power is greater than or equal to 128 27=1282 to the seventh power equals 128Следовательно, k=7k equals 7. Принцип отгадывания Процесс поиска строится на последовательном делении диапазона пополам. Рассмотрим пример, если загадано число 10:

  1. Вопрос 1: Число больше 64? (Нет. Остается диапазон 1–64).
  2. Вопрос 2: Число больше 32? (Нет. Остается диапазон 1–32).
  3. Вопрос 3: Число больше 16? (Нет. Остается диапазон 1–16).
  4. Вопрос 4: Число больше 8? (Да. Остается диапазон 9–16).
  5. Вопрос 5: Число больше 12? (Нет. Остается диапазон 9–12).
  6. Вопрос 6: Число больше 10? (Нет. Остается диапазон 9–10).
  7. Вопрос 7: Число равно 10? (Да).

Почему это работает Каждый ответ «да» или «нет» несет в себе 1 бит информации. Чтобы однозначно определить одно из 128 чисел, необходимо получить объем информации, равный log2(128)log base 2 of 128, что составляет ровно 7 бит. Если бы чисел было, например, 129, то 7 вопросов бы уже не хватило, и потребовался бы 8-й вопрос. Хотите, чтобы я рассчитал минимальное количество вопросов для другого диапазона чисел или объяснил, как изменится логика, если цена ответа «да» и «нет» будет разной?

Форма ответа

Ваш аватар