Общее название фигур и пешек в шахматах. Как ходят фигуры в шахматах

💖 Нравится? Поделись с друзьями ссылкой

Читаемого Andrew Ng на Курсере. После знакомства с методами, о которых рассказывалось на лекциях, захотелось применить их к какой-нибудь реальной задаче. Долго искать тему не пришлось - в качестве предметной области просто напрашивалась оптимизация собственного шахматного движка.

Вступление: о шахматных программах

Не будем детально углубляться в архитектуру шахматных программ - это могло бы стать темой отдельной публикации или даже их серии. Рассмотрим только самые базовые принципы. Основными компонентами практически любого небелкового шахматиста являются поиск и оценка позиции .

Поиск представляет собой перебор вариантов, то есть итеративное углубление по дереву игры. Оценочная функция отображает набор позиционных признаков на числовую шкалу и служит целевой функцией для поиска наилучшего хода. Она применяется к листьям дерева, и постепенно «возвращается» к исходной позиции (корню) с помощью альфа-бета процедуры или её вариаций.

Строго говоря, настоящая оценка может принимать только три значения: выигрыш, проигрыш или ничья - 1, 0 или ½. По теореме Цермело для любой заданной позиции она определяется однозначно. На практике же из-за комбинаторного взрыва ни один компьютер не в состоянии просчитать варианты до листьев полного дерева игры (исчерпывающий анализ в эндшпильных базах данных - это отдельный случай; 32-фигурных таблиц в обозримом будущем не появится… и в необозримом, скорее всего, тоже). Поэтому программы работают в так называемой модели Шеннона - пользуются усечённым деревом игры и приближённой оценкой, основанной на различных эвристиках.

Поиск и оценка не существуют независимо друг от друга, они должны быть хорошо сбалансированы. Современные переборные алгоритмы давно уже не являются «тупым» перебором вариантов, они включают в себя многочисленные специальные правила, связанные в том числе и с оценкой позиции.

Первые такие усовершенствования поиска появились ещё на заре шахматного программирования, в 60-х годах XX в. Можно упомянуть, например, технику форсированного варианта (ФВ) - продление отдельных ветвей поиска до тех пор, пока позиция не «успокоится» (закончатся шахи и взаимные взятия фигур). Продления существенно увеличивают тактическую зоркость компьютера, а также приводят к тому, что дерево поиска становится очень неоднородным - длина отдельных ветвей может в несколько раз превышать длину соседних, менее перпективных. Другие улучшения поиска, наоборот, представляют собой отсечения или сокращения поиска - и здесь критерием отбрасывания плохих вариантов может, в числе прочего, служить всё та же статическая оценка.

Параметризация и улучшение поиска методами машинного обучения - отдельная интересная тема, но сейчас мы оставим её в стороне. Займёмся пока только оценочной функцией.

Как компьютер оценивает позицию


Статическая оценка представляет собой линейную комбинацию различных признаков позиции, взятых с некоторыми весовыми коэффициентами. Какие это признаки? В первую очередь, количество фигур и пешек у той и другой стороны. Следующий важный признак - положение этих фигур, централизация, занятие дальнобойными фигурами открытых линий и диагоналей. Опыт показывает, что учёт только этих двух факторов - суммы материала и относительной ценности полей (зафиксированной в виде таблиц для каждого типа фигур) - при наличии качественного поиска уже может обеспечивать силу игры в диапазоне до 2000-2200 пунктов Эло. Это уровень хорошего первого разряда или кандидата в мастера.

Дальнейшее уточнение оценки может включать всё более и более тонкие признаки шахматной позиции: наличие и продвинутость проходных пешек, близость фигур к позиции неприятельского короля, его пешечное прикрытие и т. д. Легендарная «Каисса», первая чемпионка мира среди программ (1974) имела оценочную функцию из нескольких десятков признаков . Все они подробно описаны в книге «Машина играет в шахматы», библиографическая ссылка на которую приводится в конце статьи.


Одна из самых «навороченных» оценочных функций была у машины Deep Blue, прославившейся своими матчами с Каспаровым в 1996-97 гг. (подробную историю этих матчей можно прочитать в недавней серии статей на Geektimes .)

Широко распространено мнение, что сила Deep Blue основывалась исключительно на колоссальной скорости перебора вариантов. 200 миллионов позиций в секунду, полный (без отсечений) перебор на 12 полуходов - к таким параметрам шахматные программы на современном железе только-только приближаются. Однако, дело было не только в быстродействии. По объёму «шахматных знаний» в оценочной функции эта машина также намного превосходила всех. Оценка Deep Blue была реализована аппаратно и включала до 8000 различных признаков. Для настройки её коэффициентов привлекались сильные гроссмейстеры (достоверно известно о работе с Джоэлем Бенджамином, тестовые партии с разными версиями машины играл Давид Бронштейн).

Не располагая такими ресурсами, как создатели Deep Blue, ограничим задачу. Из всех признаков позиции, учитываемых для подсчёта оценки, возьмём самый значимый - соотношение материала на доске.

Стоимость фигур: простейшие модели

Если взять любую шахматную книгу для начинающих, сразу за главой с объяснением шахматных ходов обычно приводится табличка сравнительной ценности фигур, примерно такая:
Королю иногда приписывается конечная стоимость, заведомо бóльшая, чем сумма всего материала на доске - например, 200 единиц. В данном исследовании мы оставим Его Величество в покое, и рассматривать королей не будем вообще. Почему? Ответ простой: они всегда присутствуют на доске, поэтому их материальная оценки взаимно вычитаются, и на общий баланс сил не влияют.

Приведённые стоимости фигур должны рассматриваться только как некоторые базовые ориентиры. В реальности фигуры могут «дорожать» и «дешеветь» в зависимости от ситуации на доске, а также от стадии партии. В качестве поправки первого порядка обычно рассматривают комбинации из двух-трёх фигур - своих и противника.

Вот как оценивал различные сочетания материала в своём классическом «Учебнике шахматной игры» третий чемпион мира :


