Вы находитесь на странице: 1из 27

Психология.

Сам себе коуч

Али  Альмоссави
Хакни рутину. Как алгоритмы
помогают справляться с
беспорядком, не тупить в
супермаркете и жить проще

«Эксмо»
2017
УДК 51-7
ББК 22.12

Альмоссави А.
Хакни рутину. Как алгоритмы помогают справляться с
беспорядком, не тупить в супермаркете и жить проще  / 
А. Альмоссави —  «Эксмо»,  2017 — (Психология. Сам себе коуч)

ISBN 978-5-04-091544-6

Ежедневные задачи, вроде покупки продуктов или сортировки почты, часто


отнимают куда больше сил и времени, чем хотелось бы. Математик Али
Альмоссави, автор бестселлера «Нелепые доводы», предлагает оригинальный
подход: использовать алгоритмы! Благодаря понятным графикам и схемам
даже прирожденный гуманитарий сможет легко освоить и применять этот
необычный метод на практике, делая жизнь проще, а повседневные занятия –
эффективнее.

УДК 51-7
ББК 22.12

ISBN 978-5-04-091544-6 © Альмоссави А., 2017


© Эксмо, 2017
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

Содержание
ПСИХОЛОГИЧЕСКИЕ БЕСТСЕЛЛЕРЫ 6
Предисловие 8
Введение 10
Для чего нужны относительные величины? 10
Зачем фокусироваться на повседневных задачах? 11
Алгоритмическое мышление в повседневной жизни 12
1 13
2 18
3 22
4 26
Конец ознакомительного фрагмента. 27

4
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

Али Альмоссави
Хакни рутину. Как алгоритмы помогают
справляться с беспорядком, не
тупить в супермаркете и жить проще
Посвящается Фатиме

МОЖНО ВЕСЬ ДЕНЬ ПЛАВАТЬ В МОРЕ ЗНАНИЙ, НО ТАК И НЕ


ПРОМОКНУТЬ.
Нортон Джустер «Призрачная будка»

Ali Almossawi
BAD CHOICES: How Algorithms Can Help You Think Smarter and Live Happier
Copyright © 2017 by Ali Almossawi

© Черепанов В., перевод на русский язык, 2018


© ООО «Издательство «Эксмо», 2018
 
***
 

5
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
ПСИХОЛОГИЧЕСКИЕ БЕСТСЕЛЛЕРЫ
 

6
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

1. Тайная жизнь мозга. Как наш мозг думает, чувствует и принимает решения.
Как мы принимаем решения? Что такое интуиция, и стоит ли ей доверять? В своей книге
аргентинский нейробиолог и спикер TED Talks Мариано Сигман берется разгадать тайны чело-
веческого мозга. Он находит ответы даже на самые неразрешимые вопросы о мышлении и рас-
крывает настоящую роль нейронауки в нашей жизни.

2. Омоложение мозга за две недели. Как вспомнить то, что вы забыли.


Здоровые привычки помогают предотвратить старение мозга ‒ доказано профессором
психиатрии Гэри Смоллом. Опираясь на последние достижения медицины и психологии, док-
тор Смолл расскажет, как за 14 дней улучшить память, начать мыслить продуктивно и укре-
пить физическое здоровье.

3. Как забыть все забывать. 15 простых привычек, чтобы не искать ключи по


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

4. Игра в возможности. Как переписать свою историю и найти путь к счастью


Мы строим свою жизнь, опираясь на страхи и обиды прошлого ‒ такие шаблоны пове-
дения мешают вам наслаждаться настоящим. Талантливый психотерапевт и коуч Розамунда
Зандер расскажет, как избавиться от своих детских травм, развеять старые предубеждения и
стереотипы и обрести душевный покой.
 
Из этой книги вы узнаете:
 
• как расставить приоритеты при походе в магазин
• как уместить свою мысль в ограниченное количество знаков в Твиттере
• как быстро отсортировать почту
• как найти свой размер одежды на распродаже
• как составить крутой плейлист

7
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
Предисловие
 
