Крестики-нолики

Кре́стики-но́лики — логическая игра между двумя противниками на квадратном поле 3 на 3 клетки или бо́льшего размера (вплоть до «бесконечного поля»). Один из игроков играет «крестиками», второй — «ноликами». В традиционной китайской игре Гомоку используются чёрные и белые камни.

Классический вариант

Правила игры 

Игроки по очереди ставят на свободные клетки поля 3×3 знаки (один всегда крестики, другой всегда нолики). Первый, выстроивший в ряд 3 своих фигуры по вертикали, горизонтали или большой диагонали, выигрывает. Если игроки заполнили все 9 ячеек и оказалось, что ни в одной вертикали, горизонтали или большой диагонали нет трёх одинаковых знаков, партия считается закончившейся в ничью. Первый ход делает игрок, ставящий крестики.

Обычно по завершении партии выигравшая сторона зачёркивает чертой свои три знака (нолика или крестика), составляющих сплошной ряд.

Анализ 
Общее количество комбинаций

Все позиции 8952

1288 побед за X  (14,38%)

1288 побед за O  (14,38%)

2576 общих побед (28,77%)

6376 ничьх (71,22%)

Если начинать игру первым за X

Все позиции 6045

1120 побед за X  (18,52%)

568 побед за O  (9,39%)

1688 общих побед (27,92%)

4375 ничьх (72,37%)

Если начинать игру вторым за O

Все позиции 6036

1120 побед за X  (18,55%)

568 побед за O  (9,41%)

1688 общих побед (27,96%)

4375 ничьх (72,48%)

1 ход X

1  2123 позиций  520 побед  225 поражения

2  2123 позиций  400 побед  270 поражения

3  2123 позиций  520 побед  225 поражения

4  2123 позиций  400 побед  270 поражения

5  2123 позиций  640 побед  180 поражений

6  2123 позиций  400 побед  270 поражения

7  2123 позиций  520 побед  225 поражения

8  2123 позиций  400 побед  270 поражения

9  2123 позиций  520 побед  225 поражения

2 ход O

1  750 позиций  100 побед  253 поражения

2  750 позиций  60 побед  267 поражения

3  750 позиций  100 побед  253 поражения

4  750 позиций  60 побед  267 поражения

5  0  0 побед  0 поражений

6  750 позиций  60 побед  267 поражения

7  750 позиций  100 побед  253 поражения

8  750 позиций  60 побед  267 поражения

9  750 позиций  100 побед  253 поражения

3 ход X

1  0  0 побед  0 поражений

2  267 позиций  105 побед  34 поражения

3  267 позиций  118 побед  30 поражения

4  267 позиций  105 побед  34 поражения

5  0  0 побед  0 поражений

6  267 позиций  118 побед  56 поражения

7  267 позиций  118 побед  30 поражения

6  267 позиций  118 побед  56 поражения

9  267 позиций  70 побед  52 поражения

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

Ниже приведены некоторые из таких стратегий. Считается, что игрок всегда соблюдает два правила, имеющие приоритет над всеми остальными:
 Правило 1. Если игрок может немедленно выиграть, он это делает.
 Правило 2. Если игрок не может немедленно выиграть, но его противник мог бы немедленно выиграть, сделав ход в какую-то клетку, игрок сам делает ход в эту клетку, предотвращая немедленный проигрыш.

За крестики 
Первый ход сделать в центр. Остальные ходы, если неприменимы правила 1—2, делаются в тот из свободных углов, который дальше всего от предыдущего хода ноликов, а если и это невозможно — в любую клетку.

Докажем, что эта стратегия приводит к победе или ничьей. Если нолик пойдёт на сторону, то позиция (с точностью до симметрии) окажется такова:

После чего правила 1 и 2 приведут к позиции:

Выигрыш.

Если же нолик пойдёт в угол, позиция (с точностью до симметрии) будет следующая:

В зависимости от следующего хода нолика, возникнет одна из трёх позиций:

В первых двух позициях побеждают крестики. В третьей — ничья.