С точки зрения общей теории слона и коня следует считать одинаково ценными, хотя, по моему убеждению, слон в большинстве случаев оказывается более сильной фигурой. Между тем считается вполне установленным, что два слона почти всегда сильнее двух коней.

Слон в игре против пешек сильнее коня, а вместе с пешками также оказывается более сильным против ладьи, нежели конь. Слон и ладья тоже сильнее коня и ладьи, но ферзь и конь могут оказаться сильнее, чем ферзь и слон. Слон часто стоит больше трех пешек, о коне же это редко можно сказать; он даже может оказаться слабее трех пешек.

Ладья по силе равна коню и двум пешкам или же слону и двум пешкам, но, как сказано выше, слон в борьбе против ладьи сильнее коня. Две ладьи несколько сильнее ферзя. Они немного слабее двух коней и слона и еще слабее двух слонов и коня. Сила коней падает по мере размена фигур на доске, сила же ладьи, напротив, возрастает.

Наконец, как правило, три легкие фигуры сильнее ферзя.

Оказывается, большей части подобных правил можно удовлетворить, оставаясь в рамках линейной модели, и просто слегка сместив стоимости фигур от их «школьных» значений. Например, в одной из статей приводятся следующие граничные условия:

B > N > 3P B + N = R + 1.5P Q + P = 2R
И значения, им удовлетворяющие:

P = 100 N = 320 B = 330 R = 500 Q = 900 K = 20000


Имена переменных соответствуют обозначениям фигур в английской нотации: P - пешка, N - конь, B - слон, R - ладья, Q - ферзь, K - король. Стоимости здесь и далее указаны в сотых долях пешки.

На самом деле, приведённый набор значений не является единственным решением. Более того, даже несоблюдение каких-то из «неравенств им. Капабланки» не приведёт к резкому падению силы игры программы, а только повлияет на её стилевые особенности.

В качестве эксперимента я провёл небольшой матч-турнир четырёх версий своего движка GreKo с разными весами фигур против трёх других программ - каждая из версий сыграла 3 матча по 200 партий со сверхмалым контролем времени (1 секунда + 0.1 сек. на ход). Результаты приведены в таблице:

Версия Пешка Конь Слон Ладья Ферзь vs. Fruit 2.1 vs. Crafty 23.4 vs. Delfi 5.4 Рейтинг
GreKo 12.5 100 400 400 600 1200 61.0 76.0 71.0 2567
GreKo A 100 300 300 500 900 55.0 69.0 73.0 2552
GreKo B 100 320 330 500 900 57.0 71.0 64.0 2548
GreKo C 100 325 325 550 1100 72.5 74.5 69.0 2575
Мы видим, что некоторые вариации в весах фигур приводят к колебаниям силы игры в диапазоне 20-30 пунктов Эло. Более того, одна из тестовых версий показала даже лучший результат, чем основная версия программы. Впрочем, однозначно утверждать об усилении игры на таком малом количестве партий преждевременно - доверительный интервал вычисления рейтинга составляет сравнимую величину в несколько десятков пунктов Эло.

«Классические» стоимости шахматного материала были получены интуитивно, путём осмысления шахматистами своего практического опыта. Предпринимались также попытки подвести под эти значения какую-то математическую базу - например, на основе мобильности фигур, числа полей, которые они могут держать под контролем. Мы же попробуем подойти к вопросу экспериментально - на базе анализа большого количества шахматных партий. Для вычисления стоимостей фигур нам не понадобится приближённая оценка позиций из этих партий - только их результаты, как самая объективная мера успеха в шахматах.

Материальный перевес и логистическая кривая

Для статистического анализа был взят PGN-файл, содержащий почти 3000 шахматных партий в блиц между 32 разными шахматными движками, в диапазоне от 1800 до 3000 пунктов Эло. С помощью специально написанной утилиты для каждой партии был составлен список материальных соотношений, возникших на доске. Каждое соотношение материала попадало в статистику не сразу после взятия фигуры или превращения пешки - сначала должны были произойти ответные взятия или несколько «тихих» ходов. Таким образом отфильтровывались краткосрочные «скачки материала» на 1-2 хода при разменах.

Затем по уже известной нам шкале «1-3-3-5-9» рассчитывался материальный баланс позиции, и для каждого его значения (от -24 до 24) накапливалось количество очков, набранных белыми. Полученная статистика представлена на следующем графике:

По оси x - материальный баланс позиции ΔM с точки зрения белых, в пешках. Он вычисляется как разность суммарной стоимости всех белых фигур и пешек и такой же величины для чёрных. По оси y - выборочное математическое ожидание результата партии (0 - победа чёрных, 0.5 - ничья, 1 - победа белых). Мы видим, что экспериментальные данные очень хорошо описываются логистической кривой :

Простой визуальный подбор позволяет определить параметр кривой: α=0.7 , размерность его - обратные пешки.
Для сравнения на графике приведены ещё две логистические кривые с другими значениями параметра α .

Что это означает на практике? Пусть мы видим случайно выбранную позицию, в которой у белых перевес в 2 пешки (ΔM = 2 ). С вероятностью, близкой к 80%, мы можем утверждать: партия закончится победой белых. Аналогично, если у белых не хватает слона или коня (ΔM = -3 ), их шансы не проиграть всего лишь около 12%. Позиции с материальным равенством (ΔM = 0 ), как и можно было ожидать, чаще всего заканчиваются вничью.

Постановка задачи

Теперь мы готовы сформулировать задачу оптимизации оценочной функции в терминах логистической регрессии.
Пусть нам дан набор векторов следующего вида:

Где Δ i , i = P...Q - разность количества белых и чёрных фигур типа i (от пешки до ферзя, короля не считаем). Эти вектора представляют собой материальные соотношения, встретившиеся в партиях (одной партии обычно соответствует несколько векторов).

Пусть дан также вектор y j , компоненты которого принимают значения 0, 1 и 2. Эти значения соответствуют исходам партий: 0 - победа чёрных, 1 - ничья, 2 - победа белых.