Знаете ли вы, когда Ричард Фейнман начал разрабатывать свои знаменитые уравнения,
которые принесли ему Нобелевскую премию? Он увидел, как кто-то подбрасывает тарелку в
воздух. Знаете ли вы, как Джон фон Нейман сконструировал основные части своего электрон-
ного компьютера? Он взял за основу идею своего друга о том, как воспоминания сохраняются
в мозге человека. В курсе ли вы, что вид кривляющегося и кричащего орангутанга в клетке
навел Чарльза Дарвина1 на гениальные мысли? У Фейнманна, фон Неймана, Дарвина и других
ученых есть одна общая черта: они видели физику, математику и науку повсюду, далеко за
пределами своих лабораторий.
Даже если вы не собираетесь стать нобелевским лауреатом, в повседневной жизни есть
много вещей, которые можно записать в виде алгоритма. Вы постоянно применяете алгоритмы
для решения различных задач: ищете ли вы пару к носку в куче вещей, решаете ли, когда
поехать за продуктами, определяете приоритетность задач на день и так далее. Алгоритм – это
последовательность точных шагов, при помощи которой в конкретный промежуток времени
достигается намеченная цель. Реализация этой последовательности может начаться с прило-
жения усилий и энергозатрат, но подразумевается, что в итоге ваши действия принесут опре-
деленную пользу. Все это характеристики алгоритма.
Поразительно, но тексты на вавилонских глиняных табличках 1800–1600 годов до н. э.
показывают, что древние вавилоняне использовали алгоритмы, скажем, при вычислении слож-
ного процента или расчете ширины и длины резервуара. Иными словами, жизнь вавилонян
складывалась из точной последовательности операций. Эти операции требовали определенных
усилий, подразумевали конечный результат и приносили пользу.
Алгоритмы встречаются в работах ученых, которые на протяжении многих веков вносили
вклад в развитие математики. После появления компьютеров эти характеристики позволили
ЭВМ выполнять задачи предсказуемым способом.
Несмотря на важность алгоритмов в нашей повседневной жизни, почти вся посвящен-
ная им литература описывает исключительно их научное применение. Многие авторы игнори-
руют практическую пользу и эффективность многих алгоритмов. Простые ежедневные задачи
можно выполнять разными способами, и чем больше мы знаем таких способов, тем легче
достигаем результата. Это можно сравнить с развитием интуиции, которой мы все обладаем.
И тут на помощь приходит эта книга.
Цель книги – познакомить вас с алгоритмом мышления при решении повседневных задач
и показать, что все эти подходы сравнимы друг с другом. Например, два метода нахождения
рубашки нужного размера на вешалке можно описать графически (см. рисунок).2

1
 Ричард Фейнманн (1918–1988) – американский физик-теоретик; Джон фон Нейман (1903–1957) – венгерский и амери-
канский математик; Чарльз Дарвин (1809–1888) – автор теории эволюции (прим. ред.).
2
 Все линии изображены на графике двойного логарифмического масштаба, поэтому они имеют такой вид (прим. автора).
8
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

Графики такого вида (их называют линейными и логарифмическими) и есть те самые


схемы, которые мы будем строить и обсуждать в этой книге. Бывает, что оба подхода одинаково
действенны, когда у нас всего несколько предметов, но их эффективность меняется по мере
того, как количество предметов растет.
В этой книге мы рассмотрим с точки зрения алгоритмов двенадцать знакомых каждому
мест, включая гостиную, мастерскую и универмаг, где нужно будет выполнить ряд заданий.
После каждого рисунка следует описание сцены и комментарий. Мы приведем по крайней
мере два возможных способа выполнения фундаментального задания: один – медленный, дру-
гой – быстрый. Чтобы понять разницу между ними, надо все время помнить заголовок книги,
отчасти навеянный рассуждениями ученого Дональда Кнута о «хороших» алгоритмах, кото-
рые можно считать быстрыми или эффективными.3

3
 Важно в самом начале отметить, что эти характеристики не всегда применимы к другим сферам жизни, например к учебе,
где скорость – не главное. По моему опыту та обучающая среда, которая требует от студентов работать быстро, настраивает
их на неудачу (прим. автора).
9
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
Введение
 
 
Для чего нужны относительные величины?
 
Сравнения – чрезвычайно мощная штука. Одно из первых абстрактных понятий, кото-
рые усваивают дети, – разница между большим и маленьким. Когда ребенок спрашивает: «А
какого размера тот титанозавр из Музея естественной истории?», то ответ типа «Не очень
большой. Всего семнадцать футов в высоту» мало что скажет малышу. Зато он поймет такое
объяснение: «Если бы Сюзан, Маргарет и Яша встали друг другу на плечи, то Яша, наверное,
смог бы дотянуться до нижней челюсти ящера».
Возможно, умение оперировать относительными величинами – врожденная способность,
поскольку ею обладают все дети. Последние эксперименты показывают, что мозг ребенка про-
являет такую же активность в ответ на изменения размера изображения, как и при изменении
количества образов. Результаты других экспериментов, проведенных в отдаленных уголках
мира, говорят, что люди, избежавшие напасти формального образования, судят о количестве
предметов при помощи относительных величин.
Из всех подвидов человека разумного ярче всего эта интуиция выражена у ученых-ком-
пьютерщиков. Именно она помогает им быстро выбирать лучший из методов решения про-
блемы. Выходит, способность видеть мир в относительных величинах дает вам преимущество в
профессиональной деятельности. Например, условные обозначения математических действий,
выученные в начальной школе, остаются в вашем арсенале мышления на протяжении всего
школьного курса и за пределами стен учебных заведений, в том числе и в быту.
Именно это обстоятельство стало основной причиной написания этой книги. В школе
и колледже я часто прибегал к сравнениям, оценкам, прикидкам и приблизительным величи-
нам для понимания различных терминов и концепций. Я не осмеливался никому признаться
в этом, потому что такие методы выглядели слишком простыми. И только прочитав книги
«Самый странный человек»4 и «Общество разума», я узнал, что не я один считаю полезным
этот тип мышления. Позже я познакомился с работой «Искусство озарения в науке и инженер-
ном деле» и другими книгами, посвященными этой идее.
Я надеюсь, что моя книга поможет вам лучше мыслить и понимать побочные эффекты
этой методики. Она не будет учить вас, как лучше находить пары носков – этой интуитивной
способностью обладают почти все люди. Скорее она заставит вас задуматься: «Надо же, я и не
знал, что о носках можно рассуждать в таких категориях». Похоже, критическое, алгоритмиче-
ское мышление – высокоэффективный инструмент, который влияет на наше поведение, меняя
его в лучшую сторону.

