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