Требуется найти вектор θ стоимостей фигур:

Минимизирующий функцию стоимости для логистической регрессии:

,
где
- логистическая функция для векторного аргумента.

Для предотвращения «переобучения» и эффектов неустойчивости в найденном решении в функцию стоимости можно добавить параметр регуляризации, не дающий коэффициентам в векторе принимать слишком большие значения:

Величина коэффициента при параметре регуляризации выбирается небольшая, в данном случае использовалось значение λ=10 -6 .

Для решения задачи минимизации применим простейший метод градиентного спуска с постоянным шагом:

Где компоненты градиента функции J reg имеют вид:

Так как мы ищем симметричное решение, при материальном равенстве дающее вероятность исхода партии ½, нулевой коэффициент вектора θ полагаем всегда равным нулю, и нам для градиента нужно только второе из данных выражений.

Вывод приведённых формул мы здесь рассматривать не будем. Всем интересующимся их обоснованием настоятельно рекомендую уже упоминавшийся курс по машинному обучению на Coursera.

Программа и результаты

Так как первая часть задачи - разбор PGN-файлов и выделение для каждой позиции набора признаков - уже была практически реализована в коде шахматного движка, оставшуюся часть было решено также написать на C++. Исходный код программы и тестовые наборы партий в PGN-файлах доступны на github . Программа может быть собрана и запущена под Windows (MSVC) или Linux (gcc).

Возможность использовать в дальнейшем специализированные средства вроде Octave, MATLAB, R и т.п. также предусмотрена - в процессе работы программа генерирует промежуточный текстовый файл с наборами признаков и исходами партий, который легко может быть импортирован в эти среды.

Файл содержит текстовое представление набора векторов x j - матрицы размерности m x (n + 1) , в первых 5 столбцах которой содержатся компоненты материального баланса (от пешки до ферзя), а в 6-м - результат партии.

Рассмотрим простой пример. Ниже приводится PGN-запись одной из тестовых партий.

1. d4 d5 2. c4 e6 3. e3 c6 4. Nf3 Nd7 5. Nbd2 Nh6 6. e4 Bb4 7. a3 Ba5 8. cxd5 exd5 9. exd5 cxd5 10. Qe2+ Kf8 11. Qb5 Nf6 12. Bd3 Qe7+ 13. Kd1 Bb6 14. Re1 Bd7 15. Qb3 Be6 16. Re2 Qc7 17. Qb4+ Kg8 18. Nb3 Bf5 19. Bb1 Bxb1 20. Rxb1 Nf5 21. Bd2 a5 22. Qa4 h6 23. Rc1 Qb8 24. Bxa5 Qf4 25. Qb4 Bxa5 26. Nxa5 Kh7 27. Nxb7 Rab8 28. a4 Ne4 29. h3 Rhc8 30. Ra1 Rc7 31. Qa3 Rcxb7 32. g3 Qc7 33. Rc1 Qa5 34. Rxe4 dxe4 35. Rc5 Qa6 36. Nd2 Nxd4 37. Rc4 Nb3 38. Nxb3 Qxc4 39. Nd2 Rd8 40. Qc3 Qf1+ 41. Kc2 Qe2 42. f4 e3 43. b4 Rc7 44. Kb3 Qd1+ 45. Ka2 Rxc3 46. Nb1 Qxa4+ 47. Na3 Rc2+ 48. Ka1 Rd1# 0-1
Соответствующий фрагмент промежуточного файла имеет вид:

0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 2 -1 0 0 0 0 2 0 0 -1 0 0 1 0 0 -1 0 0 1 1 0 -2 0 0
В 6-м столбце везде 0 - это результат партии, победа чёрных. В остальных столбцах - баланс числа фигур на доске. В первой строке полное материальное равенство, все компоненты равны 0. Вторая строка - лишняя пешка у белых, это позиция после 24-го хода. Обратим внимание, что предшествующие размены никак не отражены, они происходили слишком быстро. После 27-го хода у белых уже 2 лишних пешки - это строка 3. И т.д. Перед заключительной атакой чёрных у белых пешка и конь за две ладьи:

Как и размены в дебюте, финальные ходы в партии на содержимое файла не повлияли. Они были отсеяны «фильтром тактики», потому что представляли собой серию взятий, шахов и уходов от них.

Такие же записи создаются для всех анализируемых партий, в среднем получается по 5-10 строк на игру. После разбора PGN-базы с партиями этот файл поступает на вход второй части программы, занимающейся собственно решением задачи минимизации.

В качестве начальной точки для градиентного спуска можно, например, взять вектор со значениями весов фигур из учебника. Но интереснее не давать алгоритму никаких подсказок, и стартовать из нуля. Оказывается, наша функция стоимости достаточно «хорошая» - траектория быстро, за несколько тысяч шагов, выходит на глобальный минимум. Как изменяются при этом стоимости фигур, показано на следующем графике (на каждом шаге выполнялась нормировка на вес пешки = 100):

График сходимости функции стоимости


Текстовый вывод программы

C:\CHESS>pgnlearn.exe OpenRating.pgn Reading file: OpenRating.pgn Games: 2997 Created file: OpenRating.mat Loading dataset... [ 20196 x 5 ] Solving (gradient method)... Iter 0: [ 0 0 0 0 0 ] -> 0.693147 Iter 1000: [ 0.703733 1.89849 2.31532 3.16993 6.9148 ] -> 0.470379 Iter 2000: [ 0.735853 2.08733 2.51039 3.47418 7.7387 ] -> 0.469398 Iter 3000: [ 0.74429 2.13676 2.56152 3.55386 7.95879 ] -> 0.46933 Iter 4000: [ 0.746738 2.15108 2.57635 3.57697 8.02296 ] -> 0.469324 Iter 5000: [ 0.747467 2.15535 2.58077 3.58385 8.0421 ] -> 0.469324 Iter 6000: [ 0.747685 2.15663 2.58209 3.58591 8.04785 ] -> 0.469324 Iter 7000: [ 0.747751 2.15702 2.58249 3.58653 8.04958 ] -> 0.469324 Iter 8000: [ 0.747771 2.15713 2.58261 3.58672 8.0501 ] -> 0.469324 Iter 9000: [ 0.747777 2.15717 2.58265 3.58678 8.05026 ] -> 0.469324 Iter 10000: [ 0.747779 2.15718 2.58266 3.58679 8.0503 ] -> 0.469324 PIECE VALUES: Pawn: 100 Knight: 288.478 Bishop: 345.377 Rook: 479.66 Queen: 1076.56 Press ENTER to finish