4
 В этой книге есть смешной отрывок об Оливере Хивсайде, остром на язык отшельнике, чей подход к математике про-
ектирования отличался особой прагматичностью. Инженеры хвалили метод Хивсайда, но математики смеялись над ним из-
за недостатка точности. У Хивсайда же не было времени проявлять дотошность («Стоит ли мне отказываться от ужина, если
я не понимаю, как происходит пищеварение?»). (Прим. автора.)
10
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
Зачем фокусироваться на повседневных задачах?
 
Алгоритмы могут быть сложными, но они очень важны и так или иначе являются частью
нашей жизни. Анализируя те сферы нашего бытия, которые служат хорошими моделями для
различных алгоритмов, мы вырабатываем подход, который приносит больше пользы.
Алгоритмы не оторваны от реальности. Не случайно многие объяснения в этой книге
сопровождаются иллюстрациями. Рассказывать о чем-либо при помощи рисунков удобно не
только потому, что они добавляют красок и эмоций в однообразное повествование. Изображе-
ния погружают человека в знакомую среду, включают его в процесс. Вы становитесь способны
на более сложные суждения и более интенсивное мышление, когда соединяете новую инфор-
мацию с известной. Именно поэтому аналогии – очень эффективный инструмент.
Алгоритмы интерактивны. Если вы посмотрите на историю человечества, то обнару-
жите, что многие известные люди получали образование, поступая учениками к какому-либо
мастеру, а не просто сидели за партами и списывали примеры с доски. Алгоритмы часто
называют готовыми рецептами, но, по-моему, использование готовых решений больше похоже
именно на списывание: это скучное, механическое и бессодержательное занятие. В такой
модели ученика рассматривают как некий сосуд, а задача инструктора – наполнить его знани-
ями. Еще одна метафора: пользоваться готовыми решениями – все равно что смотреть коме-
дию со смехом за кадром, где кто-то другой веселится за вас.
В этой книге каждый урок представлен в виде сценария или плана на целый день. Такой
план заставляет вас развивать собственный подход путем погружения и проигрывания различ-
ных ситуаций, проговаривания их; он помогает вам в мыслях выйти за пределы ежедневной
рутины. Интерактивный подход делает чтение увлекательнее и дает читателю более полезный
обучающий опыт. Мои самые яркие детские воспоминания об учебе – это беседы с родителями
или с учителем. Все они понимали, что в обучении процесс так же важен, как способности.
Я допускаю возможность разных итогов. Один из моих любимых афоризмов об обучении
принадлежит Фрэнсису Бэкону:5 «Второстепенная и неочевидная польза не менее важна, чем
признанный всеми положительный результат». На каждый вопрос существует не один ответ.
Представьте себе некий музей науки – родители читают надписи на экспонатах и пересказы-
вают их детям как могут. Никто не приходит в этот мир готовым ученым, никто не покидает
его, зная все; но каждый обретает что-то ценное за счет своего опыта.

5
 Фрэнсис Бэкон (1561–1626) – один из крупнейших философов Нового времени, основоположник эмпиризма и англий-
ского материализма (прим. ред.).
11
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
Алгоритмическое мышление в повседневной жизни
 

12
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
1
Найди пару носку
 

Баронесса Марджи Вана родилась в некогда влиятельной венской семье, но недавно ее


