Та сторона вещей, которая имеет отношение к программному обеспечению, так называемые генетические алгоритмы, могут помочь решить сложнейшие проблемы, поставив себе на службу силу эволюции. Если вкратце: генетические алгоритмы моделируются компьютерными командами, которые связываются программистами воедино, как индивидуальные «гены» вместе образуют цифровые «хромосомы». Программист может начать проверять примерно десяток программ. Он кодирует команды генов в двоичном коде и объединяет их в одну длинную последовательность, подобную хромосоме (0001010111011101010…). Затем начинается самое интересное. Программист запускает каждую программу, оценивает ее и подвергает лучшие программы «кроссоверу» – обмену цепочками нулей и единиц, подобно тому, как хромосомы обмениваются ДНК. Далее программист запускает эти гибридные программы и оценивает уже их. На этом этапе лучшие из программ снова подвергаются кроссоверу и обмениваются нулями и единицами. Процесс повторяется снова и снова, позволяя программам развиваться. Эпизодические мутации – обмены нулей на единицы или наоборот – приносят большее разнообразие. В конце концов, генетические алгоритмы объединяют лучшие «гены» из самых разных программ в одну, близкую к оптимальной. Даже если в начале иметь дело с самыми отсталыми программами, генетическая эволюция автоматически улучшит их, и они сфокусируются на лучших образцах.
Если говорить о компьютерах (приравнивая к ним и человеческий мозг), ДНК когда-нибудь может заменить или дополнить кремниевые транзисторы и физически выполнять расчеты. Можно вспомнить известную историю о том, как ДНК использовалось для решения классической проблемы коммивояжера. В этой головоломке, напомним, коммивояжер вынужден проехать, допустим, по восьми городам, разбросанным по всей карте. Он должен посетить каждый город лишь однажды, но, покинув один город, он не может прибыть в него еще раз, даже не может пересечь свой путь в любом другом месте. К несчастью, дороги между городами очень запутаны, так что определить правильный порядок посещения не так-то и легко.
Чтобы увидеть, как ДНК может решить эту задачу, приведем гипотетический пример. В первую очередь нужно взять два одноцепочечных набора фрагментов ДНК. Первый набор будет представлять собой восемь городов, которые нужно посетить, и его отрезки могут обозначаться случайными последовательностями А – Ц – Г – Т: например, Су-Фолс может быть А – Г – Ц – Т– А – Ц – А – Т, а Каламазу – Т – Ц – Г – А – Ц – А – А – Т. Для второго набора будем использовать карту. Каждая дорога между двумя городами получает свой фрагмент ДНК. Однако – и в этом суть – эти фрагменты мы будем распределять не случайным образом, а поступим умнее. Допустим, шоссе № 1 начинается в Су-Фолс и заканчивается в Каламазу. Если вы используете первую половину фрагмента дороги, меняя местами А с Т и Ц с Г в половине букв, которыми шифруется Су-Фолс, а во второй половине этого фрагмента проделаете ту же операцию со знаками, принадлежащими Каламазу, то шоссе № 1 свяжет два города:
После такого же кодирования каждой из оставшихся дорог и городов начинаются собственно расчеты. Смешиваем в пробирке все эти фрагменты ДНК, хорошенько встряхиваем – и, вуаля, получаем ответ. Так в пробирке отыщется более длинная цепочка ДНК, теперь уже двуспиральная, со всеми восемью городами на одной цепочке, в том порядке, в котором нужно посетить города, а на комплементарной цепи окажутся все дороги в правильном порядке.
Конечно, ответ будет записан в биологическом эквиваленте машинного кода (ГЦГАГАЦГТАЦГААТЦЦ…) и будет нуждаться в расшифровке. И в то время как пробирка содержит много копий правильного ответа, свободно плавающая ДНК неуправляема, а кроме нее в пробирке содержатся триллионы неправильных решений – решений, согласно которым придется возвращаться в города, или не посещать какой-либо из городов, или бесконечно кружиться между двумя городами. Кроме того, выделение правильного ответа, очистка «правильной» цепочки ДНК потребует целой недели монотонной работы в лаборатории. Конечно, до участия в шоу для эрудитов, например в «Своей Игре», ДНК-компьютеру далеко… Однако можно понять людей, получающих удовольствие от всей этой рутины. Один грамм ДНК вмещает содержимое триллиона компакт-дисков. Если бы наши ноутбуки вмещали такой объем информации, они бы были подобны старым добрым компьютерам-мастодонтам, в одиночку занимавшим огромные комнаты. К тому же эти «ДНК-транзисторы» могут одновременно осуществлять расчеты с гораздо более высокой скоростью, чем цепочки кремниевых транзисторов. Возможно, лучшие из всех «ДНК-транзисторы» могут собирать и копировать самих себя при минимальных затратах.
Читать дальше
Конец ознакомительного отрывка
Купить книгу