KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Уильям Паундстоун - Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов

Уильям Паундстоун - Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Уильям Паундстоун, "Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов" бесплатно, без регистрации.
Перейти на страницу:

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

Поскольку она легче, с нее и начнем.

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

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

Исчерпывает ли это все возможности? Нет. Умная идея — положить два шнура крест-накрест, в форме буквы X. Положите их так, чтобы они пересекались в середине длины каждого из шнуров, прикасаясь друг к другу. Тогда, если вы подожжете один из концов буквы X, огонь доберется до середины, а дальше пойдет сразу в трех направлениях. Все, чего мы добьемся таким способом — второй шнур начнет гореть с середины своей длины (но мы уже знаем, что это нам ничего не дает), и мы не будем знать, сколько времени пройдет (то есть за какое время огонь доберется до пересечения). Что в лоб, что по лбу!

Исчерпаны ли все возможности? Нет: вы можете поджечь бикфордов шнур сразу с обоих концов.

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

Отлично! Это решение для более легкой версии задачи, которое также позволит нам решить и 45-минутную версию. Итак, поджигая один из шнуров с обоих концов, мы можем отмерить тридцать минут. Если бы нам удалось при помощи второго отрезка шнура отмерить еще пятнадцать минут, мы бы решили головоломку.

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

У нас нет отрезка шнура, который сгорает за тридцать минут, но мы можем его получить, если подожжем второй кусок шнура только с одного конца, пока мы отмеряем тридцать минут при помощи первого отрезка.

Вот вся процедура: сначала мы одновременно поджигаем отрезок А с обоих концов и отрезок В только с одного конца. Эти отрезки не должны соприкасаться. Пройдет тридцать минут, пока не сгорит шнур А (два огонька, движущиеся навстречу друг другу, встретятся). Когда это произойдет, то есть пройдет ровно тридцать минут, у отрезка В остается длины на тридцать минут горения. Мы должны немедленно поджечь второй конец все еще горящего отрезка В. Два огонька встретятся через пятнадцать минут, а всего пройдет сорок пять минут.

Вы находитесь в лодке точно в центре абсолютно круглого озера.

Именно так, и вы понимаете, в чем проблема: очевидный план — со всей скоростью грести к берегу по прямой к той точке, которая дальше всего от той точки, где гоблин находится сейчас. Это даст вам существенное дистанционное преимущество: вам ведь нужно проплыть только расстояние, равное радиусу (r) круглого озера. А гоблину, который не может плавать, придется бежать по дуге вокруг озера дистанцию, равную половине длине окружности озера. Это расстояние Пш. Гоблину, таким образом, придется преодолеть дистанцию в п раз большую, чем вам.

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

Как и во многих других случаях, при решении этой головоломки нужно сначала выяснить ряд важных неопределенностей. Что собой представляет гоблин — то ли он просто бездумный «магнит», скользящий вокруг озера к самой близкой к вам точке, то ли он разумное или даже умное существо? Поскольку вам сказали, что гоблин «безупречно логичен», очевидно, подразумевается последнее. Похоже, что вам придется перехитрить гоблина. Но это непросто. На озере негде спрятаться, а безупречно логичный гоблин может продумать ваши возможные стратегии, и это значит, что врасплох вам его не застать.

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

Это подсказывает решение. Спросите себя: «Каков радиус самого большого круга с центром в середине озера, по которому я могу двигаться так, чтобы гоблин успевал за мной?»

Это должен быть такой круг, который позволил бы вам преодолевать расстояние, составляющее четверть того, что преодолевает гоблин. Это круг с радиусом r/4.

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


Это значит, что вы сможете оказаться от гоблина на расстоянии 11/4 радиуса. Один из способов добиться этого — начать движение по спирали от центра озера, приближаясь к окружности радиусом r/4, но все-таки оставаясь внутри нее. Пока вы будете внутри «этого зачарованного круга», гоблин не сможет успевать за вами. Вы можете плыть таким образом, пока гоблин не отстанет от вас на полные 180 градусов. Тогда ваша лодка будет на противоположной от гоблина стороне озера (по отношению к центру озера) и на расстоянии по прямой от гоблина в 5/8 диаметра озера (вы на одной прямой, проходящей через центр озера с гоблином, и гоблин на расстоянии радиуса от центра, а вы на расстоянии от центра почти в 1/4 радиуса, или в 1/8 диаметра). Такие геометрические соотношения дадут вам возможность спастись. Вы немедленно перестаете кружиться и по прямой устремляетесь к самой дальней от гоблина точке на берегу озера. Вам нужно покрыть дистанцию чуть больше, чем 3/4 радиуса, а гоблину — расстояние Пиг. То есть ему придется преодолеть расстояние в 4Пи/3 раз большее, чем вам, и, поскольку гоблин двигается в четыре раза быстрее, чем вы, ему для этого потребуется время, которое можно вычислить, умножив необходимое вам время на 7Пи/3. Значение числа Пи больше, чем три (если точно, в 1,047. раза), и это значит, что если вы все выполните по плану, то успеете высадиться на берег и убежать от гоблина до того, как он сумеет вас поймать.

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

Да, но даже если гоблин абсолютно точно знает, что вы планируете сделать, это ему не поможет. Вы можете взять мегафон и прокричать: «Эй, гоблин! Вот что я обязательно сделаю. Я буду крутиться вокруг озера по этому маленькому кругу с радиусом чуть меньше, чем одна четвертая часть радиуса озера. Ты сам можешь все подсчитать! Как только я окажусь в точке окружности на расстоянии в 180 градусов от тебя, я поплыву к берегу, и мы оба знаем, что я успею тебя обогнать. Теперь мы можем решить нашу проблему легким способом, трудным способом или глупым способом. Легкий способ — ты признаешь, что проиграл и спокойно даешь мне возможность доплыть до противоположного берега и убежать от тебя. Трудный способ — ты будешь гоняться за мной. Это потребует от нас обоих больших усилий, но результат все равно окажется точно таким же. Наконец, вот глупый способ. Если ты попытаешься применить „контрстратегию", то есть бежать не на полной скорости, бежать в противоположную сторону, бегать туда-сюда или даже отбежать подальше от озера, все эти трюки только помогут мне быстрее оказаться от тебя на расстоянии в половину окружности (180 градусов), и я все равно убегу от тебя».

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*