После нормировки и округления получаем следующий набор величин:
Проверим, выполняются ли «правила Капабланки»?
Соотношение Численные значения Выполняется?
B > N 345 > 288 да
B > 3P 345 > 3 * 100 да
N > 3P 288 < 3 * 100 нет
B + N = R + 1.5P 345 + 288 ~= 480 + 1.5 * 100 да (с погрешностью < 0.5%)
Q + P = 2R 1077 + 100 > 2 * 480 нет
Результат вполне обнадёживающий. Не зная ничего о реально происходящих на доске событиях, рассматривая только исходы партий и снятый с доски материал наш алгоритм сумел вывести стоимости фигур, достаточно близкие к их традиционным значениям.

Можно ли полученные значения использовать для усиления игры программы? Увы, на данном этапе ответ отрицательный. Тестовые блиц-матчи показывают, что сила игры GreKo от использования найденных параметров практически не изменилась, а в ряде случаев даже снизилась. Почему так произошло? Одна из очевидных причин - уже упоминавшаяся тесная связь поиска и оценки позиции. В поиске движка заложен целый ряд эвристик для отсечения неперспективных ветвей, и критерии этих отсечений (пороговые значения) тесно завязаны на статическую оценку. Меняя стоимости фигур, мы резко сдвигаем масштаб величин - форма дерева поиска меняется, требуется новая балансировка констант для всех эвристик. Это достаточно трудоёмкая задача.

Эксперимент с партиями людей

Попробуем расширить наш эксперимент, рассмотрев игры не только компьютеров, но и людей. В качестве массива данных для обучения возьмём партии двух выдающихся современных гроссмейстеров - чемпиона мира Магнуса Карлсена и экс-чемпиона Ананда Вишванатана , а также представителя романтических шахмат XIX столетия Адольфа Андерсена .


Ананд и Карлсен соперничают за мировую корону

В таблице ниже представлены результаты решения регрессионной задачи для партий этих шахматистов.
Легко заметить, что «человеческие» значения стоимости фигур оказались вовсе не такими, каким учат начинающих в учебниках. В случае Карлсена и Ананда бросается в глаза меньший масштаб шкалы - ферзь стоит чуть больше 7.5 пешек, соответственно сжался весь диапазон для других фигур. Слон по-прежнему чуть дороже коня, но и тот, и другой не дотягивают до традиционных трёх пешек. Две ладьи оказываются слабее ферзя, и т.д.

Надо сказать, что похожая картина наблюдается не только у Виши и Магнуса, но и для большинства гроссмейстеров, партии которых удалось протестировать. Причём какой-то зависимости от стиля не выяснилось. Значения смещены от классических в одну и ту же сторону и у позиционных мастеров вроде Михаила Ботвинника и Анатолия Карпова, и у атакующих шахматистов - Михаила Таля, Юдит Полгар…

Одним из немногих исключений стал Адольф Андерсен - лучший европейский игрок середины XIX века, автор знаменитой «вечнозелёной партии» . Вот для него значения стоимости фигур оказались очень близки к тем, которые используют компьютерные программы. Напрашиваются самые разнообразные фантастические гипотезы, вроде тайного читерства немецкого маэстро через портал во времени… (Шутка, конечно. Адольф Андерсен был крайне порядочным человеком, и никогда бы себе такого не позволил.)


Адольф Андерсен (1818-1879),
человек-компьютер

Почему наблюдается такой эффект со сжатием диапазона стоимости фигур? Конечно, не стоит забывать о крайней ограниченности нашей модели - учёт дополнительных позиционных факторов мог бы внести существенные коррективы. Но, возможно, дело в слабой технике реализации человеком материального перевеса - относительно современных шахматных программ, конечно. Проще говоря, человеку тяжело безошибочно играть ферзём, потому что у того слишком много возможностей. Вспоминается хрестоматийный анекдот о Ласкере (в других вариантах - Капабланке / Алехине / Тале), якобы игравшем с форой со случайным попутчиком в поезде. Кульминационной фразой было: «Ферзь только мешает!»

Заключение

Мы рассмотрели один из аспектов оценочной функции шахматных программ - стоимость материала. Убедились, что эта часть статической оценки в модели Шеннона имеет вполне «физический» смысл - она гладким образом (через логистическую функцию) связана с вероятностью исхода партии. Затем рассмотрели несколько распространённых комбинаций весов фигур, и оценили порядок их влияния на силу игры программы.

С помощью аппарата регрессии на партиях различных шахматистов, как живых так и компьютерных, мы определили оптимальные стоимости фигур в предположении чисто материальной оценочной функции. Обнаружили интересный эффект меньшей стоимости материала для людей по сравнению с машинами, и «заподозрили в читерстве» одного из шахматных классиков. Попробовали применить найденные значения в реальном движке и… не добились особого успеха.

Куда двигаться дальше? Для более точной оценки позиции можно добавлять в модель новые шахматные знания - то есть увеличивать размерность векторов x и θ . Даже оставаясь в области только материальных критериев (без учёта полей, занимаемых фигурами на доске), можно добавить целый ряд релевантных признаков: два слона, пара из ферзя и коня, пара из ладьи и слона, разноцвет, последняя пешка в эндшпиле… Шахматистам хорошо известно, как ценность фигур может зависеть от их сочетания или стадии партии. В шахматных программах соответствующие веса (бонусы или штрафы) могут достигать десятых долей пешки и более.

