В информатике, как и в жизни, часто встречается простая задача: найти конкретный элемент, выбрав его из множества вариантов. Рассмотрим задачу коммивояжера: имея список городов и расстояний между ними, нужно проложить между этими городами кратчайший маршрут, на котором каждый город будет встречаться только один раз. Задачу можно перефразировать. Возьмём список городов и расстояний между ними. Далее сделаем новый список, перечислив в нём все возможные маршруты, по которым коммивояжер заходит в каждый город как минимум один раз (это будет невероятно длинный, но всё-таки конечный список). Какой маршрут будет кратчайшим?
Таким образом, фокус не в том, чтобы найти первый попавшийся поисковый алгоритм, — нужно найти эффективный. Очень часто число вариантов так велико, что мы с радостью останавливаемся на «неплохих» решениях, не доискиваясь абсолютно точных.
Естественный отбор можно сравнить с поисковым алгоритмом. Эволюция решает следующую задачу: какой организм сможет наиболее эффективно размножаться и выживать в данной конкретной среде? Только поиск охватывает не организмы как таковые, а их геномы либо конкретные нуклеотидные последовательности в нити ДНК. В человеческом геноме содержится около трёх миллиардов нуклеотидов. Это много по сравнению, скажем, с бактериальным геномом, где насчитывается лишь несколько миллионов нуклеотидов. Но давайте не будем задаваться: у некоторых цветковых растений в ДНК имеется более 100 миллиардов пар нуклеотидных оснований. Некоторым организмам удастся выжить и размножиться, другим — нет. Однако как среди многих поколений найти такие последовательности ДНК, которые повышают шансы организма на выживание?
С вычислительной точки зрения эта проблема считается сложной. Каждый из трёх миллиардов наших нуклеотидов может соответствовать одной букве: А, Ц, Г или Т. Общее число возможных комбинаций в ДНК такого размера, как у человека, составляет не четырежды три миллиарда (что было бы ещё не так плохо), а четыре
Эволюция обеспечивает стратегию поиска хорошо приспособленных геномов в невероятно большом пуле возможностей. Недавно учёные-информатики продемонстрировали, что упрощённая модель эволюции (допускающая смешивание генов путём полового размножения, но не учитывающая мутаций) математически эквивалентна одному алгоритму, разработанному специалистами по теории игр много лет назад. Этот алгоритм называется
Формулировка «поисковый алгоритм» не подразумевает, что кто-то написал алгоритм и задал для эволюции цель, к которой нужно стремиться. Эволюция не достигает никаких целей, она просто происходит с лапласовским бесстрастием, шаг за шагом. В духе поэтического натурализма поисковый алгоритм можно понимать просто как полезный способ рассуждения об эволюционном процессе. В подходящих обстоятельствах они формально равны с математической точки зрения, и эта связь заставляет нас интуитивно обманываться. Однако язык — всего лишь язык, это ещё не повод считать, что существует некая сила, направляющая ход эволюции или заблаговременно задающая цели для неё; кроме того, не бойтесь и существования некой силы, якобы мешающей вам правильно понимать слова, которые позволили бы осознать истинную сущность процесса эволюции.
* * *