обвинили в контрабанде шоколадных яиц «Kinder Surprise» в  США. Сейчас она работает
гувернанткой по программе языкового обмена в Берне. Впервые в жизни ей предстоит разо-
брать кучу белья. Марджи обескуражена тем, что все члены семьи, где она проживает, каждые
полчаса бросают в корзину для белья пару носков. Найти и разложить носки по парам – дело
непростое. При этом у всех разные размеры и каждый предпочитает определенный цвет.
Подсказка. Здесь может быть поставлено сразу несколько задач, но
начинайте с самой главной.
Вы когда-нибудь задумывались над тем, какой важной функцией с точки зрения биоло-
гии является человеческая память? Когда кто-то откидывается на спинку стула, прикладывая
одну руку ко лбу и закрывая глаза в попытке вспомнить стихи, уравнение или телефонный
номер, – это сама суть человека. Представьте, какие мучения ждали бы нас в жизни без этой
замечательной способности – и как без нее живут люди, страдающие слабоумием. Для начала
вам бы пришлось каждый раз заново заполнять голову одними и теми же знаниями, как герою
фильма «Помни».6
Я затронул этот вопрос в самом начале, потому что быстрые методы решения проблем
улучшают память.7 Вспомните компьютерную программу «AlphaGo», которая недавно побе-
дила чемпиона по игре в го благодаря способности учиться не только у экспертов-людей, но и
у самой себя, накапливая в памяти все больше информации.8 Иначе говоря, многие быстрые
способы решения проблем, с которыми мы познакомимся в этой книге, помогают избежать
выполнения одних и тех же однообразных действий по многу раз.
Но не будем забегать вперед. Вернемся к бедной старой Марджи Ване. Итак, ей надо
собрать в пары носки, сваленные в огромную кучу одежды. Давайте сфокусируемся на одной
из нескольких задач и рассмотрим два возможных способа решения.
ЦЕЛЬ: РАЗЛОЖИТЬ ПО ПАРАМ НОСКИ В КУЧЕ БЕЛЬЯ

6
  «Помни» («Memento»)  – фильм Джонатана Нолана (2000). Главный герой, переживший тяжелую травму головы, не
может ничего удержать в памяти больше 15 минут.
7
 Факт, который часто описывают фразой «торговать памятью за деньги» (прим. автора).
8
 Этот подход был впервые применен в Университете Торонто десять лет назад, и сейчас его называют глубоким обучением
(прим. автора).
13
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

МЕТОД 1: ВЫБРАТЬ НОСОК. ПОИСКАТЬ ЕМУ ПАРУ В  ГРУДЕ


БЕЛЬЯ. ОТЛОЖИТЬ ОБА НОСКА В СТОРОНУ. ВЗЯТЬ ДРУГОЙ НОСОК.
ПОИСКАТЬ ЕМУ ПАРУ В  ГРУДЕ БЕЛЬЯ. ОТЛОЖИТЬ ОБА НОСКА
В СТОРОНУ. И ТАК ДАЛЕЕ.
МЕТОД 2: ВЫБЕРИТЕ НОСОК. ОТЛОЖИТЕ ЕГО В  СТОРОНУ.
ВЫБЕРИТЕ ДРУГОЙ НОСОК. ЕСЛИ ОН ПОДХОДИТ К  ПЕРВОМУ,
ОБЪЕДИНИТЕ ИХ. ВЫЛОЖИТЕ В РЯД НОСКИ БЕЗ ПАРЫ. ПОДБЕРИТЕ
К НИМ НОСКИ СОВПАДАЮЩЕГО ЦВЕТА И РАЗМЕРА.9
Прежде чем читать дальше, проработайте эти варианты, используя ручку и бумагу или
любой другой реквизит. Подумайте о том, какую цель преследует каждый отдельный шаг на
примере сцен, перечисленных ниже.
Если в куче всего четыре носка, то неважно, какой метод будет использовать Марджи:
она быстро справится с задачей. А теперь представьте, что перед ней лежит сотня носков. Если
она выберет первый метод, то с большой вероятностью будет снова и снова натыкаться на один
и тот же носок, поскольку он остается в общей куче. Вытащив его в первый раз, она не извлечет
из него никакой информации.
При использовании второго метода перед ней вырастет шеренга носков без пары, и, сле-
довательно, она будет брать каждый носок из кучи вещей всего один раз. Второй метод ока-
зывается быстрее, потому что он опирается на память – точнее говоря, на то, что мы иногда
называем справочными таблицами, или сверхоперативной памятью.
Полезно представить справочную таблицу как сборник уникальных идентификаторов –
клавиш, каждая из которых указывает на какую-либо связанную с ней информацию. Вы в бук-
вальном смысле видите надписи на клавишах. Мы называем этот тип представления парой
«ключ—значение».
В случае с носками наши клавиши скорее всего будут цветными. Когда Марджи находит
красный носок, она ищет тот же цвет среди непарных. Найдя его, она может вводить дополни-
тельные идентификаторы/признаки, например стиль или оттенок. Если пара так и не найдена,
она создает новую область под названием «красное» с единственным красным носком в ней.
Как эти два метода соотносятся друг с другом?10 Мы уже заметили, что работа по методу
1 сильно замедляется по сравнению с методом 2 по мере увеличения носков в куче. На самом
деле существует гораздо больше способов решения задачи. Но нам сейчас важно показать,
чем именно эти два метода радикально отличаются друг от друга, не упоминая другие, чья
эффективность может находиться где-то посередине. К примеру, Марджи могла бы применить
принцип Дирихле – то есть вытаскивать по шесть носков из кучи одновременно и подбирать
пары таким способом.
Вытаскивая носок из кучи, мы достаточно быстро сможем подобрать ему пару. Крат-
ковременная память большинства людей прекрасно работает с группами, насчитывающими
плюс-минус десять предметов, а именно такими величинами мы оперируем в данный момент.
Натыкаясь на носок, который мы уже откладывали в сторону, мы должны воскликнуть: «А, да
– я его уже видел!» Если вы когда-нибудь играли в карточную игру «Память», преимущества
и недостатки этой системы должны быть вам хорошо знакомы.