Один из возможных путей (наряду с увеличением размера выборки) - использовать для обучения партии, сыгранные предыдущей версией той же самой программы. В таком случае есть надежда на бóльшую согласованность одних признаков оценки с другими. Можно также в качестве функции стоимости использовать не успех предсказания исхода партии (которая может закончиться через несколько десятков ходов после рассматриваемой позиции), а корреляцию статической оценки с динамической - т.е. с результатом альфа-бета поиска на определённую глубину.

Однако, как уже было отмечено выше, для непосредственного усиления игры программы полученные результаты могут оказаться непригодными. Часто случается так: после обучения на сериях тестов программа начинает лучше решать тесты (в нашем случае - предсказывать результаты партий), но не лучше играть ! В настоящее время в шахматном программировании мейнстримом стало интенсивное тестирование исключительно в практической игре. Новые версии топ-движков перед выпуском тестируются на десятках и сотнях тысяч партий со сверхкороткими контролями времени…

В любом случае, я планирую провести ещё ряд экспериментов по статистическому анализу шахматных партий. Если данная тема представляет интерес для аудитории Хабра, при получении каких-либо нетривиальных результатов статья может получить продолжение.

В ходе исследований ни одна шахматная фигура не пострадала.

Библиография

Адельсон-Вельский, Г.М.; Арлазаров, В.Л.; Битман, А.Р. и др. - Машина играет в шахматы. М.: Наука, 1983
Книга авторов советской программы «Каисса», подробно описывающая как общие алгоритмические основы шахматных программ, так и конкретные детали реализации оценочной функции и поиска «Каиссы».

Корнилов Е. - Программирование шахмат и других логических игр. СПб.: БХВ-Петербург, 2005
Более современная и «практическая» книга, содержит большое количество примеров кода.

Feng-hsiung Hsu - Behind Deep Blue. Princeton University Press, 2002
Книга одного из создателей шахматной машины Deep Blue, в подробностях рассказывающая об истории её создания и внутреннем устройстве. В приложении приведены тексты всех шахматных партий, сыгранных Deep Blue в официальных соревнованиях.

Ссылки

Chessprogramming Wiki - обширная коллекция материалов по всем теоретическим и практическим аспектам шахматного программирования.

Machine Learning in Games - сайт, посвящённый машинному обучению в играх. Содержит большое количество научных статей по исследованиям в области шахмат, шашек, го, реверси, нардов и т.д.

Kaissa - страница, посвящённая «Каиссе». Детально представлены коэффициенты её оценочной функции.

Stockfish - сильнейшая на сегодня программа, с открытым исходным кодом.

A comparison of Rybka 1.0 beta and Fruit 2.1
Детальное сравнение внутреннего устройства двух популярных шахматных программ.

GreKo - шахматная программа автора статьи.
Была использована в качестве одного из источников тестовых компьютерных партий. Также на основе её генератора ходов и парсера PGN-нотации была изготовлена утилита для анализа экспериментальных данных.

pgnlearn - код утилиты и примеры файлов с партиями на github.

Теги:

  • шахматы
  • регрессионный анализ
  • машинное обучение
Добавить метки

Прежде чем , необходимо выучить большое количество теоретического материала, ознакомиться с правилами, целями, приемами игры. Также важно выучить название фигур в шахматах, их начальное расположение.

В имеется шесть различных наименований фигур. Играют в шахматы два человека, один из которых играет фигурами белого цвета, а второй – фигурами черного цвета. У каждого партнера армия состоит из шестнадцати фигур: король, ферзь, две ладьи, два коня, два слона, восемь пешек. По каждая фигура передвигается по-разному.

Фигуры

Король считается самой важной шахматной фигурой, так как, если нет возможности защитить фигуру от нападения соперника, означает поражение партии. Фигура короля ходит по вертикали, диагонали, либо горизонтали на одно поле.

Ферзь или королева может ходить на любые поля по вертикали, диагонали, либо горизонтали. Также относится к сильным фигурам на доске. Сначала фигура ферзя могла ходить исключительно по диагонали на одно клетку. Эта фигура превратилась в сильную только в европейских шахматах. Современная шахматная теория относит ферзя к «тяжелым фигурам».

Ладья или тура может делать ходы по вертикали, либо горизонтали на любое количество полей. Относят ладью к «тяжелым фигурам». Эта фигура имеет вид крепостной башни.

Фигура слона или офицера ходит по диагонали на любое количество полей. Перед началом партии у шахматиста имеются один белопольный слон и один чернопольный слон. Из-за особенностей доски слоны могут передвигаться исключительно по диагоналям строго определенного цвета. Относят слона к «легким фигурам».

Конь по шахматной доске передвигается буквой «Г». сразу она ходит на две клетки по горизонтали, либо вертикали, а потом еще на одну клетку (поле) по вертикали, либо горизонтали, только перпендикулярно первому направлению.

В современных шахматах конь является единственной фигурой, которая не передвигается по прямой линии, и относится к «прыгающим». Конь может ходить не в плоскости шахматной доски, может также перепрыгивать через фигуры из своей армии и через неприятелей. Конь в теории относят к «легким фигурам».

Фигура пешки может ходить по вертикали вперед на одно поле. В исходной позиции восемь пешек занимают вторую горизонталь, прикрывая собой фигуры.

Видео урок: «названия и ценность шахматных фигур»

Многие проводят свое свободное время за игрой в шахматы. В эту игру увлеченно играют люди всех возрастов. При знании правил игры и составлении определенной стратегии ходов удовольствие от выигрыша не заставит себя долго ждать. Однако для начала необходимо ознакомиться с правилами, узнать название фигур в шахматах.

История шахмат

Игра в шахматы была придумана индийцами в VI веке до н. э. В глубоком прошлом шахматы назывались по-другому. Чатуранга - это значило «Четыре отряда войск».

Игра очень походила на современные шахматы, однако были определенные отличия. Доска, на которой происходила сама игра, также состояла их клеточек 8х8, но вот только цвет их был один. Разделили доску на два цвета намного позже, уже в Европе. Сколько фигур в шахматах в наше время, столько было и на тот момент.

