происхождение видов – и сулят множество других объяснений. Благодаря как упорной критике откровенных ненавистников идеи эволюции как алгоритма, так и опровержениям ее поклонников, такие формулировки становятся все точнее.
5. Процессы как алгоритмы
Размышляя об алгоритмах, теоретики часто подразумевают виды алгоритмов, обладающих свойствами, которых лишены алгоритмы, интересующие нас. Например, когда об алгоритмах размышляют математики, они обычно имеют в виду алгоритмы, относительно которых можно доказать, что они полезны при вычислении конкретных интересующих их математических функций. (Простой пример тому – деление в столбик. В причудливом мире криптографии внимание привлекает разложение большого числа на простые множители.) Но алгоритмы, которые будут интересовать нас, не имеют ничего особенно общего с системой счисления или иными математическими объектами; это алгоритмы классификации, отсева и созидания62.
Поскольку большинство математических обсуждений алгоритмов сосредоточено на их гарантированной или математически доказанной эффективности, люди иногда допускают простейшую ошибку, считая, что процесс, эксплуатирующий случайность или беспорядочность, алгоритмом не является. Но даже при делении в столбик есть место случайности!
Помещается ли делитель в делимом шесть, семь или восемь раз? Как знать! Да и кому это интересно? Этого и не нужно знать: для того чтобы делить в столбик, большого ума не надо. Алгоритм просто требует, чтобы вы выбрали число – любое, если вам угодно, – и проверили результат. Если избранное число слишком мало, увеличьте его на единицу и начните заново; если оно слишком велико – уменьшите. Относительно деления в столбик можно быть уверенным в одном: оно всегда в конечном счете получается, даже если ваш первоначальный выбор максимально неудачен (в этом случае процесс просто займет немного больше времени). Компьютеры успешно решают сложные задачи несмотря на крайнюю глупость – и именно потому кажутся волшебным изобретением: как что-то настолько безмозглое, как машина, может делать что-то настолько толковое? Итак, не вызывает удивления то, сколь часто интересные алгоритмы используют тактику уточнения выбора, механически проверяя каждого взятого наугад кандидата. Это не только не влияет на их доказуемую эффективность – зачастую именно в этом секрет их эффективности63.
Для начала можно сосредоточиться на группе эволюционных алгоритмов, рассмотрев повседневные алгоритмы, обладающие теми же важными особенностями. Дарвин привлекает наше внимание к повторяющимся волнам соперничества и отбора, так что возьмем обычный алгоритм организации турнира с выбыванием (например, теннисного), который неизбежно венчается четвертьфиналами, полуфиналами и, наконец, финалом, в ходе которого определяется единственный победитель.
Заметим,