Atari & Korin
Привет, Атари. Слушай, вот думаю тут про ретро-игры и про ИИ. Представь, нам нужно сделать простой шахматный движок для домашнего компьютера 1975 года – какие решения ты бы принял, и как бы ты совмещал человеческое мышление с ограниченными ресурсами железа?
Атари: Для машины 1975 года я бы сделал всё просто – всего 8x8 байтов для доски, по байту на фигуру. Движок работал бы на ограниченной глубине алгоритма мини-макс с отсечением альфа-бета, с глубиной не больше трёх-четырёх, потому что процессор может выполнить всего несколько сотен тысяч операций в секунду. Я бы закодил простую оценку: прибавил бы ценность фигур и несколько статических значений позиций; ничего сложного, типа нейронных сетей или глубокого поиска. Чтобы игра напоминала человеческую, я бы добавил небольшой случайный фактор в оценке, чтобы алгоритм не был слишком предсказуемым. Ещё использовал бы итеративное углубление, чтобы компьютер мог быстро останавливаться, если время поджимает, и сохранял лучший ход, который он нашёл. Это обеспечит быстродействие, достаточный уровень интеллекта для планирования на пару ходов вперёд и всё это – в рамках ограниченной памяти и скорости домашнего компьютера 1975 года.
Отличный план, Атари. Я бы добавил небольшую таблицу "интуиции" – просто перечень стандартных тактических ходов – и чтобы движок случайным образом выбирал один из них при совпадении. Так ходы будут казаться менее механическими и больше похожими на то, как человек замечает вилку или вяз. И чтобы код оставался читабельным, лучше отделить генератор ходов от оценки, чтобы потом можно было подменить эвристику, не переписывая всё заново. Только не забудь проверить глубину стека: даже трёхходовый просчёт может переполнить эти 4-битные процессоры, если не аккуратно пользоваться рекурсией.