← «Свинья» против компьютера

Стратегия игры в кости «Свинья»: стоп на 20, стоп на 25 и оптимальная игра

«Свинья» — конечная игра случая, поэтому все числа здесь — точные вероятности, а не выборка: оптимальную стратегию мы посчитали сами итерацией ценности по всем 505 000 состояниям и оценили каждую стратегию против каждого уровня этой страницы, взятого из её кода без изменений. Сыгранные кодом самой страницы партии — по 200 000 на число — сходятся со всеми цифрами.
Коротко

В «Свинье» правило «стоп на 20» даёт больше всего очков за ход, но больше партий выигрывает «стоп на 25»: 47,9% против оптимального уровня этой страницы вместо 46,0% — четырёх ходов по 25 хватает до 100, а четырёх по 20 нет. Добавьте одно условие — когда у соперника 71 или больше, бросайте, пока не наберёте 100, — и простые правила дают 48,6–49,5% против идеальной игры, у которой самой потолок 50%. Тот, кто начинает, выигрывает 53,1% партий двух оптимальных игроков; на этой странице первого определяет бросок кости, ровно 50 на 50.

Правила этой страницы — точно

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

  • Одна кость. Выпавшие 2–6 прибавляются к очкам хода; единица сжигает их и передаёт кость.
  • «Стоп» переносит очки хода в банк и передаёт кость. До первого броска в ходе остановиться нельзя.
  • Цель — 100. Как только банк плюс очки хода достигают 100, вы победили — нажимать «Стоп» не нужно.
  • Кто начинает, решает жребий: каждая сторона бросает кость, при равенстве бросают снова, начинает тот, у кого больше. Это ровно 50 на 50.

Начинать выгодно. В партии двух оптимальных игроков первый выигрывает 53,06% — ровно столько же получили Неллер и Прессер в 2004 году. Если оба останавливаются на 20, первый выигрывает 53,47%. Так что, какой бы стратегии вы ни держались, когда жребий выпал вам, ждите примерно на шесть побед из ста больше, чем когда он выпал компьютеру.

Почему 20 и почему 25 выигрывает чаще

Довод за 20 — простая арифметика. Если на ходе k очков, ещё один бросок в среднем приносит 4 очка, когда выпадает не единица (5 раз из 6), и отнимает k, когда выпадает она (раз из 6). Бросать выгодно, пока 20/6 больше k/6, то есть пока k меньше 20. Поэтому «стоп на 20» даёт больше всего очков в банк за ход: в среднем 8,14.

Стоп наХодов, дошедших до целиОчков в банк за ход, в среднем
1547,0%7,85
2037,6%8,14
2530,0%8,00
3023,9%7,58

Но в «Свинье» побеждает тот, кто первым дошёл до 100, а не тот, кто больше всех записал за ход, и разница заметна. При «стопе на 20» удачный ход приносит 20–25 очков, и таких ходов обычно нужно пять; при «стопе на 25» хватает четырёх. Вот точные шансы на победу с постоянным порогом против каждого уровня этой страницы:

Ваш стоп напротив «стоп на 20»против «держит темп»против «оптимальной стратегии»
1544,3%40,1%41,2%
1847,2%43,5%44,1%
2050,0%44,8%46,0%
2248,3%44,8%44,6%
2450,8%47,5%47,8%
2551,2%47,1%47,9%
3046,1%41,6%42,6%
3347,3%47,0%45,4%

Кривая не гладкая: 22 хуже и 20, и 25, а 33 лучше 30. Каждая такая ступенька — порог, на котором меняется число нужных удачных ходов. Из всех постоянных порогов от 12 до 40 лучший против уровней «стоп на 20» и «оптимальная стратегия» — 25, а против «держит темп» — 24.

Против уровня «стоп на 20» ваш собственный стоп на 20 — зеркальная партия, ровно 50%. Стоп на 25 обыгрывает этот уровень в 51,2% случаев.

Оптимальная стратегия — посчитанная

