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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Tic Tac Toe.gif

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

Классический вариант[править | править исходный текст]

Правила игры[править | править исходный текст]

Выигранная партия в крестики-нолики

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

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

Анализ[править | править исходный текст]

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

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

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

За крестики[править | править исходный текст]

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

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

_0_
_Х_
Х__

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

Х00
_Х_
Х__

Выигрыш.

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

0__
_Х_
__Х

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

00Х  0Х0   0__
_Х_  _Х_   _Х0
__Х  __Х   Х_Х

В первой и третьей позиции — выигрыш. Во второй — ничья

За нолики[править | править исходный текст]

(Напоминаем, что правила 1-2, если они применимы, имеют приоритет над всем, написанным ниже.)

  • Если крестики сделали первый ход в центр, до конца игры ходить в любой угол, а если это невозможно — в любую клетку.
  • Если крестики сделали первый ход в угол, ответить ходом в центр. Следующим ходом занять угол, противоположный первому ходу крестиков, а если это невозможно — пойти на сторону.
  • Если крестики сделали первый ход на сторону, ответить ходом в центр.
    • Если следующий ход крестиков — в угол, занять противоположный угол:
_Х0
_0_
Х__
    • Если следующий ход крестиков — на противоположную сторону, пойти в любой угол:
0Х_
_0_
_Х_
    • Если следующий ход крестиков — на сторону рядом с их первым ходом, пойти в угол рядом с обоими крестиками
0Х_
Х0_
___

Дерево игровых ситуаций[править | править исходный текст]

Частичное дерево игровых ситуаций для игры крестики-нолики

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

Компьютерное решение[править | править исходный текст]

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

Обобщения[править | править исходный текст]

Более длинные линии[править | править исходный текст]

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

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

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

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

Модификация поля[править | править исходный текст]

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

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

Возможный алгоритм для игры крестики-нолики в кубе 4x4x4:

1. Проверяем наличие своих трёх подряд стоящих фигур, если нашли, то ставим четвёртую и выходим (игра завершается).

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

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

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

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

Обмен значков[править | править исходный текст]

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

Изменение условия выигрыша[править | править исходный текст]

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

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

Удлинение хода[править | править исходный текст]

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

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

  1. В XIX веке, наряду с названием «крестики-нолики» (см. Н. А. Лейкин, «Учебный день в немецкой школе», 1871), также использовались «херики-оники» или «херики» — по старому названию букв русского алфавита «Х» — «хер» и «О» — «оно» («Хер» в словаре Даля), «нолики» (Н. П. Гиляров-Платонов, «Из пережитого», 1886
  2. Allis, L. V. (1994). Searching for solutions in games and artificial intelligence, Ph.D. Thesis, University of Limburg, Maastricht.
  3. Allis, L. V., Herik, H. J. van den, and Huntjens, M. P. H. (1996). Go-Moku Solved by New Search Techniques. Computational Intelligence, Vol. 12.

Литература[править | править исходный текст]