9
  Заметьте, что, применяя оба метода, мы не занимаемся отделением носков от не-носков, поскольку наше задание –
разобраться только с носками (прим. автора).
10
 Есть более сложные методы изучения скорости роста. Один из них – узнать, не растет ли определенный метод быст-
рее, чем показанная скорость (известная под названием большое-о), или медленнее, чем показанная скорость (известная как
большое-Ώ, т. е. «большая омега»). Другой метод – посмотреть, описывают ли скорости роста лучшие, худшие или средние
случаи. Мы поговорим обо всех этих случаях позже (прим. автора).
14
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

Если бы у нас было гораздо больше носков разных типов и цветов, то ряд непарных ока-
зался бы таким длинным, что нам пришлось бы заново пересматривать всю их последователь-
ность каждый раз, когда мы вытаскиваем из кучи новый. Это трудоемко и долго, особенно если
искомый предмет оказывается в самом конце.
В 1953 году математик Ханс Питер Лун, работавший в корпорации «IBM», выдвинул
идею, которая положила начало созданию альтернативной структуры, облегчающей потенци-
альную замедленность, присущую любому комплексному поиску. Эта структура иногда назы-
вается ассоциативным массивом, или хеш-таблицей (посыплем еще немного соли на раны ста-
рушки Марджи). Хеш-таблица делает то же, что и массив: она сохраняет вещи в коллекции, но
использует более строгую последовательность (например, большой черный носок всегда идет
после красного носка) для немедленного так называемого поиска за постоянное время.11
Он называется непрерывным, потому что не зависит от длины последовательности. Впро-
чем, это не всегда так. Многие вещи в программном обеспечении, к неудовольствию исследо-
вателей и практиков, не подчиняются фундаментальным законам – в отличие от природы. Но
здесь мы допускаем, что из-за малого числа несопоставимых носков синапсы Марджи будут
возбуждаться быстро и вызывать почти немедленную реакцию.
Как мы увидим позже, непрерывный поиск чаще всего происходит в тех случаях, когда
можно смоделировать задание при помощи формулы, которая избавляет от необходимости
выполнять его снова и снова, перебирая все существующие позиции.12 Известно, что формула,
используемая с хеш-таблицами, называется хеш-функция. Ее работа – поместить вещь в кучу
так, чтобы потом можно было вытащить ее из памяти достаточно быстро.

11
 В этом примере Марджи не особенно заботится о том, в каком порядке лежат неразобранные носки. Все, что ее беспо-
коит, – все носки должны быть отложены в одну сторону.
12
 Например, найти сумму первых чисел n было бы сложно, если бы вы проходились по этим n-числам один за другим,
каждый раз суммируя пары. Гораздо удобнее использовать вместо этого формулу n x (n+1)/2 (прим. автора).
15
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

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

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

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

13
 Префикс в информатике – начало строки программы (прим. ред.).
16
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

РАЗВЕ НЕ ЗДОРОВО, ЧТО ОБЫДЕННОЕ СТАНОВИТСЯ УВЛЕКАТЕЛЬНЫМ,


СТОИТ ТОЛЬКО ПОДОЙТИ К НЕМУ ИНАЧЕ?!

17
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
2
Выбери свой размер
 

На следующий день после Рождества медсестра Эппи Тоам из шотландского городка