Тодд Неллер и Клифтон Прессер решили эту игру в 2004 году (статья «Optimal Play of the Dice Game Pig»). Мы повторили расчёт независимо: итерация ценности по всем состояниям — ваш банк, банк соперника, очки хода — с точностью 10−14. В таблице — результат: при какой сумме за ход оптимальный игрок перестаёт бросать и останавливается.

Ваш банк ↓ / его →02040608090
02123263249до 100
201921243039до 100
4018192124до 100до 100
6016181618до 100до 100
70121111до 100до 100до 100
80до 100до 100до 100до 100до 100до 100

Из неё видны три закономерности, которые легко запомнить:

  • Счёт равный, игра в начале — стоп около 20. При 0:0 оптимальный игрок на 20 ещё бросает, а на 21 останавливается; разница между этими решениями — 0,06 процентного пункта шанса на победу.
  • Отстаёте — бросайте дольше, ведёте — останавливайтесь раньше. При 0 против 60 оптимальный игрок останавливается только на 32, при 60 против 0 — уже на 16.
  • Когда соперник близко, останавливаться вообще не нужно — бросайте до 100. При вашем банке 0 это начинается, когда у соперника 84, при 40 — когда 78, при 60 — когда 64. Если у вас самих 80 или больше, оптимальный игрок не останавливается до самой победы.

Поверхность бугристая, как и сказано в статье под игрой: с 20 в банке оптимальный игрок останавливается на 30 против соперника с 60, но на 25 — против соперника с 70. Точно её не воспроизводит ни одна формула, поэтому правила из следующего раздела — приближения.

Таблица, которую страница строит для верхнего уровня, совпадает с нашей с точностью до 0,000002 в каждом состоянии и принимает то же решение в 494 999 из 495 000 состояний, где есть выбор. Единственное исключение — 41 против 0 с 17 очками на ходе — почти ничья: варианты различаются на 0,00002 процентного пункта.

Правила, которыми можно пользоваться

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

Ваше правилопротив «стоп на 20»против «держит темп»против «оптимальной стратегии»
Стоп на 2050,0%44,8%46,0%
Стоп на 2551,2%47,1%47,9%
Стоп на 20; когда у соперника 71+, бросать до 10054,5%50,5%48,6%
Стоп на 25; когда у соперника 71+, бросать до 10053,5%49,9%48,7%
Держи темп и заканчивай гонку: если у кого-то 71+, бросать до 100; иначе стоп на 21 + (его банк − ваш) / 8 с округлением54,6%51,1%49,5%
Оптимальная стратегия54,0%51,4%50,0%
Наилучшая возможная стратегия против этого уровня55,5%52,9%50,0%

В этой таблице стоит заметить две вещи. Во-первых, «держи темп и заканчивай гонку» уступает идеальной игре всего полпункта: 49,5% против 50,0%. Во-вторых, оптимальная стратегия — не лучший способ обыгрывать слабого соперника. Она оптимальна против оптимального соперника; против «стопа на 20» она выигрывает 54,0%, а стратегия, рассчитанная именно против этого уровня, — 55,5%, и даже простое правило «держи темп» там обходит оптимальное.

«С округлением» — до ближайшего целого. Пример: у вас 30, у соперника 54. Он впереди на 24, 24 / 8 = 3 — останавливайтесь на 21 + 3 = 24. При ваших 54 против его 30 — на 21 − 3 = 18.

Что делает каждый уровень

Все три уровня играют по тем же правилам, что и вы, и бросают ту же кость; никто из них не жульничает.

  • «Стоп на 20». Бросает, пока ход стоит меньше 20 очков, при любом счёте. Гонку не включает никогда: даже при ваших 95 он записывает свои 20.
  • «Держит темп». Останавливается на 21 + (ваш банк − его банк) / 8 с округлением вниз — так что даже преимущество в одно очко опускает порог до 20, — но не ниже 15. Когда ваш банк доходит до 71, он бросает до 100.
  • «Оптимальная стратегия». Полная таблица Неллера и Прессера, которую браузер считает при загрузке страницы (в нашей проверке расчёт занял 78 миллисекунд). Компьютер выбирает тот из двух вариантов, бросок или стоп, у которого шанс на победу выше.
Банк компьютераВаш банк«Держит темп» останавливается на
0021
04026
40016
07029
071бросает до 100
803015

