Здраствуйте. Когда-то давно придумал AI для шахмат. Потом, иногда, размышлял над ним, но не смог найти противоречия, что он не будет работать как задуман. Итак.
Создаем базу, в которой собраны все возможные расстановки всех возможных фигур на доске.
Создаем связи между расстановками, т.е. связь есть, если одну расстановку можно привести к другой с помошью одного
шахматного хода, иначе связи нет.
Делим связи на "ход черных" и "ход белых".
Проставляем очередность связей, приняв за первые связи все те, которые выходят из расстановки "начало шахматной партии" и удовлетворяют условию "ход белых".
В результате, если пройти по всем связям, с учетом очередности, чередуя условия "ход черных" и "ход белых" и начиная с расстановки "начало шахматной партии", то получим все возможные "партии".
Удаляем все следующие связи после связей, приводящие к концу игры, например, если при ходе одного цвета, королю другого цвета получается единственный ход — "под сруб" и он сам находится "под ударом". Трудновато придется с обработкой ничьи.
Начиная с конца партий, проставляем приорет на связи для черных и белых по принципу: если связь приводит к концу игры, то на неё ставится приоритет, равный 1, далее +1, на каждую предыдущую. Если проставляем приоритет на связь, на которой уже есть приоритет, то приоритеты суммируются.
Это построили базу ходов. Ходим с учетом приоритета — в ту сторону, где он меньше.
А если коротко, то просчитываем все возможные ходы заранее, а потом ходим по схеме. Всё.
Итак, вопрос: будет ли этот алгоритм всегда приводить к выигрышу или ничьей?
Спасибо за внимание.
... << RSDN@Home 1.0 beta 7a >>