Инвернесс рано утром пришла к местному универмагу в ожидании новогодней распродажи.
У Эппи довольно распространенный размер одежды, и она хочет первой ворваться в магазин,
чтобы успеть ухватить все блузки своего размера. Ей нужно делать все быстро. Ситуация может
выйти из-под контроля. В прошлом году во время такой распродажи 15 человек получили
травмы, а потом пришлось вызывать военных, чтобы прекратить давку. Как Эппи может повы-
сить свои шансы заполучить нужные блузки, до того как они попадут в чужие руки?
Подсказка. Рассматривайте этот пример, доводя его до абсурда. Что,
если стойки с одеждой будут располагаться по всей ширине магазина?
Если мы ищем что-то среди большого количества одежды, то нужно ли просматривать
всю коллекцию? Другими словами, если у нас 100 вещей, должны ли мы просмотреть все 100,
то есть занимает ли такая операция линейное время? Смысл линейной функции в том, что
если для нахождения чего-то в куче из 100 вещей нужна минута, то можно ожидать, что у нас
уйдет две минуты на поиск нужной вещи в куче из 200 предметов гардероба.
Обычно так и происходит. Однако коллекция может обладать одним интересным каче-
ством, а именно: она поддается сортировке, что позволяет найти вещь по алгоритму логариф-
мического времени, примерно за 7 шагов, а не за 100. Вспомните, что логарифм – это всего
лишь нечто обратное экспоненте. Составляя компьютерные программы, мы предполагаем, что
основание логарифма есть 2, поэтому логарифм 100 это log2 100, то есть получается примерно
7. Это значительное улучшение можно увидеть, переходя от линейного времени к логарифми-
ческому. Поэтому логарифм и является таким важным понятием, особенно когда мы говорим
о скорости роста. К этому мы будем часто возвращаться в следующих главах.
Для начала давайте представим, как Эппи носится по магазину с сияющим от гордости
и тщеславия лицом. Шарф развевается, ее боевые крики вырываются сквозь стиснутые зубы и
отражаются от стен универмага. Она все утро готовилась к этому моменту.
ЦЕЛЬ: НА ВЫБРАННОЙ ВЕШАЛКЕ НАЙТИ БЛУЗКУ СВОЕГО
РАЗМЕРА.
МЕТОД 1: ДЛЯ ВЫБРАННОЙ ВЕШАЛКИ. ПРОСМОТРЕТЬ ВСЕ
БЛУЗКИ ОДНУ ЗА ДРУГОЙ.

18
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

МЕТОД 2: ДЛЯ ВЫБРАННОЙ ВЕШАЛКИ. НАЧНИТЕ ИСКАТЬ


СВОЙ РАЗМЕР В  СЕРЕДИНЕ ВЕШАЛКИ. ЕСЛИ ТАМ ВИСЯТ БЛУЗКИ
РАЗМЕРОМ БОЛЬШЕ, НУЖНО ПОЙТИ НАЛЕВО. ЕСЛИ ЖЕ РАЗМЕРЫ
МЕНЬШЕ – НАПРАВО.
Вот так можно наглядно сравнить эти два метода. Очевидно, что поиски по методу
1 станут значительно медленнее, чем по методу 2, по мере увеличения количества блузок на
вешалке.

Как вы уже, вероятно, догадались, в методе 2 выгодно используется знание двух фактов.
Во-первых, блузки, скорее всего, отсортированы по размерам. А во-вторых, поскольку у Эппи
ходовой размер, то скорее всего нужные ей блузки висят где-то в середине вешалки. Зная это,
можно не только начать с середины, но и передвигаться влево или вправо своеобразными скач-
ками, каждый раз сокращая коллекцию вдвое. Такой подход и есть визитная карточка алго-
ритма логарифмического времени. 14 Это та самая интуиция, которую мы используем, чтобы
найти нужное слово в словаре, или имя в телефонном справочнике, или статью в энциклопе-
дии. Те же интуитивные знания мы будем применять, если заснем над скучной книгой и захо-
тим на следующий день возобновить чтение с того же места. В целом можно охарактеризовать
этот подход как принцип отбрасывания ненужной информации.

ЭППИ НАХОДИТ СВОЙ РАЗМЕР ЗА 4 ШАГА.

14
 Сходным образом процесс многократного удвоения чисел от 1 до n логарифмичен, поскольку мы можем сделать не
более чем log n скачков, прежде чем получим n. Например, сколько лет уйдет на зарабатывание 1 млн долларов, если начать
с 1 доллара и каждый год удваивать его? Можно посчитать это вручную или же применить log2 1 000 000 = 19,93 года (прим.
автора).
19
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

ЭППИ НАХОДИТ СВОЙ РАЗМЕР ЗА 2 ШАГА.

