Можно заметить, что из фотографии, изображающей сцену с очевидным сюжетом, получается файл формата JPEG гораздо меньшего размера, чем исходное изображение, а картинка, состоящая из случайных пикселей, не становится меньше, если попытаться сжать ее алгоритмом JPEG: в ней нет паттернов, помогающих сжатию.
Кто бы и что бы, будь то человек или машина, ни запоминал что-либо, они прибегают к математической стороне своего разума. Запоминание требует обнаружения в данных, которые мы пытаемся сохранить, паттернов, связей, ассоциаций и логики. Паттерны – это шорткат к хорошей памяти.
Со ступеньки на ступеньку
Вернемся к вопросу, который я задал в начале этой главы. Сколько существует способов подняться на пролет из 10 ступенек, если использовать комбинации шагов на одну ступеньку (одинарных) и на две ступеньки (двойных)? К решению этой задачи можно подойти несколькими разными путями. Один из них – просто начать выписывать в случайном порядке разные варианты. При таком несистематическом подходе некоторые возможности наверняка будут пропущены, а чтобы записать их все, понадобится много времени. Нет ли стратегии получше?
Чуть более систематическим будет следующий подход. Начнем с одних лишь одинарных шагов. С ними решение только одно: 1111111111. Затем добавим к одинарным шагам один двойной. Тогда нужно сделать в общей сложности девять шагов – восемь одинарных и один двойной, причем каким по счету будет двойной шаг, можно выбирать. Этот двойной шаг можно сделать в девяти разных местах.
Эта стратегия кажется перспективной. На следующем этапе можно рассмотреть комбинации с двумя двойными шагами, перемешанными с шестью одинарными. В этом варианте подъем совершается за восемь шагов. Но придется вычислить, сколько существует вариантов выбора, то есть какой из восьми шагов будет двойным. Один двойной шаг можно сделать в восьми разных местах, а второй – в семи оставшихся после первого. Создается впечатление, что число возможных вариантов – 8 × 7. Но тут нужно действовать осторожно, потому что на самом деле мы учли одни и те же варианты дважды. Можно назначить первый двойной шаг на положение № 1, а второй – на положение № 2, а можно сделать наоборот. Результат от этого не изменится. Поэтому суммарное число возможных вариантов равно (8 × 7)/2 = 28. Собственно говоря, у этого числа есть особое математическое название. Оно называется числом сочетаний из 8 по 2 и обозначается следующим образом[20]:
В более общем случае число вариантов выбора двух чисел из
Эти инструменты для вычисления количества вариантов выбора, называемые биномиальными коэффициентами, были и в числе тех формул, которые Гаусс и помощник его учителя Бартельс вместе разбирали в своих книгах по алгебре.
Но чтобы решить нашу головоломку, на следующем этапе нужно вычислить, какими способами можно выбрать три места для трех двойных шагов по лестнице из семи возможных. Хотя этот метод кажется разумным и систематическим, нам нужно будет придумывать все новые формулы для включения в подъем по лестнице все большего числа двойных шагов. Эта работа начинает казаться трудоемкой и медленной – совсем не такой, каким должен быть шорткат.
Поэтому я опишу более удобный способ, основанный на том, о чем я рассказывал в этой главе. Очень действенной стратегией для решения таких головоломок мне кажется следующая: нужно рассмотреть малое количество ступенек и выяснить, есть ли в получающихся для них числах какой-нибудь паттерн.
Вот все варианты для лестниц из 1, 2, 3, 4 и 5 ступенек, которые можно быстро перебрать вручную:
1 ступенька: 1.
2 ступеньки: 11 или 2.
3 ступеньки: 111 или 12 или 21.
4 ступеньки: 1111 или 112 или 121 или 211 или 22.
5 ступенек: 11111 или 1112 или 1121 или 1211 или 2111 или 122 или 212 или 221.
Последовательность количества вариантов выглядит так: 1, 2, 3, 5, 8… Возможно, вы уже заметили паттерн. Следующее число получается сложением двух предыдущих. Возможно, вы даже знаете, как называются эти числа. Это же числа Фибоначчи! Они названы в честь математика XII века, открывшего, что эти числа – ключ к процессам роста природных объектов. Цветочных лепестков, сосновых шишек, ракушек, популяций кроликов. Все эти числа, по-видимому, следуют одному и тому же паттерну.
Фибоначчи открыл, что процессы роста в природе следуют одному простому алгоритму. Правило сложения двух предыдущих чисел – это шорткат природы к созданию сложных структур, например ракушек, шишек или цветков. Каждый организм использует две последние созданные им вещи в качестве ингредиентов для следующего шага.
Рис. 1.4. Построение спирали при помощи чисел Фибоначчи
Использование паттернов в развитии структур – ключевой шорткат природы. Взять, например, тот способ, которым природа создает вирус. Вирусы обладают чрезвычайно симметричной структурой. Связано это с тем, что алгоритм создания симметричной структуры прост. Если вирус имеет форму симметричного кубика, то ДНК, которая воспроизводит эту молекулу, нужно создать лишь несколько экземпляров одного и того же белка, образующего грани кубика, а затем вся структура вируса может быть построена по тому же правилу. Никакие особые инструкции для разных граней не требуются. Паттерн позволяет строить вирус быстро и рационально, что и делает его таким смертельно опасным.