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