Добавить в цитаты Настройки чтения

Страница 27 из 62

Возьмем, например, задачу об испорченных таблетках. Есть пять баночек с таблетками, в одной из которых таблетки испорчены. Вам нужно ее определить за одно взвешивание. Вы озадачены и не знаете, в какую сторону двигаться. Какие вы используете предположения?

Большинство людей предполагают следующее:

1) вам не разрешается открывать баночку;

2) таблетки, которые вы взвешиваете, нужно брать из одной и той же баночки;

3) вешивание может сообщить вам только одну из двух вещей: у таблеток, которые вы тестируете, нормальный вес, или они легче, чем таблетки с нормальным весом.

Все эти три предположения уводят вас от правильного решения. Вам нужно их отвергнуть, чтобы найти его. В общем, как вам нужно решать, какое предположение(я) нужно отбросить? Это сложный вопрос, потому что перечисленные выше предположения не единственные, которые делают люди, когда обдумывают эту головоломку. Вот еще некоторые:

1) вам не разрешается разламывать таблетки и взвешивать не целую таблетку, а ее часть;

2) вам не разрешается пытаться прикидывать, взяв баночки в руки и сравнивая их вес, какая из них кажется подозрительно легкой;

3) вам не разрешается проводить химический анализ таблеток, чтобы определить, какие из них испорчены (иначе зачем вам понадобилось бы их взвешивать?);

4) вам нельзя спрашивать других людей о том, в какой из баночек таблетки испорчены (или давать кому-нибудь взятку, чтобы он вам об этом сообщил).

Все четыре предположения вполне разумны для этой конкретной головоломки. Они помогают вам не сбиться с пути, раздумывая о вариантах, которые не помогут вам решить эту задачу.

К несчастью, приступая к решению задачи, вы об этом еще не знаете. Есть головоломки, загадки, каверзные вопросы и реальные проблемы, для решения которых вам нужно будет как раз использовать предположения из первого списка, отвергнутые нами. Все это более или менее разумные предположения, но вы должны быть готовы к тому, чтобы отвергнуть какие-то из них, если того потребуют обстоятельства.

Ключ к решению любой сложной задачи — быть внимательным к различным признакам, которые могут подсказать, какого типа эта задача. Есть много типов таких признаков. Это может быть все, что угодно, от особенностей формулировки условий и тона, которым задает вопрос интервьюер, до ваших собственных рассуждений относительно различных предположений.

Если вы очутились на тонущем корабле, то в первую очередь за борт летит груз, который весит много, а стоит недорого. Аналогично обычный способ работы с потенциально неверными предположениями — начинать с отказа от не очень существенных, а потом переходить к более важным. Самое первое из упомянутых выше предположений (о том, что нельзя открывать баночку) обычно останавливает немногих. В условии задачи нет ничего, что в явном виде разрешало бы вам открывать баночку, но, с другой стороны, там нет и запрета делать это. Задается вопрос о том, какая из баночек дефектна, а не какие таблетки. Робкие люди, так же как и те, кто во всем стремится к совершенству и ищет самый элегантный ответ, могут начать с поиска решения, в ходе которого баночки взвешиваются целиком и не открываются. Это неплохой первый ход для поиска решения.





Но подумайте об этом немного и вы поймете, что это неверное предположение. Предположим, что вы взвесили баночку номер три и весы показали 1027 граммов. Какая часть этого веса приходится на саму баночку? Вы этого не знаете. Вам ведь это не сообщалось. Сколько таблеток в баночке? И этого вы не знаете. Вполне вероятно, что их можно пересчитать, но это будет похоже на попытку мальчишки угадать номер выигрышного лотерейного билета по тем числам, которые были на последнем купленном им трамвайном билете: вы ведь даже не знаете, одинаково ли количество таблеток в разных баночках.

Следовательно, это предположение следует сразу поставить под сомнение. Оно прямо не вытекает из формулировки условия задачи. Если вы его примете, то обнаружите, что вам не хватает информации для решения задачи. Очевидно, вы должны взвешивать таблетки, а не баночки.

Примерно то же самое относится и ко второму предположению о том, что нужно взвешивать таблетки только из одной баночки. Иногда возникает опасная тенденция упрощать проблемы. Проще обдумывать ситуацию, когда все таблетки из одной баночки. Но если вы примете подобное предположение (которое опять-таки не вытекает из условия), то не сможете решить головоломку.

Вы можете быстро прийти к выводу, что использовали неверное предположение. Когда вы взвешиваете таблетки только из одной баночки, есть только два возможных исхода — это могут быть или нормальные, или испорченные таблетки. Допустим, вы решили взвесить десять таблеток из баночки номер три, и весы показали 90 граммов — вам повезло. Очевидно, что таблетки в этой баночке испорчены, и вам достался счастливый билет. Проблема в том, что вам могла попасться и любая из оставшихся четырех баночек. Тогда, взвесив десять таблеток, вы узнаете, что у них нормальный вес — 100 граммов. И у вас не будет ни малейшего представления о том, в какой из остальных четырех баночек испорченные таблетки. И так произойдет в любом случае, если вы будете взвешивать таблетки только из одной баночки. Это сильный довод в пользу того, что для правильного ответа на задачу нужно взвешивать таблетки из нескольких баночек.

Третье предположение — это основная трудность для многих кандидатов на работу в Microsoft (хотя, как ни странно, люди, не занимающиеся программированием, редко попадаются в эту ловушку). Каждый, кто привык размышлять в терминах программирования, приходит к заключению, что результатом единственного взвешивания — неважно, одной таблетки или нескольких — может быть только ответ «да» или «нет». Вес может быть или «нормальным» или «ненормальным».

Это всего один бит информации, а каждый программист знает, что невозможно идентифицировать один из пяти объектов при помощи единственного бита информации. Для этого нужно три бита.

Этот анализ, конечно, бесполезен. Он основан на втором предположении. Вы в реальности получаете ответ «да» или «нет» только если все таблетки идентичны, то есть взяты из одной и той же баночки.

Предварительное обдумывание головоломки часто приводит к выводу, что ее невозможно решить. Неудивительно: хорошая головоломка должна заставлять вас биться головой о стену. Но если посмотреть с другой стороны, невозможность решения может вам помочь. Если данное предположение приводит к заключению; что головоломку невозможно решить, то что-то неверно или в самом предположении, или в логике ваших рассуждений.

Один из лучших способов найти решение — принять предположение номер три, обдумать его и понять, каким образом оно ведет к невозможности решения задачи. Это приведет вас к заключению, что третье предположение необходимо отвергнуть. Каким-то образом вы должны получить в результате единственного взвешивания более информативный ответ, чем просто «да» или «нет». Теперь задачу следует переформулировать так: «Каким образом можно провести взвешивание так, чтобы получить достаточно информации о каждой из пяти баночек и найти испорченную?» В зависимости от вашей подготовки и опыта подобная задача может оказаться для вас и простой, и сложной. Но для каждого из нас основной трудностью будет суметь так переформулировать проблему, как это сделано выше.

Логические головоломки — это не единственный способ протестировать навыки переформулирования проблем. Сколько бензозаправочных станций в Лос-Анджелесе? Столкнувшись с подобным вопросом во время интервью, вы должны в первую очередь решить, какой на него ожидается ответ. Некоторые из возможных реакций:

— Боже мой! Я должен был это знать, но не знаю…

— Это шутка. Этого не может знать ни один кандидат. Мне нужно просто рассмеяться в ответ.