Но главным отличием древних шахмат было количество участников игры. В игре принимали участие сразу четыре человека. Причем каждый выставлял отдельно свое «войско» в определенном углу на игровой доске. Вместо короля был Раджа, пешки были пехотой, конница, соответственно, состояла из коней, также в войско входили боевые слоны и колесница из ладьи. Фигуры имели четыре цвета: красный, желтый, зеленый и черный. Игроки по очереди бросали игральный кубик, который определял, какая фигура будет производить ход. Если выпадала единица - ход был пешкой, двойка - конь, цифра три означала ход ладьи, четыре - слон, пять и шесть означали ход короля. Королева, она же ферзь, в шахматах отсутствовала. Игра заканчивалась, когда все фигуры противника были ликвидированы.

Эволюция игры

Из солнечной Индии шахматы со временем начали завозить и в другие страны. Так, китайцы называли шахматы "сянци", японцы - "сёги", жители Таиланда - "макрук". Только в Персии нынешнее название шахмат взяло свое начало. Арабы называли своего правителя шахом, поэтому и шахматного короля так назвали.

Менялись правила и названия, происходила эволюция шахмат. Отказались от игрального кубика, и количество игроков уменьшилось до двух человек. Цвет фигур стал традиционно черным и белым. Название фигур в шахматах осталось неизменным. Некоторые из изменили название. Так, Раджа стал Шахом. Так как королей оказалось двое, одного из них принято было ослабить и сделать ферзем. Также персы ввели конечный итог игры - мат королю. На языке персов слово шахматы означает «шах умер».

Длительный путь прошла игра, пока добралась до Руси. К нам шахматы попали не из Европы. Предполагают, что шахматы в Россию привезли таджики в IX веке до нашей эры. Именно поэтому название фигур в шахматах переводятся дословно с арабского и персидского языков. А уже в XI веке правила игры в шахматы дошли до Руси.

Шахматный набор

Для игры в шахматы потребуется которая разделена на 64 квадратика, имеющих два цвета: черный и белый.

Горизонтальные и вертикальные поля имеют свои обозначения. По горизонтали это цифры от единицы до восьмерки, а по вертикали - буквы от А до Н, таким образом, каждое поле имеет координаты. Сколько фигур в шахматах? У каждого игрока на поле должно быть по две ладьи, пара коней, два слона, восемь пешек, ферзь и король. Всего в шахматах 32 фигуры, которые соперники делят пополам. Далее - более подробно о шахматных фигурах.

Король

На арабском языке король звучит как «аль-шах» и в переводе с персидского языка означает король, но и на других языках значение фигуры - самое главенствующее.

Это очень весомая и значимая фигура король, несмотря на свою важность, может передвигаться только лишь на одну клетку, но в любом направлении. Эта фигура уязвима без защиты остальных фигур. Собственно, вся суть игры и состоит в защите короля от прямых ходов других шахматных фигур. Угроза неприкрытому королю в шахматах называется «шах». В России фигура обозначается «Кр», а в международной системе - «К».

Ферзь в шахматах - вторая сильная фигура после короля

На арабском слово «аль-фирзан» означает "ученый". Но есть и другие предположения, среди которых слово значит "мудрец", "полководец" и др. В XV веке ферзь появился в Европе уже с новыми возможностями, теперь фигура могла ходить на разное расстояние по всем диагоналям и линиям на шахматной доске. Обозначают ферзь буквой «Ф». «Q» - королева в международной системе. Во многих странах ферзя называют королевой.

Ладья и слон, они же тура и офицер

Ладья в далеком прошлом исполняла функции колесницы, ее так и изображали в виде запряженных коней. Называли такую колесницу "рух". На арабском языке «аль-рох» означает "башня". Отсюда и внешний вид фигуры. Передвигается по полю она только по горизонтали или вертикали, располагается по крайним доски. Обозначают эту фигуру в России заглавной буквой «Л», а в Европе - буквой «R».

Название фигур в шахматах не всегда соответствует их внешнему виду. Так, например, шахматная фигура слон раньше действительно имела вид однако со временем ее начали изображать в облике человека. Обозначения: у нас это «С», за рубежом «B». Ходит слон только по диагонали своего цвета, у игрока один слон будет на белой диагонали, а второй - на черной.

Конь в шахматах

Данная фигура действительно выглядит как конь. "Аль-фарас" на арабском языке - всадник. Когда-то эта фигура имела наездника, но со временем его убрали. Ход конем можно производить только в виде русской буквы «Г», т. е. две клетки прямо и одну в сторону. Записывают коня русской «К» и английской «N». Это единственная фигура, которая может передвигаться не по прямой траектории и прыгать через фигуры, свои и соперника.

Пешие солдатики

Пешка - единственная фигура, которая никак не записывается и имеет такую значительную численность на игровом поле. "Аль-бейзак" в переводе с арабского языка - пехотинец. Совершать ходы пешка может только вперед на одну клетку.

Фигуры в шахматах, фото которых присутствуют в данной статье, помогут шире познакомиться с захватывающим шахматным миром.

На шахматной доске всего 64 клетки, но на них могут проходить настоящие шахматные баталии. Одна половина клеток чёрная, вторая белая — 32 былых и 32 чёрных. По шахматным правилам, клетка называется полем .

Черные и белые — это условные цвета. На фото, часть фигур и доска изготовлены с использованием малахита. Тем не менее, зелёные фигуры и поля, условно являются чёрными

Перед тем, как расставлять шахматные фигуры, необходимо правильно поставить шахматную доску.

С левой стороны доска установлена правильно, с правой — неправильно

С неправильно поставленной шахматной доской, связан забавный случай, которой произошел в давние времена где-то на границе. Именно на границе, периодически встречались два джентльмена, которые между собой играли в шахматы. В один прекрасный день, игрой заинтересовался служащий таможни, который обратил внимание, что доска расположена неправильно. Т.е. «шахматисты» даже не знали шахматных правил, а просто изображали игру. Как оказалось в последствии, мнимые шахматисты были контрабандистами — в шахматных фигурах они прятали контрабандный товар (золото, брильянты:)).

