Недавно я обсуждал с человеком, не являющимся кодовым, о возможностях шахматных компьютеров. Я не очень разбираюсь в теории, но думаю, что знаю достаточно.
Я утверждал, что не может существовать детерминированная машина Тьюринга, которая всегда выигрывала или играла в шахматы. Я думаю, что даже если вы просматриваете все пространство всех комбинаций движений player1/2, единственный ход, который компьютер решает на каждом шаге, основан на эвристике. Основываясь на эвристике, он не обязательно превзойдет ВСЕ движения, которые мог сделать противник.
Мой друг, напротив, подумал, что компьютер всегда будет побеждать или связываться, если он никогда не совершает "ошибку" (как бы вы это определили?). Тем не менее, будучи программистом, который взял CS, я знаю, что даже ваш хороший выбор - учитывая мудрого противника - может заставить вас совершить "ошибку" в конце. Даже если вы все знаете, ваш следующий шаг жадный в соответствии с эвристикой.
Большинство шахматных компьютеров пытаются сопоставить возможную конечную игру с текущей игрой, которая по сути является динамической трассировкой программирования. Опять же, эндшпиль, о котором идет речь, можно избежать.
Редактировать: Хм... похоже, я взъерошил здесь несколько перьев. Это хорошо.
Размышляя об этом снова, кажется, что теоретической проблемы с решением конечной игры, как шахматы, не существует. Я бы сказал, что шахматы немного сложнее, чем шашки в том, что победа не обязательно путем численного исчерпания кусков, а помощником. Мое первоначальное утверждение, вероятно, неверно, но опять же я думаю, что я указал на то, что еще не удовлетворительно доказано (формально).
Я думаю, мой мысленный эксперимент заключался в том, что всякий раз, когда берется ветка в дереве, тогда алгоритм (или запомненные пути) должен найти путь к помощнику (без совпадения) для любой возможной ветки на противном. После обсуждения я куплю, что с большей памятью, чем мы можем мечтать, все эти пути можно найти.