Книга: Вычислительное мышление: Метод решения сложных задач
Новый алгоритм
Новый алгоритм
Итак, если правильно задавать вопросы, то в худшем случае понадобится только 20 вопросов, чтобы угадать задуманного человека из миллиона возможных вариантов. Вспомним теперь, что хватит 13 вопросов (в худшем случае — 26), чтобы определить одну из 26 букв алфавита. «Да/нет» не отличается от «моргнуть / не моргать». А спрашивать «Это A? Это В?» — примерно то же самое, что спрашивать «Вы Микки-Маус?» или «Вы Нельсон Мандела?». Вы точно так же пытаетесь выяснить, о какой из многих вещей я думаю. Это опять-таки та же самая задача, что и предиктивная система набора текста в телефонных сообщениях!
Но если это та же самая задача, то и соответствующая ей стратегия должна обеспечить нам более удачное решение, чем уже найденное. Здесь мы снова используем и Мы преображаем задачу, чтобы повторно использовать решения. Каков эквивалент решения, которое оставит только половину вариантов, применительно к алфавиту? Сначала, наверное, имеет смысл спросить: «Это гласная?» — но как будут выглядеть остальные четыре вопроса? Каждый раз оставлять только половину вариантов из алфавита? Напрашивается такой первый вопрос: «Это между А и М?» Если ответ утвердительный, то потом мы спрашиваем: «Это между А и F?» Если ответ отрицательный, мы спрашиваем: «Это между N и S?» — и так далее. Таким образом мы гарантированно доберемся до любой буквы алфавита, которую задумал человек, всего за пять вопросов, как это показывает на рис. 2. Начните сверху диаграммы и двигайтесь вниз в соответствии с ответами «да/нет».
В этот момент нужно подключить еще один компонент Необходимо прояснить все детали, потому что здесь можно запутаться. Спрашивая «Это между А и М?», надо уточнить, входит ли «М» в этот промежуток (входит).
Попробуем еще больше усовершенствовать эту технику, используя частотный анализ. Поскольку букв только 26, реально добраться до «Е» и других распространенных букв быстрее чем за пять вопросов. Попробуйте сделать дерево решений, которое это обеспечит. Кроме того, можно использовать принцип предиктивного набора текста, чтобы предугадывать набранные не до конца слова. Все подобные решения из более ранних алгоритмов применимы и здесь. Мы повторно используем готовые решения.
- Сидром «запертого человека»
- Просто как A, B, C
- Как это сделал Боби?
- Проверяем детали
- Улучшаем метод
- Насколько это быстро?
- 20 вопросов?
- Насколько это эффективно?
- Новый алгоритм
- Коды для букв
- Выбираем лучшее решение
- Делаем жизнь Боби лучше
- Главное — алгоритмическое мышление
- Еще важнее — понять человека
- Ему подошло
- Естественный отбор алгоритмов?
- Урбанский алгоритм
- Алгоритм планирования
- Лифтовой алгоритм Линуса
- Новый тип данных: BOOLEAN
- 10 Алгоритм работы с возражениями
- 5.4. РЕКОМЕНДАЦИИ НАЧИНАЮЩИМ ПО СОСТАВЛЕНИЮ ОПИСАНИЙ АЛГОРИТМОВ И ЭВРОРИТМОВ
- Новый компьютер дома, что с ним делать?
- Алгоритм составления эффективных рекламных сообщений
- У меня новый SATA-винчестер на 160 Гбайт, однако Windows XP определяет всего 120 Гбайт. Куда пропали остальные 40 Гбайт?
- Новый винчестер издает странный звук во время работы. Он не похож на тот, с которым работал старый диск. Это нормально и...
- Алгоритмическая вероятность