Для нас наиболее важной информацией о логарифмах является то, что они медленно
растут, как вы видели из предыдущих графиков. Мы предпочитаем решения, которые растут
медленно, потому что это означает, что наш метод не так сильно зависит от количества предме-
тов. Эппи скорее всего найдет нужную вещь на вешалке с сотней блузок менее чем за 7 шагов,
а на гипотетической вешалке с тысячью блузок – всего за 10 шагов или около того, что не так
уж плохо. Этот метод логарифмического поиска чего-либо в отсортированной группе пред-
метов часто называют бинарным поиском. Он значительно эффективнее метода 1, известного
под названием линейный поиск, и благодаря ему Эппи приобрела кучу новых блузок своего
размера.

20
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

21
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
3
Поход за продуктами
 

Ян Патой – бывший учитель английской словесности, лингвист. Он пенсионер и живет на


востоке Лондона. Несколько лет назад он упал, и теперь у него сильно болит спина. Он не любит
выходить на улицу, потому что боится соседской собаки, но ему приходится иногда совершать
вылазки за продуктами. В Лондоне часто идет дождь, а старые кости Яна не выносят сырости.
Как свести к минимуму количество походов в магазин в неделю, чтобы не умереть с голода?
Есть такой комедийный скетч с двумя Ронни15 – клиент приходит в скобяную лавку и
читает список вещей, которые ему нужно купить. Вместо того чтобы дождаться конца списка,
владелец магазина каждый раз хватает названную вещь, и все заканчивается тем, что у про-
давца едет крыша.
Запомните эту сценку.16 Мы еще вернемся к ней. Но сначала давайте посмотрим, как Ян
может решить, насколько часто ему ходить в магазин.
ЦЕЛЬ: СОВЕРШАТЬ КАК МОЖНО МЕНЬШЕ ВЫЛАЗОК
В МАГАЗИН В ТЕЧЕНИЕ НЕДЕЛИ.
МЕТОД 1: ОБНАРУЖИТЬ, ЧТО КАКОЙ-ТО ПРОДУКТ
ЗАКАНЧИВАЕТСЯ И ОТПРАВИТЬСЯ ЗА НИМ В МАГАЗИН.
МЕТОД 2: СОСТАВЛЯТЬ СПИСОК ЗАКОНЧИВШИХСЯ
ПРОДУКТОВ. ПОЙТИ В  МАГАЗИН, КОГДА СПИСОК ДОСТИГНЕТ
ОПРЕДЕЛЕННЫХ РАЗМЕРОВ ИЛИ КОГДА ЗАКОНЧИТСЯ
КАКОЙ-НИБУДЬ ЖИЗНЕННО ВАЖНЫЙ ПРОДУКТ, НАПРИМЕР
ШОКОЛАДНЫЕ БАТОНЧИКИ «КИТ-КАТ».17
Вот уже знакомый нам график, где можно посмотреть и сравнить эффективность этих
двух методов.

15
 «Два Ронни» – популярный в 1970-е годы британский комедийный сериал с актерами Ронни Баркетом и Ронни Кор-
беттом (прим. ред.).
16
 Ее можно посмотреть здесь: bookofbadchoices.com/links/ronnies. Интересующая нас последовательность событий про-
исходит ближе к середине ролика (прим. автора).
17
 Здесь может быть реклама любого другого продукта (прим. автора).
22
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

Одна из интерпретаций этой сцены звучит так: важно избегать повторяющейся работы.
К примеру, секретарша, которой нужно подшить десять различных отчетов, может сделать
дырки во всех десяти листах сразу, а не мучиться с каждым по отдельности. Или же – почему
бы не намылить все грязные тарелки разом и не вымыть их вместе, вместо того чтобы тереть
и прополаскивать по очереди. Или порезать луковицу вдоль, прежде чем начать шинковать
ее поперек. Или оснастить новые высотные здания диспетчерской системой, которая сажает в
один лифт пассажиров, едущий на тот же этаж.
Внимательный исследователь может сделать еще одно наблюдение, и оно имеет отноше-
ние к походу Яна в продуктовый магазин. Давайте поговорим об этом.
В информационных технологиях есть много способов хранения набора данных. Мы рас-
смотрели основные способы на примере массива разнопарных носков. Затем во второй сцене
мы увидели, как массив может максимизировать какое-либо качество, а именно – возможность
поиска путем сортировки контента. Вспомните отсортированные в нужном порядке рубашки
на вешалках. Именно это делают структуры данных, или абстрактные типы данных, как их
иногда называют. Они повышают значение одного или нескольких свойств, которые нас инте-
ресуют, обычно за счет других, не столь важных для нас. Пример: безопасность и удобство
работы. Приложение, которое запрашивает у вас пароль каждый раз, когда вы нажимаете на
кнопку, возможно, гарантирует большую безопасность, но оно менее удобно в использовании.
Структура, которая, на мой взгляд, заслуживает внимания, известна под именем стек.
Стек выводит на первый план качество предмета, который находится сверху, независимо от
того, сколько позиций расположено ниже. Так, увидев в кафе стопку газет, вы возьмете про-
сматривать только верхнюю, потому что знаете, что она свежая, а вас интересуют самые послед-
ние новости. Точно так же и со стеками: нас интересует то, что находится на самом верху.
В случае с  Яном его когнитивный стек состоит из продуктов, которые закончились у
него дома. Когда в верхней позиции оказывается «Кит-Кат», Ян решает пойти в магазин и
очистить верх стека. Таким образом он постоянно убирает верхние элементы, пока весь стек
не очистится. Закончившийся «Кит-Кат» становится триггером для начала очистки стека. До
наступления этого момента Ян может спокойно добавлять другие позиции в список и зани-
маться своими делами.
Наше воспоминание о скетче в исполнении двух Ронни тоже здесь к месту. Оно позволяет
владельцу магазина построить воображаемый стек, возможно, по одному для каждого ряда
полок, чтобы не лазать вверх и вниз по лестнице много раз. Если бы клиент прочитал весь
список нужных товаров, владелец построил бы свои стеки, исходя из расположения полок,
создавая позиции для стека каждого ряда.

