Напротив, компьютеры, способные составить конкуренцию чемпиону мира по шахматам, появились только в 1997 году, через 30 лет после обещанного командой из Университета Карнеги — Меллона срока, — и это при том, что вычислительная мощность компьютеров удваивалась примерно каждые два года согласно закону Мура. Их сенсационный «сверхумный» алгоритм быстро показал свою неработоспособность, и было неясно, каким путем следовать дальше. Шахматы оказались слишком сложной игрой, компьютеры — чересчур медленными. Если бы в 1960-е годы на разработку шахматных программ потратили на несколько миллионов человеко-часов больше, это привело бы к впечатляющим успехам в области программирования и разработки аппаратного обеспечения, но компьютерное оборудование, способное хранить достаточные объемы информации и выполнять сложные программы с достаточно высокой скоростью, чтобы играть на уровне гроссмейстеров, стало доступным только в 1980-х.
Создание такой шахматной программы к 1967 году было делом немыслимым и вряд ли удалось бы к 1977-му, даже если бы на него израсходовали сумму, эквивалентную бюджету NASA. Суперкомпьютер Cray-1, установленный в Лос-Аламосской национальной лаборатории в 1976-м, был самым мощным компьютером в мире со скоростью 160 млн операций в секунду (160 мегафлопсов). Сравним это с программой Deep Junior, с которой я сыграл вничью в 2003 году. Она работала на компьютере с четырьмя процессорами Pentium 4, каждый из которых функционировал примерно в 20 раз быстрее, чем суперкомпьютер Cray-1, и играла не хуже и даже лучше{16}
, чем требовавшая использования специализированного оборудования Deep Blue в 1997-м.Дело было не в скорости: просто Deep Blue перебирала в среднем в 50 раз больше позиций в секунду, чем Deep Junior, — 150 млн против 3 млн. Но техническая скорость — только один из факторов шахматной силы машины. Чтобы получить максимальную отдачу от аппаратного обеспечения, в первую очередь необходимо иметь эффективную программу. Как показали усилия нескольких поколений шахматных программистов, начиная с 1970-х годов, уровень шахматных способностей программы тем выше, чем чаще происходит ее оптимизация и чем «умнее» процедуры поиска.
Когда же программисты добавляют в алгоритм поиска различные элементы, связанные с шахматной спецификой, приходится искать компромиссное решение. Самые простые шахматные программы должны понимать, например, что такое мат и какова относительная ценность фигур. Если вы научите машину, что и ладья и слон стоят трех пешек — тогда как ладья в действительности сильнее слона, — она не станет сильным игроком. Компьютеры очень хорошо и быстро справляются с подсчетом материала и узнают, у кого больше фигур на доске, а программистам не нужно глубоко разбираться в шахматах, чтобы правильно присвоить фигурам стандартные значения.
Далее следуют более абстрактные шахматные знания: надо понимать, кто контролирует больше пространства на доске, как расположены пешки, находится ли король в безопасности и т. п. Каждый раз, когда вы даете компьютеру новую информацию для оценки хода, поиск замедляется. Короче говоря, шахматная программа может быть либо быстрее и глупее, либо медленнее и умнее. Найти баланс непросто, и потребовались десятилетия, чтобы создать машины, которые были бы достаточно умными и достаточно быстрыми для того, чтобы бросить вызов сильнейшим шахматистам мира.
Хотя первоначальные прогнозы не оправдались, на протяжении следующих 20 лет в компьютерных шахматах наблюдался устойчивый прогресс. Неумолимое развитие вычислительных мощностей по закону Мура и достигнутые методом проб и ошибок успехи в программировании привели к созданию в 1977 году шахматных машин, способных играть на экспертном уровне — то есть так, как играют лучшие 5 % шахматистов. Компьютеры по-прежнему делали множество вопиюще нелогичных ходов, которые никогда бы не сделал даже слабый игрок. Но они стали достаточно быстрыми для того, чтобы компенсировать эти случайные промахи грамотной обороной и выверенной тактикой.
Увеличение скорости работы аппаратного обеспечения было только одним из факторов прогресса. Значительную роль сыграли более совершенные программы, ускоряющие процесс поиска. Был разработан алгоритм «альфа-бета», который позволял программам быстрее отсекать слабые ходы и глубже просчитывать остальные. Он представлял собой улучшенную версию алгоритма «минимакс», описанного Шенноном как стратегия типа A, или метод грубой силы. Программы, которые использовали «альфа-бета», отвергали любой ход, получавший более низкую оценку, чем уже рассмотренный. Благодаря этому ключевому усовершенствованию и другим изменениям программы типа A стали доминировать над программами типа Б. Эффективное использование грубой силы перевешивало любую попытку сымитировать человеческое мышление и интуицию в шахматной машине. Некоторые шахматные знания были необходимы, но важнейшим условием победы являлась скорость.