Книга: Насосы интуиции и другие инструменты мышления
Назад: 25. Виртуальные машины
Дальше: 27. Автоматизация лифта

26. Алгоритмы

В книге “Опасная идея Дарвина” (1995а) я предложил такой взгляд на великую идею Дарвина:
Жизнь на Земле рождалась на протяжении миллиардов лет посредством ветвления единственного древа – Древа жизни – под воздействием тех или иных алгоритмических процессов.
И что же такое алгоритм? Существует несколько конкурирующих определений этого термина, и мое, пожалуй, самое широкое. Далее следует переработанный фрагмент моей книги.
Дарвин открыл силу алгоритма. Алгоритм – это формальный процесс определенного типа, который должен – по идее – выдавать определенный результат всякий раз, когда он “запущен” или инстанцирован. Алгоритмы нам не в новинку. Они не были в новинку и во времена Дарвина. Многие знакомые арифметические операции, например деление в столбик и сведение баланса, на самом деле представляют собой алгоритмы. Алгоритмами также являются процедуры принятия решений при игре в крестики-нолики и расстановке слов по алфавиту. Относительно новыми можно назвать теоретические рассуждения математиков и логиков двадцатого века о природе и силе алгоритмов в целом – именно эти рассуждения позволили нам в ретроспективе оценить открытие Дарвина и привели к рождению компьютера, которое, в свою очередь, привело к еще более глубокому и осмысленному пониманию силы алгоритмов в целом.
Термин “алгоритм” восходит через латынь (algorismi) и раннеанглийский (algorism и ошибочной производной algorithm) к имени персидского математика Аль-Хорезми, в девятом веке написавшего книгу об арифметических операциях, которая в одиннадцатом веке была переведена на латынь либо Аделардом Батским, либо Робертом Честерским. Представление об алгоритме как надежной и в некоторой степени “механической” процедуре существовало веками, но в современной трактовке термин более или менее закрепился в 1930-х гг., когда его использовали в своей новаторской работе Алан Тьюринг, Курт Гёдель и Алонзо Черч. Нам важны три ключевых свойства алгоритмов, причем дать каждому из них определение непросто.

 

(1) Нейтральность носителя. Процедура деления в столбик одинаково хорошо работает при использовании карандаша и ручки, бумаги и пергамента, неоновых огней и конденсационного следа самолета. Система символов может быть любой. Сила процедуры объясняется ее логической структурой, а не особенностями материалов, используемых при инстанцировании, при условии, что эти особенности позволяют в точности следовать пошаговой инструкции.

 

(2) Подспудная простота. Хотя общая схема процедуры может быть блестящей или давать блестящие результаты, каждый из шагов и переходы между шагами предельно просты. Насколько просты? Достаточно просты, чтобы с ними справился прилежный идиот – или нехитрое механическое устройство. Как правило, в учебниках алгоритмы сравниваются с рецептами, созданными для кулинаров-новичков. В кулинарной книге для умелых поваров может быть написано: “Припустите рыбу в подходящем вине почти до готовности”, – но алгоритм того же процесса, возможно, начнется так: “Выберите белое вино с маркировкой «сухое»; возьмите штопор и откройте бутылку; налейте вино в кастрюлю до уровня в два с половиной сантиметра от дна; включите конфорку под кастрюлей на полную мощность…” Иначе говоря, алгоритм дотошно разбивает процесс на предельно простые шаги, не требуя от его исполнителя ни принимать сложные решения, ни выносить осторожные суждения, ни применять интуицию.

 

(3) Гарантия результатов. Что бы ни делал алгоритм, он делает это всегда, если в процессе его исполнения не происходит ошибок. Алгоритм – это надежный рецепт.

 

Вполне очевидно, как эти свойства сделали возможным появление компьютера. Любая компьютерная программа представляет собой алгоритм, в конечном счете состоящий из простых шагов, которые могут с поразительной безотказностью исполняться тем или иным простым механизмом. Обычно выбор падает на электронные схемы, но каузальные особенности электронов, шныряющих туда-сюда по кремниевым чипам, никак не влияют на силу компьютеров (хотя и могут влиять на скорость их работы). Те же самые алгоритмы могут исполняться даже быстрее устройствами, которые манипулируют фотонами в оптоволокне, или – гораздо медленнее – командами людей, использующими бумагу и карандаш.
Фактически Дарвин открыл не один алгоритм, а целый класс родственных алгоритмов, которые он не мог однозначно отличить друг от друга.
Назад: 25. Виртуальные машины
Дальше: 27. Автоматизация лифта