Пока все идет хорошо, но эти “решения” и “выборы” кажутся лишь вроде как решениями и выборами. Такое впечатление, что им недостает чего-то, что свойственно подлинной свободе выбора: возможности поступить иначе. Но давайте внимательнее изучим конкретный пример, ведь внешность бывает обманчива. Для этого добавим в нашу турнирную программу третью шахматную программу, программу В. Допустим, программа В лучше программ А и Б и побеждает их почти всегда. Также допустим, что первые двенадцать ходов в паре таких партий в точности повторяются и программа В выигрывает обе партии, побеждая и программу А, и программу Б, но после двенадцатого хода партии идут не совсем одинаково. По завершении партий эксперты приходят к выводу, что программа В с большой вероятностью проиграла бы, если бы 12-м ходом, последним общим ходом обеих партий, программа А или программа Б провела бы рокировку. Рокировка 12-м ходом давала ключ к победе, который не заметила ни программа А, ни программа Б.
Пожимая плечами, разработчик программы А говорит: “Программа А могла бы провести рокировку”. Разработчик программы Б добавляет: “Моя программа, программа Б, тоже могла бы провести рокировку”.
Как минимум, мы можем обнаружить, что переключение единственного бита в генераторе (псевдо) случайных чисел заставило бы программу А провести рокировку. Допустим, разработчик программы А проанализирует фактическое исполнение программы и выяснит, что в этом случае программа А перестала “думать” на мгновение раньше нужного. (Любая шахматная программа, какой бы прекрасной она ни была, вынуждена в какой-то момент принудительно прерывать свои поиски.) Программа А рассматривала возможность рокировки и начала анализировать ее исход, но время поджимало, а потому программа А обратилась к своему генератору случайных чисел, то есть, по сути, подбросила монетку, и выбрала ход, который сочла лучшим на тот момент – и этим ходом стала не рокировка. Но если бы псевдослучайным числом стала единица, а не ноль, программа А подумала бы над своим ходом немного дольше и в итоге провела бы рокировку. “Просто переключите один бит в случайном числе – и программа А победит!” – заявляет разработчик. Мы же скажем, что в таком случае просчет программы А с рокировкой оказался непредвиденным результатом неудачного обращения к генератору случайных чисел.
Когда мы обратимся к разработчику программы Б, он не сможет подобным образом подтвердить свое заявление, что программа Б могла бы провести рокировку. Программа Б действительно “знает”, что рокировка в сложившейся ситуации допустима, и, возможно, даже некоторое время “рассматривала” возможность рокировки, но выбрать рокировку в этом случае даже не собиралась. Рокировка была для нее
Программа А могла провести рокировку в момент времени