Алгоритм – это ряд последовательных шагов, который может использоваться для проведения расчетов, решения задач, принятия решений. Алгоритм – это не единичный расчет, а метод, которым руководствуются при расчетах. Например, если вам нужно найти среднее арифметическое двух чисел, вы используете простейший алгоритм. Алгоритм гласит: «Шаг первый: сложите два числа. Шаг второй: разделите результат на два». Если вы берете числа 4 и 8, то получаете 6. Если берете 117 и 231, получаете 174.

Более сложный пример – кулинарный рецепт. Алгоритм приготовления овощного супа может быть таким:

1. Разогрейте в кастрюле ½ чашки растительного масла.

2. Нарежьте тонкими кольцами 4 луковицы.

3. Поджарьте лук до золотистого цвета.

4. Нарежьте кубиками 3 картофелины и добавьте в кастрюлю.

5. Мелко нарежьте капусту и добавьте в кастрюлю.


И так далее. Вы можете следовать этому алгоритму сотни раз, кладя каждый раз немного другие овощи и получая немного другой суп. Однако алгоритм остается тем же.

Суп сам по себе по рецепту не сварится. Кто-то должен прочитать рецепт и выполнить прописанный в нем порядок действий. Но можно построить машину, которая содержит в себе этот алгоритм и следует ему автоматически. Тогда остается обеспечить машину водой, электричеством и овощами – и она самостоятельно сварит суп. Суповые автоматы не встречаются на каждом шагу, но вам наверняка знакомы вендинговые автоматы, продающие напитки. Они обычно снабжены щелью для монет, окошком для чашек и рядами кнопок. В первом ряду есть кнопки для заказа кофе, чая и какао. Второй ряд имеет пометки: без сахара, одна ложка сахара, две ложки сахара. Третий ряд предлагает на выбор: молоко, соевое молоко, без молока. Человек подходит к автомату, опускает монету в щель и нажимает кнопки с пометками «чай», «одна ложка сахара» и «молоко». Автомат четко соблюдает последовательность операций. Он кладет в чашку чайный пакетик, подсыпает ложку сахара и доливает молоко. Дзынь! – чудесная чашечка чая готова. Это алгоритм[79].

В последние несколько десятилетий биологи пришли к твердому заключению, что человек, нажимающий на кнопки и пьющий чай, – тоже алгоритм. Гораздо более сложный, разумеется, чем вендинговый автомат, но алгоритм. Люди – это алгоритмы, производящие не чашечки чая, а реплики самих себя (наподобие вендингового автомата, который, при соответствующем наборе клавиш, производит другой вендинговый автомат).

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

По существу, это математическая проблема вычисления и сопоставления вероятностей: вероятности, что павиан умрет с голода, если не поест, и вероятности, что на павиана нападет лев. Чтобы решить эту проблему, павиан должен учесть множество обстоятельств. Далеко ли я от бананов? Далеко ли от меня лев? Насколько я проворен? Насколько проворен лев? Спит лев или не спит? Сытый у него вид или голодный? Сколько там бананов? Большие они или маленькие? Зеленые или спелые? Помимо этих внешних обстоятельств, павиан также должен принять в расчет информацию о своем внутреннем состоянии. Если он очень давно голодает, то имеет смысл рвануть сломя голову за этими бананами, и будь что будет. Если же он недавно поел и сейчас для него бананы – чистое баловство, зачем вообще рисковать?