Именование шахматных полей (клеток)

Если среди наших читателей есть поклонники игры «Морской бой», то они наверняка провели аналогию с шахматами — у каждого поля есть свой адрес. Например, a1, b7, e4 и т.д.

У каждого шахматного поля есть свой уникальный адрес. Крайне желательно, чтобы вы зрительно запомнили, где какое поле находится. В дальней это пригодится при изучении записи шахматных ходов. Обратите внимание, что поля d4,e4,d5,e5 образуют так называемый центр доски. Именно за цент ведется борьба в начале шахматной партии (дебюте).

Чтобы быстрей запомнить имена (адреса) шахматных полей, имеет смысл распечатать рисунок (формат A4) и повесить его на стену.

Названия и обозначения шахматных фигур

В арсенале противников 6 видов фигур:

  • Пешка — солдат его величества.
  • Конь — стоимость коня эквивалентна 3 пешкам;
  • Слон — его стоимость, как и у коня, 3 пешки;
  • Ладья — тяжелая артиллерия (5 пешек);
  • Ферзь — 9 пешек;
  • Король — бесценен, так как без него игра невозможна.

Слева на право: король, ферзь, слон, конь, ладья, пешка

Любому начинающему шахматисту, желательно, как можно раньше, научиться записывать шахматные ходы, для этого необходимо знать шахматную нотацию. Шахматная нотация — это система условных обозначений, применяемых для записи шахматной партии или положения фигур на шахматной доске. Уже сейчас вы можете ознакомиться с обозначениями шахматных фигур.

Фигура Внешний вид Русское сокращение Английское сокращение
Король ♔ или ♚ Кр K (king)
Ферзь ♕ или ♛ Ф Q (queen)
Ладья ♖ или ♜ Л R (rook)
Слон ♗ или ♝ С B (bishop)
Конь ♘ или ♞ К N (kNight)
Пешка ♙ или ♟ п или ничего p (pawn) или ничего

При изучении шахматной нотации, мы еще вернемся к этой таблице, а теперь разберемся как расставлять фигуры.

Расстановка шахматных фигур

Теперь давайте посмотрим, как выглядит начальная расстановка шахматных фигур на доске.

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

Вы должны активировать JavaScript для отображения диаграмм.

Именно таким образом должны быть расставлены фигуры, если речь идет о шахматах в классическом понимании. Однако возможны и другие варианты фигур, если речь идет о шахматах Фишера — по другому их называют «случайные шахматы». Пока нас интересуют классическая расстановка, поэтому необходимо её запомнить. В противном случае, может возникнуть путаница, как в шахматной игре для детей .

Чтобы вам было проще запомнить расстановку фигур, можно их расставлять в определенной последовательности. Об одном из вариантов смотрите в видео.


В начале шахматной партии, на доске находятся 32 фигуры — 16 белых и 16 чёрных. В конце партии, минимальное количество фигур может быть две — это белый и чёрный король. Короли — две самые главные фигуры на шахматной доске. Пришла пора разобраться в том, что они умеют — вся правда о шахматном короле.

Правила шахмат не могут учесть все возможные ситуации, которые могут возникнуть в процессе игры, и не предусматривают все организационные вопросы. В тех случаях, которые не полностью регулируются Статьей Правил, решения должны приниматься на основе аналогичных ситуаций, рассматриваемых в Правилах. Правила исходят из того, что арбитры обладают необходимой компетенцией, достаточным здравым смыслом и абсолютно объективны. Кроме того, подробные Правила лишили бы арбитра свободы при принятии решения, диктуемого справедливостью, логикой и конкретными условиями. ФИДЕ призывает все шахматные федерации принять эту точку зрения. Любая Федерация вправе ввести более подробные Правила, но они:

  1. не должны ни в чем противоречить официальным Правилам шахмат ФИДЕ;
  2. ограничиваются территорией этой федерации;
  3. недействительны для любого матча ФИДЕ, чемпионата или квалификационного соревнования для получения звания ФИДЕ, или рейтингового турнира.

Правила игры

Характер и цели игры в шахматы

  1. Шахматная партия играется между двумя партнерами, которые поочередно перемещают фигуры на квадратной доске, названной «шахматной». Тот, кто имеет белые фигуры, начинает партию. Игрок получает право хода, когда его партнер сделал ход.
  2. Цель каждого игрока - атаковать короля партнера таким образом, чтобы партнер не имел никаких возможных ходов, которые позволяют избежать «взятия» короля на следующем ходу. Об игроке, который достиг этой цели, говорят, что он поставил мат королю партнера и выиграл партию. Партнер, королю которого был поставлен мат, проиграл партию.
  3. Если позиция такова, что никто из партнеров не может поставить мат, партия заканчивается вничью.

Начальная позиция фигур на шахматной доске

  1. Шахматная доска состоит из 64-х равных квадратов (8×8), поочередно светлых («белые» поля) и темных («черные» поля). Она располагается между игроками так, чтобы ближайшее угловое поле справа от игрока было белым.
  2. В начале партии один игрок имеет 16 светлых фигур («белые»); другой - 16 темных фигур («черные»).
  3. Начальная позиция фигур на шахматной доске такова:
  4. Восемь вертикальных рядов квадратов называются «вертикалями». Восемь горизонтальных рядов квадратов называются «горизонталями». Прямые линии квадратов одного и того же цвета, касающихся углами, называются «диагоналями».

Ходы фигур