За нолики 
Вcпоминаем, что правила 1-2, если они применимы, имеют приоритет над всем, написанным ниже.
 Если крестики сделали первый ход в центр, до конца игры ходить в любой угол, а если это невозможно — в любую клетку.

 Если крестики сделали первый ход в угол, ответить ходом в центр. Следующим ходом занять угол, противоположный первому ходу крестиков, а если это невозможно — пойти на сторону. Далее, если правила 1-2 неприменимы, делать любые ходы. При такой игре после первого хода возникает позиция:

 Если крестики сделали первый ход на сторону (не в центр и не в угол), ответить ходом в центр. Далее отвечать в зависимости от второго хода крестиков:
 Если следующий ход крестиков — в угол, занять противоположный угол.
 Если следующий ход крестиков — на противоположную сторону, пойти в любой угол.
 Если следующий ход крестиков — на сторону рядом с их первым ходом, пойти в угол рядом с обоими крестиками.

Возможные позиции после двух ходов показаны на диаграммах.

Дерево игровых ситуаций 

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

Компьютерное решение 
Для решения такого рода игр на компьютере строится дерево игровых ситуаций в соответствии с методом минимакс. Полное число узлов в таком дереве равно 255168. Это число получается как сумма всех возможных вариантов ходов — 9 вариантов на первом шаге, 8 — для каждого из 9 на втором шаге, 7 — на каждом из 72 вариантов на третьем шаге и т. д., за вычетом ситуаций досрочного окончания игры (выигрыша).

Пример более простой реализации поиска выигравшего игрока: https://github.com/evgnor86/XO_game.git

Обобщения

Более длинные линии 
Можно рассматривать игру, в которой победителем считается игрок, первым построивший  одинаковых знаков на достаточно большом для этого прямоугольном поле. При этом можно ограничить поле каким-нибудь размером (начиная с ), либо вовсе не ограничивать (в этом случае говорят о «бесконечном» поле)

Игра до 4 одинаковых знаков на бесконечном поле неинтересна, ибо начинающий довольно быстро строит «вилку» и выигрывает.
Игра при  также неинтересна из-за «ничейной смерти». Существуют стратегии, не дающие противнику построить нужную линию никогда.
Однако при  игра становится намного содержательнее. Такой вариант имеет специальное название — гомоку. Изначально в гомоку играли на доске размером 19×19, позже она была уменьшена до размера в 15×15 клеток.

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

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

Так, с введением фолов (запрещённых ходов) для игрока, начинающего первым — ему запрещено строить вилки 3×3, 4×4, а также выстраивать «длинный ряд» из своих фигур — получилась новая игра под названием рэндзю, с большим разнообразием стратегий игры и равными шансами игроков.

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

Другим вариантом является изменение топологии поля. Например, можно считать противоположные стороны поля склеенными, образуя при этом либо поверхность цилиндра или тора, либо проективную плоскость. Также можно увеличивать размерность, например, играть в кубе 4×4×4, в гиперкубе и так далее.

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

Например, вариантом игры может быть: игроки ставят крестик или нолик (что захотят); первый выигрывает, если построит линию нужной длины из одинаковых значков, второй — если до заполнения поля этого не произойдёт.

Другой вариант: «свой» значок меняется с каждым ходом.

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

Также существует вариант крестиков-ноликов Силвермэна. В нём используется игровое поле 4×4 клетки. Крестики выигрывают, если возникает ряд из 4-х одинаковых значков (крестиков или ноликов), иначе выигрывают нолики.

Ещё существует вариант игры с классическим полем 3×3, в котором необходимо для выигрыша составить два ряда, в то время как противоборствующему алгоритму достаточно и одного.

Удлинение хода 
Ещё один вариант модификации игры — выставлять на каждом ходе не один свой знак, а два или более. Такова игра Connect6, в которой чёрные делают первый ход, выставляя один знак, после чего игроки поочерёдно выставляют по два знака, побеждает первый, построивший линию из 6 или более своих знаков.

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

Крестики-нолики в культуре 
Песен, посвящённых этой игре, три.
 Песня «Крестики-нолики» композитора Вениамина Баснера на стихи Михаила Матусовского в исполнении Таисии Калинченко стала лауреатом «Песни-74». В дальнейшем её спел Эдуард Хиль
 Другую песню с таким же названием спела Катя Лель
 Третью песню спели дуэтом Виктор Рыбин и Наталья Сенчукова.

Игра «Крестики-нолики» фигурирует в качестве сюжетного приёма в кинофильме «Военные игры».

Примечания

Литература 
 Гарднер М. Крестики-нолики. —М.: Мир, 1988. ISBN 5-03-001234-6.

Игры на бумаге
Игры на клетчатом поле
Игры с совершенной информацией