Последняя строка — особенность, о которой стоит знать. В статье под игрой сказано, что этот уровень бежит к 100, «как только чей-то банк подбирается к финишу», но в коде гонку включает только ваш банк, а в правиле Неллера и Прессера — любой. Когда у компьютера 80, а вы далеко позади, он записывает мелкие ходы по 15 вместо того, чтобы добить партию. Эта прореха приносит вам почти целый пункт: оптимальная игра выигрывает у этого уровня 51,4%, а у правила из статьи Неллера и Прессера выигрывала бы 50,5%.

Сколько здесь решает удача

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

Партий в матчеСтоп на 20 (46,0% за партию)Оптимальная игра (50,0% за партию)
1028%38%
5024%44%
10018%46%
5003%48%

Ровно половина побед здесь не считается выигрышем матча — поэтому даже столбец с 50% остаётся ниже половины. За пятьдесят партий четырёхпунктовое преимущество хорошей игры над «стопом на 20» всё ещё меньше разброса: одно стандартное отклонение вашего результата за пятьдесят партий — семь пунктов. Чтобы разница стала очевидной, нужно несколько сотен партий.

Точные шансы против каждого уровня немного зависят от того, кто начинает: со стопом на 20 против уровня «оптимальная стратегия» вы выигрываете 49,2% партий, которые начинаете сами, и 42,9% тех, что начинает он.

Вопросы и ответы

Какая лучшая стратегия в игре в кости «Свинья»?

Точный оптимум зависит от обоих счётов и уже посчитан (Неллер и Прессер, 2004), но короткое правило подходит к нему на полпункта: если у кого-то из игроков 71 или больше, бросайте, пока не наберёте 100; иначе останавливайтесь на 21 плюс отрыв соперника, делённый на 8. Против идеальной игры это правило выигрывает 49,5% партий, сама идеальная игра — 50%.

Стоит ли останавливаться на 20 в «Свинье»?

«Стоп на 20» даёт больше всего очков в банк за ход — в среднем 8,14, — но не больше всего побед. Против идеальной игры он выигрывает 46,0% партий, а «стоп на 25» — 47,9%: четырёх ходов по 25 хватает до 100, а по 20 обычно нужно пять. Ещё больше даёт другое: перестать останавливаться, когда у соперника 71 или больше.

Есть ли в «Свинье» преимущество первого хода?

Есть. При цели 100 первый игрок выигрывает 53,06% партий у оптимального соперника, будучи оптимальным сам, и 53,47%, если оба останавливаются на 20. На этой странице первого определяет бросок кости, так что преимущество достаётся каждой стороне ровно в половине партий.

Когда останавливаться в «Свинье»?

В начале партии при равном счёте — примерно на 20–25 очках за ход. Отстаёте — останавливайтесь позже, ведёте — раньше: при 0 против 60 оптимальный игрок останавливается только на 32. Когда у соперника под 80 и больше (тем раньше, чем больше у вас самих) или вам нужно 20 и меньше, не останавливайтесь вовсе — бросайте до победы.

Решена ли игра «Свинья»?

Да. Тодд Неллер и Клифтон Прессер в 2004 году посчитали оптимальную стратегию для «Свиньи» вдвоём до 100 очков — итерацией ценности примерно по полумиллиону состояний. При оптимальной игре первый выигрывает 53,06%. Решена — не значит предрешена: оптимальный игрок всё равно проигрывает сильному сопернику почти половину партий.

Можно ли обыграть компьютер в «Свинью»?

Часто. Против уровня «оптимальная стратегия» на длинной дистанции больше 50% не получить, а приличное правило даёт 48–49,5%. У «стопа на 20» можно выигрывать до 55,5%, у «держит темп» — до 52,9%: например, останавливаясь около 20–25 и бросая до 100, как только компьютер перешагнёт 71.

Сыграть в «Свинью» с компьютером →
Куда отсюда
Как сослаться: «Стратегия игры в кости «Свинья»: стоп на 20, стоп на 25 и оптимальная игра», You vs Computer, https://youvscomputer.com/games/ru/pig-strategy.html