В 1946 году Алан Тюринг опубликовал научную статью, где представил концепцию стека,
используя термин «закапывание». Как отмечает Эндрю Ходжес, автор биографии Тюринга,
идея оказалась новостью для фон Неймана. Вот небольшая выдержка из работы Тюринга:
23
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

«Как производится закапывание и откапывание? Есть много способов.


Один – вести список таких заметок в одной или нескольких стандартных
линиях задержки (1024), где самая недавняя запись становится последней.
Положение самой недавней записи хранится в фиксированном временном
хранилище, и эта ссылка изменяется каждый раз, когда зависимая позиция
начинается или заканчивается».
Этот поразительный текст рассказывает о том, как концепции, которые мы сегодня счи-
таем интуитивными, вообще появились на свет. Они стали очевидными, только когда кто-то
изучил различные проблемы, пытаясь найти их решение. Возможно, вам захочется прочитать
об эффекте Флинна – он назван по имени Джима Флинна, предположившего, что человек ста-
новится умнее отчасти благодаря тому, что его интуитивное мышление зреет и становится
более изощренным и сложным. У людей, рождающихся сегодня, в мозг уже встроена способ-
ность к интуиции, более совершенная, чем та, что была у их предков.
Поэтому бывает смешно читать старые тексты и трактаты – они показывают нам, как
далеко мы продвинулись. Помню, я открыл однажды «Руководство по хорошим манерам для
детей» авторства Дезидериуса Эразмуса, изданную в  1530 году, и нашел такой совет: «Не
давайте соплям скапливаться в носу, так поступают только неряхи. Еще Сократа критиковали
за этот порок». Для человека из XXI столетия это правило выглядит само собой разумею-
щимся, но в контексте того времени оно блистало новизной.
Разговор Тюринга о вспомогательных операциях напоминает еще одну жизненную ситу-
ацию, где стеки были бы полезны. Представьте, что на следующее утро к дому Яна подъезжает
почтальон и не смотрит ему в глаза. По щекам почтальона катятся слезы, а губы дрожат от
обиды.
«Простите, не сделал ли я чего-то такого, что обидело вас?» – спрашивает Ян.

«Ну, вообще-то сделали. Так и есть», – сказал почтальон, отводя взгляд.


Как же Яну вспомнить, каким образом он обидел почтальона? Ему нужно изучить верх-
ние пункты из нужного стека воспоминаний – стека под названием «почтальон». Причина
наверняка кроется в их последнем общении.
Есть ли в нашей повседневной жизни вещи, которые работают как стеки? Как насчет
Всемирной паутины? Каждый раз, когда вы кликаете по ссылке, вы помещаете данный сайт
в стек. Заходя на эту ссылку еще раз, вы берете веб-адрес из стека. Вам все равно, сколько
сайтов вы посетили, пока вы можете вернуться к последнему и от него к другому, стоящему
раньше, и так далее.
Можно надеяться, что Ян сумеет разобраться в своем стеке, чтобы внести поправки в
манеру общения с почтальоном, и научится лучше определять, когда ему идти за продуктами.

24
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

25
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
4
Выход из лабиринта
 

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

Есть еще одна греческая история. Когда родился Минотавр, полубык-получеловек, вели-
кий архитектор Дедал построил лабиринт, куда было заточено это злое и коварное существо.
«Оказавшись внутри, он бродил по извилистым тропинкам, но так никогда и не нашел
выхода. В это место периодически отправлялись молодые афиняне, которых отдавали на съе-
дение Минотавру. И не было у них никакой возможности спастись».

26
А.  Альмоссави.  «Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и
жить проще»

 
Конец ознакомительного фрагмента.
 
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета
мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal,
WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам спо-
собом.

27