Уильям Паундстоун - Как сдвинуть гору Фудзи
Очевидных решений для нее нет. Когда ваш робот-призер только что стал грудой металлолома, первая реакция — поклясться построить нового и лучшего робота, который будет учитывать больше параметров внешней среды и будет рассматривать больше возможных последствий своих действий или бездействия. Это замечательная цель. Но в мире силиконовых чипов и компьютерных программ потребуется уйма усилий, чтобы ее реализовать. Расширение «сферы внимания» робота потребует экспоненциального увеличения объема вычислений, который должен будет производить «мозг» робота. Чем больше последствий будет учитывать робот, тем медленнее он будет реагировать — а нет ничего более уязвимого, чем медлительный робот.
Сегодня люди гораздо лучше формулируют проблемы, чем системы ИИ. Мы хорошо понимаем на инстинктивном уровне, что важно и что неважно в проблемных ситуациях, с которыми мы сталкиваемся. Хотя, конечно, этот инстинкт не безошибочен. Многие логические головоломки это как раз и используют. Вы начинаете решение проблемы, делая ряд естественных предположений о том, что имеет отношение к данной проблеме, а что нет. Во многих случаях головоломка сформулирована так, что некоторые из «естественных» предположений оказываются неверными.
Для того чтобы успешно решать головоломки (и более серьезные проблемы, моделями которых могут служить головоломки), вам нужно рассуждать одновременно на двух или более уровнях. Одна часть вашего сознания занята решением проблемы, в то время как другая отслеживает прогресс этого процесса. Вам нужно постоянно спрашивать себя: «Этот подход работает? Сколько времени я потратил на этот подход и какова вероятность того, что он скоро поможет найти ответ? Может быть, стоит попробовать что-то другое?»
Такой высокий уровень самосознания характерен для людей, успешно решающих задачи. Вы также обнаружите эту черту у людей, которые успешно проходят интервью любого типа при приеме на работу, поскольку в этой ситуации важно не только отвечать на вопросы, но и понимать, что означает поза и мимика интервьюера, и, кстати, обратить внимание на то, в порядке ли ваша собственная прическа. Если какой-то подход не работает, вам нужно вернуться назад к общей постановке проблемы и проверить, верны ли предположения, которые вы ранее сделали.
Может быть несколько стадий подобного возврата к исходным предположениям. В каждой ситуации нужно учитывать несколько предположений. Редко бывает так (если такое бывает вообще), что все они оказываются неверны. Прием, который используют некоторые люди, когда заходят в тупик при решении задачи, — подготовить список своих предположений и попытаться представить, что изменилось бы, если бы каждое из этих предположений оказалось неверным.
Возьмем, например, задачу об испорченных таблетках. Есть пять баночек с таблетками, в одной из которых таблетки испорчены. Вам нужно ее определить за одно взвешивание. Вы озадачены и не знаете, в какую сторону двигаться. Какие вы используете предположения?
Большинство людей предполагают следующее:
1) вам не разрешается открывать баночку;
2) таблетки, которые вы взвешиваете, нужно брать из одной и той же баночки;
3) взвешивание может сообщить вам только одну из двух вещей: у таблеток, которые вы тестируете, нормальный вес, или они легче, чем таблетки с нормальным весом.
Все эти три предположения уводят вас от правильного решения. Вам нужно их отвергнуть, чтобы найти его. В общем, как вам нужно решать, какое предположение(я) нужно отбросить? Это сложный вопрос, потому что перечисленные выше предположения не единственные, которые делают люди, когда обдумывают эту головоломку. Вот еще некоторые:
1) вам не разрешается разламывать таблетки и взвешивать не целую таблетку, а ее часть;
2) вам не разрешается пытаться прикидывать, взяв баночки в руки и сравнивая их вес, какая из них кажется подозрительно легкой;
3) вам не разрешается проводить химический анализ таблеток, чтобы определить, какие из них испорчены (иначе зачем вам понадобилось бы их взвешивать?);
4) вам нельзя спрашивать других людей о том, в какой из баночек таблетки испорчены (или давать кому-нибудь взятку, чтобы он вам об этом сообщил).
Все четыре предположения вполне разумны для этой конкретной головоломки. Они помогают вам не сбиться с пути, раздумывая о вариантах, которые не помогут вам решить эту задачу.
К несчастью, приступая к решению задачи, вы об этом еще не знаете. Есть головоломки, загадки, каверзные вопросы и реальные проблемы, для решения которых вам нужно будет как раз использовать предположения из первого списка, отвергнутые нами. Все это более или менее разумные предположения, но вы должны быть готовы к тому, чтобы отвергнуть какие-то из них, если того потребуют обстоятельства.
Ключ к решению любой сложной задачи — быть внимательным к различным признакам, которые могут подсказать, какого типа эта задача. Есть много типов таких признаков. Это может быть все, что угодно, от особенностей формулировки условий и тона, которым задает вопрос интервьюер, до ваших собственных рассуждений относительно различных предположений.
Если вы очутились на тонущем корабле, то в первую очередь за борт летит груз, который весит много, а стоит недорого. Аналогично обычный способ работы с потенциально неверными предположениями — начинать с отказа от не очень существенных, а потом переходить к более важным. Самое первое из упомянутых выше предположений (о том, что нельзя открывать баночку) обычно останавливает немногих. В условии задачи нет ничего, что в явном виде разрешало бы вам открывать баночку, но, с другой стороны, там нет и запрета делать это. Задается вопрос о том, какая из баночек дефектна, а не какие таблетки. Робкие люди, так же как и те, кто во всем стремится к совершенству и ищет самый элегантный ответ, могут начать с поиска решения, в ходе которого баночки взвешиваются целиком и не открываются. Это неплохой первый ход для поиска решения.
Но подумайте об этом немного и вы поймете, что это неверное предположение. Предположим, что вы взвесили баночку номер три и весы показали 1027 граммов. Какая часть этого веса приходится на саму баночку? Вы этого не знаете. Вам ведь это не сообщалось. Сколько таблеток в баночке? И этого вы не знаете. Вполне вероятно, что их можно пересчитать, но это будет похоже на попытку мальчишки угадать номер выигрышного лотерейного билета по тем числам, которые были на последнем купленном им трамвайном билете: вы ведь даже не знаете, одинаково ли количество таблеток в разных баночках.
Следовательно, это предположение следует сразу поставить под сомнение. Оно прямо не вытекает из формулировки условия задачи. Если вы его примете, то обнаружите, что вам не хватает информации для решения задачи. Очевидно, вы должны взвешивать таблетки, а не баночки.
Примерно то же самое относится и ко второму предположению о том, что нужно взвешивать таблетки только из одной баночки. Иногда возникает опасная тенденция упрощать проблемы. Проще обдумывать ситуацию, когда все таблетки из одной баночки. Но если вы примете подобное предположение (которое опять-таки не вытекает из условия), то не сможете решить головоломку.
Вы можете быстро прийти к выводу, что использовали неверное предположение. Когда вы взвешиваете таблетки только из одной баночки, есть только два возможных исхода — это могут быть или нормальные, или испорченные таблетки. Допустим, вы решили взвесить десять таблеток из баночки номер три, и весы показали 90 граммов — вам повезло. Очевидно, что таблетки в этой баночке испорчены, и вам достался счастливый билет. Проблема в том, что вам могла попасться и любая из оставшихся четырех баночек. Тогда, взвесив десять таблеток, вы узнаете, что у них нормальный вес — 100 граммов. И у вас не будет ни малейшего представления о том, в какой из остальных четырех баночек испорченные таблетки. И так произойдет в любом случае, если вы будете взвешивать таблетки только из одной баночки. Это сильный довод в пользу того, что для правильного ответа на задачу нужно взвешивать таблетки из нескольких баночек.
Третье предположение — это основная трудность для многих кандидатов на работу в Microsoft (хотя, как ни странно, люди, не занимающиеся программированием, редко попадаются в эту ловушку). Каждый, кто привык размышлять в терминах программирования, приходит к заключению, что результатом единственного взвешивания — неважно, одной таблетки или нескольких — может быть только ответ «да» или «нет». Вес может быть или «нормальным» или «ненормальным».
Это всего один бит информации, а каждый программист знает, что невозможно идентифицировать один из пяти объектов при помощи единственного бита информации. Для этого нужно три бита.