Ни одна из фигур не может быть перемещена на поле, занятое фигурой того же цвета. Если фигура переходит на поле, занимаемое фигурой партнера, последняя считается взятой и убирается с шахматной доски как часть того же самого хода. О фигуре говорят, что она атакует фигуру партнера, если эта фигура может произвести взятие на этом поле. Фигура, считается атакующей поле, даже если она не может на него пойти из-за того, что её собственный король остается под шахом или под него попадает.

  1. Слон может ходить на любое поле по диагонали, на которых он стоит.
  2. Ладья может ходить на любое поле по вертикали или горизонтали, на которых она стоит.
  3. Ферзь ходит на любое поле по вертикали, горизонтали или диагонали, на которых он стоит. Когда делаются эти ходы, ферзь, ладья или слон не могут перемещаться через поле, занятое другой фигурой.
  4. Конь может ходить на одно из ближайших полей от того, на котором он стоит, но не на той же самой вертикали, горизонтали или диагонали.
  5. Пешка может ходить вперед на свободное поле, расположенное непосредственно перед ней на той же самой вертикали, или
    • с исходной позиции пешка может продвинуться на два поля по той же самой вертикали, если оба эти поля не заняты;
    • пешка ходит на поле, занимаемое фигурой партнера, которая расположена по диагонали на смежной вертикали, одновременно забирая эту фигуру.

    Пешка, атакующая поле, пересеченное пешкой партнера, который продвинул её с исходной позиции сразу на два поля, может взять эту продвинутую пешку, как если бы последний её ход был только на одно поле. Это взятие может быть сделано только очередным ходом и называется взятием «на проходе».

  6. Когда пешка достигает самой дальней горизонтали от своей исходной позиции, она должна быть заменена на ферзя, ладью, слона или коня «своего» цвета, что является частью того же хода. Выбор игрока не ограничивается фигурами, которые были уже сняты с доски. Эта замена пешки на другую фигуру называется «превращением», и действие новой фигуры начинается сразу.
  7. Король может перемещаться двумя различными путями:
    • ходить на любое примыкающее поле, которое не атаковано одной или более фигурами партнера.
    • «Рокировка»: Это перемещение короля и одной из ладей того же цвета по крайней горизонтали считающееся одним ходом короля и выполняющееся следующим образом: король перемещается с его исходного поля на два поля по направлению к ладье, затем ладья переставляется через короля на последнее поле, которое только что пересек король.
  8. Рокировка становится невозможной:
    • если король уже ходил, или
    • с ладьей, которая уже ходила.
  9. Рокировка временно невозможна:
    • если поле, на котором стоит король, или поле, которое он должен пересечь, или поле, которое он должен занять, атаковано одной из фигур партнера;
    • если между королем и ладьей, с которой должна быть произведена рокировка, находится какая-либо фигура.
  10. Считается, что король находится «под шахом», если он атакован хотя бы одной фигурой партнера, даже если она не может сделать ход из-за того, что её собственный король остается под шахом или под него попадает. Ни одна из фигур не может сделать ход, который ставит или оставляет своего короля под шахом.

Завершение игры

  1. Партия выигрывается игроком, который поставил мат королю партнера. Если мат поставлен возможным ходом, то партия считается завершенной.
  2. Партия считается выигранной игроком, если партнер заявил, что он сдается. В этом случае партия немедленно заканчивается.
  3. Партия считается завершившейся вничью, если тот игрок, за которым очередь хода не имеет никаких возможных ходов, и его король не под шахом. О такой партии говорят, что она закончилась «патом». Если пат поставлен возможным ходом, то партия считается завершенной.

    Партия считается завершившейся вничью, если возникла позиция, когда ни один из партнеров не может заматовать короля любыми возможными ходами. Считается, что партия закончилась «мертвой» позицией. В этом случае партия немедленно заканчивается.

    Партия считается закончившейся вничью по соглашению между двумя партнерами в ходе игры. В этом случае партия немедленно заканчивается.

    Партия может закончиться ничьей, если одинаковая позиция возникнет или возникала на шахматной доске трижды.

    Партия может закончиться ничьей, если последние 50 ходов были сделаны игроками без движения пешек и без взятия фигур.

Шахматные часы

  1. Термин «Шахматные часы» означает часы с двумя циферблатами, соединенными друг с другом так, что только один из них может работать в данный момент. Термин «Часы» в Правилах Шахмат означает показание времени на одном из двух циферблатов. Термин «Падение флажка» означает истечение времени, отведенного на обдумывание ходов, игроку.
  2. При использовании шахматных часов каждый игрок должен сделать минимальное установленное число ходов или все ходы в заданный период времени; и/или при использовании электронных часов может быть добавлено определенное дополнительное время после каждого хода. Все это должно быть определено заранее.
  3. Время, накопленное игроком в одном периоде игры, добавляется к его времени на следующий период, кроме случая, когда устанавливается время на каждый ход. Когда оба игрока получают на обдумывание определенное основное время, а также фиксированное дополнительное время на каждый ход, обратный отсчет основного времени начинается только после того, как истекает фиксированное время. Если игрок переключает свои часы до истечения этого фиксированного добавочного времени, то его основное время не изменяется, независимо от количества использованного добавочного времени.
  4. В установленное время начала партии, пускаются часы игрока, который имеет белые фигуры.
  5. Если ни один из игроков не присутствует в начале, то у игрока, имеющего белые фигуры, вычитается все время, прошедшее до его прибытия, если иное не определено правилами соревнования или не решено арбитром.
  6. Любой игрок, прибывающий на игру более чем на один час после предусмотренного расписанием начала тура проигрывает партию, если иное не определено правилами соревнования или не решено арбитром.
  7. В ходе партии игрок, сделав свой ход на доске, должен остановить свои часы и пустить часы партнера. Игрок должен всегда иметь возможность остановить свои часы. Его ход не считается завершенным, пока он не выполнил эти требования, кроме хода, заканчивающего игру. Время между выполнением игроком хода на шахматной доске, остановкой собственных часов и запуском часов противника, расценивается как часть времени отведенного игроку.

Учет результатов

Если заранее не установлено иначе, игрок, который выиграл партию, или выиграл в результате какого-то нарушения партнера, получает одно очко (1), игрок, который проиграл, получает ноль очков (0), а игрок, сыгравший вничью, получает пол-очка (½).



Рассказать друзьям