Мат.модель шахмат
Уважаемые участники форума, помогите мне с поиском и выбором алгоритма для создания ИИ к шахматам (можно на Си или Java, но с коментариями).
К сожалению на и С не писал. Писал давно в универе на Паскале. Могу описать общие принципы.
1. Нужна оценочная функция. Это пожалуй самое сложное - нельзя тупо сравнивать материально (иногда и без Ферзя позиция лучше). Нужно брать во внимание владение линиями и диагоналями, пространственный перевес и т.д.
2. Функция перебора ходов строит дерево с оценками в вершинах. Считает до определенно заданной глубины (скажем 8 полуходов). Плюс (если хочешь что бы прога играла посильнее) в последней вершине запускай ФОРСИРОВАННЫЙ ВАРИАНТ (ФВ) на 3 или более полуходов (ФВ - все взятия и шахи на первом ходу). Можно на 2-4 полухода. Тогда вероятность тупых зевков уменьшится.
3. Если честно - все это будет работать медленно. По крайней мере у меня так было. Однако есть способ ускорить - обрезать заведомо плохие ветви - это делается по результатам оценочной функции. При обрезании можно также запускать ФВ.
4. Для простоты реализации советую оценивать позицию относительно белых (это разумно, если у белых оценка +0.8 то у ченых соответсвенно -0.8).
5. И вообще - поисчи в нете статьи Е.Я. Гика - очень многое я почерпнул именно из его материалов.
6. Да. В начале научи прогу просто находить все возможные ходы, понимать шах и мат. Так легче будет тестить остальное.
1. Нужна оценочная функция. Это пожалуй самое сложное - нельзя тупо сравнивать материально (иногда и без Ферзя позиция лучше). Нужно брать во внимание владение линиями и диагоналями, пространственный перевес и т.д.
2. Функция перебора ходов строит дерево с оценками в вершинах. Считает до определенно заданной глубины (скажем 8 полуходов). Плюс (если хочешь что бы прога играла посильнее) в последней вершине запускай ФОРСИРОВАННЫЙ ВАРИАНТ (ФВ) на 3 или более полуходов (ФВ - все взятия и шахи на первом ходу). Можно на 2-4 полухода. Тогда вероятность тупых зевков уменьшится.
3. Если честно - все это будет работать медленно. По крайней мере у меня так было. Однако есть способ ускорить - обрезать заведомо плохие ветви - это делается по результатам оценочной функции. При обрезании можно также запускать ФВ.
4. Для простоты реализации советую оценивать позицию относительно белых (это разумно, если у белых оценка +0.8 то у ченых соответсвенно -0.8).
5. И вообще - поисчи в нете статьи Е.Я. Гика - очень многое я почерпнул именно из его материалов.
6. Да. В начале научи прогу просто находить все возможные ходы, понимать шах и мат. Так легче будет тестить остальное.
DeuSeX, примеры шахматных программ с исходниками и коментариями есть в инете. Также с Borland C раньше поставлялся такой пример. Важный вопрос - для какой цели нужен алгоритм? Если это просто учебная программа, то надо найти что-нибудь готовое. Если планируется создание нормальной программы, то тут уже важна ваша шахматная квалификация (или квалификация консультанта), так как потребуются библиотеки дебютов, эндшпилей и т.п.
*provided AS IS
Прошу прощения за анонимность, пост гостя мой, просто забыл залогиниться
Сорри, но вот на счет исходников помочь не могу - погибли вместе со старым хардом.. Согласен с Andy - в нете хватает примеров - посмотри, может что и пригодится. Но лично я бы писал сам - интереснее. А на счет дебютных библиотек - уже есть мрого готовых баз со своим форматом. Надо только научится его читать.
Удачи, надеюсь ты вдохновился!
Удачи, надеюсь ты вдохновился!
Спасибо за поддержку. Если слчайно встретите что-нибудь в тему прошу дать ссылочку :roll: , а пока постараюсь сам что-нибудь соорудить .