Шрифт:
Интервал:
Закладка:
Несмотря на первое разочарование, Ботвинник не был намерен сдаваться — предмет исследований решительно увлёк его. Ознакомившись с принципами работы ранних шахматных программ, он выдвинул ряд нетривиальных идей. Первой стало замечание о том, что шахматные программы ведут перебор вариантов, не имеющих определённой цели. Программа обрывает перебор варианта механически, достигая его максимальной длины, в то время как анализ варианта шахматным мастером обычно завершается позицией, в которой была достигнута или не достигнута изначально сформулированная промежуточная цель. В качестве такой промежуточной цели Ботвинник предлагал использовать выигрыш материала (т. е. фигур или пешек). Соответственно, идея в общих чертах заключалась в том, чтобы анализировать варианты, представляющие собой траектории перемещения атакующих фигур и «фигур-мишеней».
В 1965 г. во время визита в Москву Клода Шеннона, ставшего к тому времени знаменитостью среди советских математиков, Ботвинник встретился с американским учёным и сыграл с ним партию в шахматы[749]. Переводчиком на этой встрече был Лотфи Заде — американский математик и логик азербайджанского происхождения, автор термина «нечёткая логика» и один из основателей теории нечётких множеств. Москва 1965-го была полна американских информатиков.
Рис. 71. Встреча Шеннона (за шахматной доской слева) и Ботвинника (за шахматной доской справа), 1965 г.
Вот как вспоминал сам Ботвинник состоявшийся между ними диалог: «Цель игры — выигрыш материала. Это хорошо, — сказал Заде. — Но ведь целей и траекторий, по которым можно пробиться к этим целям, превеликое множество! Как же вы собираетесь ограничить информацию об этом?..
Я сказал Заде, что давно уже об этом думаю, даже знаю, как назвать это ограничение — „горизонт“ (Заде одобрил термин), но ещё его не формализовал…»[750]
Идея траекторий всерьёз увлекла Ботвинника. Вскоре он дал формальное определение «горизонта» (не путать с «эффектом горизонта»!) как предельно допустимого времени (в полуходах), которое дано для взятия неприятельской фигуры. Статья Ботвинника с описанием его идей после долгих споров была опубликована в «Бюллетене Центрального шахматного клуба СССР» в порядке обсуждения[751]. Идеи Ботвинника встретили достаточно жёсткую оппозицию со стороны математиков и программистов. Позже в своих воспоминаниях Михаил Донской назовёт поставленную Ботвинником задачу научить компьютер мыслить как человек безумной и неконструктивной[752]. Градус споров был вполне понятен — речь шла о том, на что следует расходовать машинное время, ценившееся в те годы на вес золота. Недостаточно формализованные идеи Ботвинника вызывали раздражение у большинства программистов: им было понятно, что для того, чтобы превратить идеи Ботвинника в чёткий алгоритм и работающий машинный код, нужно потратить много времени и сил, причём положительный исход этого вовсе не гарантирован.
Впрочем, сам Ботвинник был полон энтузиазма. Вот как вспоминает свою первую встречу с ним будущий двенадцатый чемпион мира по шахматам Анатолий Карпов:
На первом же занятии он как бы между прочим сообщил нам, что начал работать над шахматной программой для ЭВМ, которая через несколько лет начнёт обыгрывать не только мастеров, но и гроссмейстеров, а со временем не оставит шансов и чемпиону мира. Говорил он спокойно, убеждённо и аргументированно. Мы — дети — поняли только одно: мэтр сошёл с дистанции, но вместо себя готовит бездушного шахматного киборга, который расправится со всеми и снова возвысит имя своего создателя. Шокированные, мы на несколько секунд притихли, а мастер, заметив произведённое впечатление, окинул нас сильным, холодным и уверенным взглядом и сказал:
— Не волнуйтесь, ребята! Сама по себе моя машина не заработает. В неё надо вдохнуть жизнь, вложить душу, а сделать это смогут только талантливые шахматисты — программисты. Вот вы и будете первыми[753].
В 1968 г. в издательстве «Наука» вышла книга Ботвинника, название которой — «Алгоритм игры в шахматы» — звучало как ответ критикам, однако, вопреки заголовку, книга не содержала законченного алгоритма шахматной программы. В предисловии к английскому изданию книги её переводчик Артур Браун, научный обозреватель газеты The New York Times, высказался о содержании следующим образом: «Я думаю, что эта книга является фундаментальной [seminal] работой. Как и все начала [seeds], она компактна, безотлагательна [urgent] и загадочна [cryptic]»[754]. Впрочем, в среде математиков и программистов нашлись и те, кто по крайней мере с осторожным энтузиазмом встретил идеи Ботвинника. К ним относились, например, выступивший в роли редактора книги уже знакомый нам Николай Криницкий[755], соавтор Анатолия Китова, а также новосибирский программист Владимир Бутенко, позже создавший собственную шахматную программу «Эврика»[756].
В числе тех, кто проявил интерес к идеям Ботвинника, был также член-корреспондент АН СССР Алексей Ляпунов, один из основоположников кибернетики, который пригласил Ботвинника выступить на семинаре в Новосибирском государственном университете. Вот что пишет об этой истории сам Ботвинник:
Каким образом узнал Алексей Андреевич о моей работе по шахматной программе — не знаю, скорей всего, от нашего общего друга Н. А. Криницкого. После того как в 1968 году вышла книжка «Алгоритм игры в шахматы», Ляпунов прислал письмо, где настаивал, чтобы я сделал доклад на его семинаре.
Это было весьма неожиданно. Большинство математиков относилось к моей работе с вполне обоснованным скепсисом: личность как шахматиста-профессионала, так и «электротехника-любителя» казалась им неподходящей для исследований в области кибернетики, а необычные идеи — более чем сомнительными. Лишь профессор Криницкий занимал чёткую и благожелательную позицию, но сколько часов мы затратили с ним на жаркие споры, прежде чем стали единомышленниками!.. И вот сам Ляпунов приглашает приехать в Новосибирск!
Доклад на семинаре был в сентябре 1969 года.
Дальнейшее развитие идей Ботвинника было связано (во многом под влиянием замечаний Ляпунова, сделанных им на семинаре) с введением понятия зоны игры[757]. Она включала в себя атакующую фигуру (для неё был придуман специальный термин — «комлевая», «комель» — это часть растения, рога, пера или волоса, прилегающая к корню), перемещающуюся по комлевой траектории с целью забрать фигуру-мишень, а также две команды «отрицающих фигур», действующих по «траекториям отрицания» и старающихся соответственно помочь либо помешать комлевой фигуре выполнить её задачу.
Как и в случае со многими другими эвристиками, расставить точки над i при оценке разумности применения эвристики может только вычислительный эксперимент. Конечно, при скрупулёзном анализе эвристик Ботвинника у программиста-практика неизбежно возникнет ряд вопросов. Например: если вариант в усечённом дереве игры заканчивается взятием фигуры-мишени, можем ли мы быть уверены в стабильности терминальной позиции? Что, если за этим взятием следует ответное взятие фигуры или даже хуже — мат? Как быть, если комлевая фигура в процессе перемещения по своей траектории перестала, например, защищать другую фигуру, будет ли взятие этой фигуры противником включено в зону игры? Работы Ботвинника не содержат ответов на эти