Длина человеческого генома - порядка 10
10 бит (очень примерно). От некоторого первосущества, снабженного сопоставимым по своему устройству генетическим аппаратом, до нас с вами прошло порядка 10
10 поколений (это еще более примерная оценка сверху). В каждом поколении на Земле обитало вполне конечное, ограниченное сверху число особей. Еще нам известно, что
генетический код - Тьюринг-полный язык программирования. Итого мы имеем некоторый генетический алгоритм (в том смысле, в котором это выражение понимается в computer science), единицами отбора в котором являются программы на некотором экзотическом Тьюринг-полном языке. Начиная с нуля, этот алгоритм за O(N) поколений ограниченной мощности дает на выходе программу длины N=10
10, обладающую интеллектом (если точнее, интеллектом обладает результат ее экспрессии, но для Тьюринг-полных языков это достаточно эфемерная разница). Тем, кто на практике занимался генетическими алгоритмами или даже computer science вообще, я думаю, не нужно объяснять степень недоумения, возникающую при осознании этого факта. Можно соотнести это, например, с теорией вычислительной сложности, да с
P-NP проблемой хотя бы.
Ну и на более школьном уровне, если вдуматься, дела тоже обстоят интересно. Каким бы набором генов ни был снабжен конкретный человек, он остается человеком - с двумя руками, двумя ногами и головой. Эта особь в любом случае может научиться ходить, говорить, а часто и думать - то есть, на макроуровне, основные признаки вида всегда присутствуют. И опять же на макроуровне он наследует признаки родителей. Как, черт побери, так получилось? Да простится мне глупая и очень misleading аналогия, но "среднее арифметическое" двух ехе-файлов не только не будет проявлять смешанное поведение, но вообще не будет валидным ехе-файлом.
Еще пять лет назад я бы с твердой уверенностью сказал, что никакие существующие генетические алгоритмы даже и близко не показывают ни такую эффективность, ни такую устойчивость "фенотипа" при сохранении Тьюринг-полноты. Может, я что-то пропустил, и за это время все изменилось?
На всякий случай, чтобы не было holy war. Весь этот вопрос не имеет отношения к спорам креационистов с эволюционистами. Пока что, насколько понимаю, между наиболее интеллигентными представителями спор идет между "а почему да" vs "а почему бы и нет"; о менее разумных спорщиках умолчим. Но здесь неважно, кто из них прав. Мы видим механизм, принцип работы которого, вне зависимости от его происхождения, во-первых, даже с точки зрения чистой computer science непонятен, а во-вторых, вполне можно пытаться reverse engineer'ить.
Теперь уже несколько месяцев пытаюсь изучать генетику с теорией эволюции (учебники пока что). В следующем посте на эту тему собираюсь написать о том, какие неинтуитивные с точки зрения программиста факты (при этом переводимые на computer science язык) о механизмах эволюции успел узнать.
А сейчас все-таки рискну написать о своих дилетантских ощущениях. Пока что складывается такое подозрение, что, объясняя развитие на макроуровне и вместе с тем устойчивость фенотипа, большая часть биологов довольствуется описанием на качественном уровне каких-то частных механизмов. Если перевести их на язык и в парадигму computer science, то совершенно фантастический итоговый результат оказывается не объяснен (хотя какие-то подсказки, безусловно, можно получить).