Таким образом, легендарная программа Сэмюэла является прародителем не только разумного вида, ИИ, но также и его наиболее современной боковой ветви, ИЖ, Искусственной жизни. Хотя эта программа и легендарна, сегодня лишь немногие знакомы с примечательными подробностями ее появления, многие из которых заслуживают широкой известности287
. Первая программа игры в шашки была написана Сэмюэлем в 1952 году для IBM 701, но способная к обучению версия появилась лишь в 1955‐м и работала на IBM 704; более поздняя версия была написана для IBM 7090. Сэмюэл нашел изящный способ закодировать любое возможное положение фишек в шашках с помощью четырех тридцатишестибитных «слов», а любой ход – посредством простого арифметического действия с этими словами. (В сравнении с современными чрезмерно расточительными компьютерными программами объемом в мегабайты, простейшая программа Сэмюэла была микроскопической – подлинно «низкотехнологичным» геномом, состоящим менее чем из шести тысяч строк кода – однако в то время ему приходилось писать машинным кодом, ибо дни языков программирования еще не настали.) Решив проблему перевода процесса простой игры в шашки в «понятный» компьютеру вид, он встал перед поистине трудной задачей: как сделать так, чтобы компьютерная программа оценивала ходы и при каждом удобном случае могла выбрать наилучший (или, по крайней мере, один из лучших)?Как работала бы эффективная оценочная функция? У некоторых простейших игр наподобие крестиков-ноликов есть фактически осуществимые алгоритмические решения. Один из игроков обязательно победит или сыграет вничью, и наилучшую стратегию можно просчитать за обозримый период времени. Шашки – совсем другая игра. Сэмюэл указывал, что в пространстве возможных партий в шашки порядка 1040
точек выбора, «и если принимать три решения в миллимикросекунду, все равно потребуется 1021 веков, чтобы все их рассмотреть»288. Хотя современные компьютеры в миллионы раз быстрее, чем неуклюжие гиганты времен Сэмюэла, они все еще не способны приблизиться к решению этой задачи путем обстоятельного прямолинейного перебора вариантов. Пространство поиска Чрезвычайно велико, и потому следует применить «эвристический» метод: полуразумные, близорукие демоны должны безжалостно подрезать ветви раскидистого древа возможных ходов, оставив для рискованного, полного случайностей исследования лишь крошечную его часть.Эвристический поиск – одна из ключевых идей Искусственного интеллекта. Можно даже определить задачу данной исследовательской области как создание и исследование эвристических алгоритмов. Однако в информатике и математике существует и традиция, противопоставляющая
эвристические и алгоритмические методы: эвристические методы рискованны и, в отличие от алгоритмов, не гарантируют результатов. Как нам разрешить подобное «противоречие»? Противоречия вовсе нет. Как и все алгоритмы, эвристические алгоритмы – механические процедуры, которые обязательно достигают своей цели, но в их случае цель предполагает поиск, который вовсе не обязательно приведет к результатам! Нет гарантии, что они что-нибудь отыщут, или, по крайней мере, они далеко не обязательно отыщут то, что искали, в отпущенное на это время. Но, подобно хорошо организованным состязаниям в мастерстве, удачные эвристические алгоритмы обычно в обозримое время приводят к весьма интересным, надежным результатам. Дело это рискованное, но в случае хорошего алгоритма шансы весьма высоки. За них можно поручиться головой289. Неспособность осознать тот факт, что алгоритмы могут быть эвристическими процедурами, сбила с толку немало критиков Искусственного интеллекта. В частности, из‐за нее обманулся Роджер Пенроуз, взгляды которого станут темой пятнадцатой главы.