Алгоритмы для жизни. Простые способы принимать верные решения - Том Гриффитс
Шрифт:
Интервал:
Закладка:
Более того, даже такие кажущиеся безобидными слова «да, я гибкий» или «что вы собираетесь делать сегодня вечером?» скрывают темную вычислительную изнанку и должны заставить вас дважды подумать. Это хоть и выглядит по-доброму, но содержит два глубоко тревожных сигнала. Во-первых, они посылают опознавательный знак: «здесь проблема, но вы справитесь с этим». Во-вторых, не указывая свои предпочтения, они приглашают других смоделировать или представить их. И, как мы уже видели, моделирование мыслей других – одна из крупнейших вычислительных задач, с которой разум (или машина) могут когда-либо столкнуться.
В таких ситуациях простота выбора и привычный этикет несколько расходятся. Вежливое умалчивание ваших предпочтений ставит перед остальной частью группы вычислительную задачу по их выявлению. Напротив, вежливое обозначение ваших предпочтений («лично я склонен к Х, а вы что думаете?») помогает уменьшить мыслительную нагрузку при формировании группой коллегиального решения.
В качестве альтернативы вы можете попытаться хотя бы уменьшить, а не увеличивать количество вариантов, которые вы предлагаете обсудить товарищам, предложив им ограничить выбор, скажем, двумя-тремя ресторанами, а не десятью. Если каждый человек в группе исключит из обсуждения свой наименее предпочтительный вариант, это сильно упростит вычислительную задачу остальным. Если вы, приглашая кого-то на обед или планируя встречу, предложите один-два конкретных варианта, которые могут быть приняты или отклонены, это будет хорошей отправной точкой.
И не важно, что ни один из этих вариантов может не подойти; все вместе они могут существенно снизить вычислительные затраты при общении.
Простота выбора – это не просто принцип поведения; это также и дизайнерский подход.
В 2003 году ученый Джеффри Шаллит из Университета Уотерлу исследовал вопрос о том, монету какого достоинства следовало бы ввести в обращение в Соединенных Штатах, чтобы минимизировать количество монет, в среднем выдаваемых в качестве сдачи. Ответ его восхитил: это должна быть 18-центовая монета; и потому Шаллит воздержался от того, чтобы следовать рекомендациям, полученным с помощью этих вычислительных упражнений.
В настоящее время проблема выдачи сдачи решается убийственно просто: выдавая любое заданное количество денег, вначале нужно просто использовать как можно больше четвертаков, но, разумеется, так, чтобы не дать лишнего, затем выдать как можно больше 10-центовых монет и т. д. по убывающему номиналу. Например, 54 цента – это два четвертака и еще четыре цента. Но с 18-центовой монетой такой простой алгоритм уже не был бы оптимальным, ведь 54 цента лучше всего набирается с помощью трех 18-центовых монет, то есть мы обходимся вообще без четвертаков. На самом деле Шаллит заметил, что неудачный подбор достоинства монет превращает обычный процесс выдачи сдачи в нечто «по крайней мере, столь же трудное, как… задача коммивояжера». Это так сложно, что лучше обратиться к кассиру. Шаллит также обнаружил, что наибольшим спросом из всех монет пользовались бы либо двухцентовые, либо трехцентовые монеты. Это хоть и не так волнующе, как в случае с 18-центовой монетой, но почти столь же полезно; и удачно – с точки зрения дальней перспективы.
Более важный вывод заключается в том, что даже небольшие изменения в проекте могут радикально изменить вид когнитивной проблемы, которая встает перед пользователями. Например, архитекторы и градостроители могут выбирать, как они будут формировать окружающую среду; а это значит, что они могут выбирать, как они будут структурировать вычислительные проблемы, которые стоят перед нами.
Представим себе большую парковку со множеством полос для движения (такие парковки часто встречаются при стадионах и торговых центрах). Вы въезжаете на парковку, по одной из ее полос движетесь в направлении торгового центра, находите свободное место, но решаете ехать дальше, надеясь найти место поближе к торговому центру; но вам не везет, приходится разворачиваться и по соседней полосе ехать обратно. И даже после некоторого количества таких попыток вам все равно придется решать, является ли следующее найденное место подходящим, чтобы остановить выбор на нем, или оно расположено так далеко от входа, что вы все-таки будете пытаться найти следующее свободное место даже на третьей полосе.
Алгоритмическая перспектива данного примера может быть полезной не только для водителя, но и для архитектора-проектировщика. Она контрастирует с ужасным, хаотичным решением проблемы, когда среди множества вариантов предлагается единственная прямая дорога, но ведущая прочь от искомого места назначения. Ведь в том случае, когда любой въезжающий просто занимает первое свободное пространство, уже не требуется использовать ни теорию игр, ни анализ, ни правило «семь раз отмерь». Некоторые гаражи построены именно таким образом – с одной полосой, спиралью поднимающейся наверх. Вычислительная нагрузка для таких сооружений равна нулю: любой из заезжающих просто движется вперед и занимает первое же свободное место. И какими бы ни были возможные аргументы «за» и «против» строительства такого рода сооружений, одно можно сказать наверняка: подобные сооружения намного гуманнее относятся к своим пользователям.
Одной из главных целей проектировщиков должна быть защита людей от ненужного напряжения, сомнений, умственного труда. (И это не просто абстрактное утверждение; ведь если парковка торгового центра, например, становится источником стресса, то покупатели будут намного реже его посещать и потратят там меньше денег.) Городские планировщики и архитекторы каждый раз взвешивают, какие ресурсы будут задействованы различными вариантами дизайна: ограниченное пространство, материалы, деньги. Но они редко обращают внимание на то, насколько их решения будут напрягать вычислительные ресурсы людей, которые их соберутся использовать. Признание алгоритмических основ нашей повседневной жизни (в данном случае речь об оптимальной остановке) не только позволит водителям принимать наилучшие решения в той или иной ситуации, но в первую очередь будет подталкивать проектировщиков больше задумываться о проблемах, решать которые они вынуждают водителей.
Существует множество других случаев, когда такие подходы напрашиваются сами. Рассмотрим для примера политику ресторана по рассадке своих посетителей. Некоторые рестораны проводят политику открытого размещения, при которой посетители ждут поблизости, пока не освободится стол, и тогда его занимает первый из очереди. Другие рестораны спросят ваше имя, пригласят выпить в баре и уведомят вас, когда стол освободится. Эти подходы к управлению общедоступными, но дефицитными ресурсами прекрасно отображают различие между прокруткой и блокировкой в работе компьютера.
Если обрабатываемый поток запрашивает ресурс и не может получить его, то компьютер может либо разрешить этому потоку крутиться дальше, то есть продолжать проверку доступности, бегая по кругу и непрерывно спрашивая, доступен ли ресурс, либо блокировать доступ, то есть приостановить этот поток, выполнить другую задачу и потом вновь вернуться к первому потоку, делая это всякий раз, когда ресурс становится свободным. Для ученого-компьютерщика это реальный компромисс; выбор подхода определяется сравнением времени, затрачиваемого на постоянные запросы, и времени, теряемого на контекстные переключения. Но в ресторане не все ресурсы, к которым обращаются посетители, являются собственностью ресторана. Для ресторана подход «крутиться» помогает быстрее заполнить пустые столы, но для процессора, который, между прочим, больше изнашивается в таком режиме, это означает попадание в утомительную ловушку, в которой надо все время держать ухо востро и не терять бдительности.