Алгоритмы для жизни: Простые способы принимать верные решения
- Сколько раз следует объехать квартал, чтобы найти подходящее место для парковки?
- Как долго стоит испытывать удачу в рискованном предприятии, прежде чем забрать свою долю?
- Сколько ждать лучшего предложения на этот дом или автомобиль?
- И даже: пора ли уже жениться или подвернётся кто-то получше?
Мы пытаемся разрешить такие вопросы каждый день, и в некоторых случаях это даже мучительно. Однако эти мучения необязательны. По крайней мере с математической точки зрения все эти вопросы вполне решаемы, принадлежат к разряду задач об оптимальной остановке, и ответ — потратить 37% своего времени и усилий.
Правило 37% определяет простую последовательность шагов, которая призвана решать подобные проблемы. На языке программистов она называется алгоритмом.
У многих слово «алгоритм» вызывает малоприятные ассоциации со школьной математикой. На самом же деле задолго до того, как алгоритмы стали задействоваться в программировании, их начали применять люди, причём область их действия не сводится исключительно к математике. Когда вы печёте хлеб, вы используете рецепт и, значит, следуете алгоритму. Когда вы вяжете свитер по рисунку, вы следуете алгоритму. Алгоритмы были неотъемлемой частью жизни человека со времён каменного века.
Авторы этой книги хорошо знакомы с междисциплинарными исследованиями в отраслях когнитивистики, математики, экономики. Прежде чем защитить дипломную работу в области исследования английского языка, Брайан изучал компьютерные технологии и философию, а карьеру построил на стыке всех трёх специальностей. Том посвятил годы изучению психологии и статистики, прежде чем стал профессором Калифорнийского университета в Беркли, где теперь уделяет почти всё своё время исследованию взаимосвязей между мыслительной деятельностью человека и вычислительными операциями.
Кроме того, в поисках алгоритмов для жизни авторы беседовали с людьми, которые придумали самые известные алгоритмы за последние 50 лет. И спрашивали, как их исследование повлияло на их же подход к решению жизненных задач. Ведь как сказал Карл Саган, «наука — это скорее определённый образ мышления, нежели просто совокупность знаний».
В книге «Алгоритмы для жизни» авторы с успехом ищут лучшие решения для задач, с которыми все мы сталкиваемся ежедневно, — ну или таких неожиданных, как «вовремя уйти, когда ты на коне» на примере Березовского (подсказка — задача грабителя).
Или же рассказывают о паническом ужасе Данни Хиллиса (впоследствии основателя корпорации Thinking Machines) от носков своего соседа по комнате в общежитии. Дело было не в том, что сосед Хиллиса не стирал свои носки. Он их как раз стирал. Проблема заключалась в том, что происходило после. Молодой человек доставал носок из корзины с чистым бельём. Потом наугад доставал второй. Если носки не оказывались парными, он бросал второй носок обратно в корзину. Этот процесс продолжался до тех пор, пока он не находил пару первому носку. Итак, при 10 разных парах носков ему приходилось в среднем 19 раз вытаскивать разные носки, чтобы подобрать одну пару, и ещё 17 раз, чтобы составить вторую. В общей сложности сосед Хиллиса мог вылавливать по одному носку 110 раз, чтобы собрать 20 пар. Этого было достаточно, чтобы начинающий компьютерный специалист переехал жить в другую комнату. До сих пор обсуждение техники сортировки носков может пробудить в программистах удивительное красноречие.
Ещё неожиданный пример: в одном из эпизодов «Секретных материалов» агент Малдер, прикованный к постели (в буквальном смысле), вот-вот должен был пасть жертвой вампира-невротика. Чтобы спастись, он опрокинул на пол пакет с семечками. Вампир, бессильный перед своей психической болезнью, стал нагибаться, чтобы подобрать их, семечко за семечком. Тем временем наступил рассвет — раньше, чем Малдер стал добычей монстра.
Программисты назвали бы такой метод атакой пингования или сетевой атакой типа «отказ в обслуживании»: если заставить систему выполнять бесконечное количество банальных задач, самые важные вещи будут утеряны в хаосе.
И ещё один пример напоследок: рядом со сканом реального дневника Дарвина приводится вот такая история.
Когда Чарльз размышлял, стоит ли ему сделать предложение своей кузине Эмме Веджвуд, он достал карандаш и бумагу и взвесил все возможные последствия своего решения. В пользу брака он привёл возможность обзавестись детьми, построить тёплые отношения и наслаждаться «очарованием музыки и женскими беседами». Против брака играли «чудовищная потеря времени», отсутствие свободы времяпрепровождения, тяжкая необходимость навещать родственников, расходы и тревоги, связанные с детьми, обеспокоенность, что «жене может не понравиться Лондон», и меньше свободных денег на покупку книг. Сравнив обе колонки, он обнаружил незначительный перевес в пользу брака и ниже приписал «жениться-жениться-жениться ч. т. д.».
Лагранжева релаксация и имитация отжига, алгоритм LRU-вытеснения давно неиспользуемых критериев для обработки переполнения кеша, правило верхнего доверительного предела — и, внезапно, простота выбора — вас ждут почти 400 страниц чистого интеллектуального удовольствия. Текст настолько плотный и информационно насыщенный, что чтения вам хватит надолго. Особенно если вы будете воспроизводить хотя бы по одной ситуации на алгоритм — а избежать этого соблазна не удастся, даже и не пытайтесь.
P.S. Горячо рекомендуется тем, кто оценил книгу «Мозгоускорители». Но и нам, гуманитариям, тоже — авторы изумительно описывают самые сложные процессы простым образным языком.