Поле как граф

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

Число на клетке как ограничение

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

Как логика решает часть позиций без угадывания

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

Когда логике не хватает данных

Иногда на поле остаются клетки, у которых несколько разных расстановок мин одинаково хорошо согласуются со всеми открытыми числами. Дополнительная логика эту неопределённость не снимает, потому что снимать нечем: информации физически недостаточно для однозначного вывода. Здесь игрок действительно угадывает, и это не признак того, что он плохо думает. Математик Ричард Кэй в 2000 году в статье для журнала The Mathematical Intelligencer строго доказал, что задача проверки, согласуется ли произвольная расстановка чисел на поле хоть с какой-то допустимой расстановкой мин, принадлежит классу NP-полных — той же категории труднейших задач, где обычно живут головоломки вроде судоку большого размера или раскраска графа в минимальное число цветов.

Игра как компьютер из мин

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

Что это значит для игрока на практике

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

Словарь теории графов, который прячется в игре

  • вершина — клетка поля
  • ребро — связь между соседними клетками
  • степень вершины — число соседей клетки, от трёх до восьми
  • ограничение — число на открытой клетке
  • задача выполнимости — поиск расстановки мин, согласованной со всеми числами сразу

Частые вопросы

Правда ли, что «Сапёр» всегда можно решить логикой без единой догадки

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

Что вообще значит NP-полная задача, по-простому

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

Как паттерн 1-2-1 помогает решить клетки логикой

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

При чём тут комбинаторика, если игра вроде бы вся про логику

Логика решает клетку однозначно только там, где ограничений достаточно для единственного ответа. Там, где условий не хватает, помогает подсчёт: сколько всего допустимых расстановок мин согласуется с текущей доской и в какой доле из них конкретная клетка оказывается миной. Это уже прямая комбинаторика, работа с числами, а не чутьё.