Скільки існує різних способів, щоб мати мат у ранній грі?


15

Ми всі знаємо, що найкоротший можливий мат - чотиримісний:

  1. f3 e5

  2. g4 Qh5 #

Це не єдине можливе замовлення на переміщення. Насправді їх є 8, залежно від того, чи білий бік переміщає пішаку f або g спочатку, чи переміщує пішак f до f3 чи f4, і чи грає чорний e6 чи e5. Звичайно, це складає лише мініатюрну частину можливих 4-х шарових послідовностей ходів, але це єдині, які закінчують гру.

Що я шукаю - це для невеликої кількості планів, скільки послідовностей рухів закінчується у мат-масі проти не закінчується в мат. В ідеалі те, що мені хотілося, - це щось, що відповідає

  • 4-х шаровий: X нетестових послідовностей, 8 4-х шарових контрольних команд
  • 5-шаровий: Y нетестові послідовності, 8 4-х шарові контрольні команди, N 5-шарові контрольні
  • 6-шаровий: Z нетестові послідовності, 8 4-х шарові контрольні команди, N 5-шарові контрольні команди, M 6-шарові контрольні

і так далі настільки глибокі, як це розумно робити.

Це надихає запитання Math.SE про ймовірність того, що два гравці роблять випадкові ходи, в результаті чого одна і та сама шахова гра. Я підозрюю, що короткі ігри сильно переважають над цією ймовірністю, що повинно зробити ймовірність легко наблизити, але було б непогано мати справжні цифри, з якими можна працювати.



2
Виходячи з контексту вашого запитання, вам також може бути цікаво знати, що гра може закінчитися внічию через повторення приблизно в 8 шарів.
ДМ

1
Я не думаю, що даних, яких ви тут запитуєте, достатньо, щоб забезпечити точні межі ймовірностей у питанні Math.SE. Вам потрібна додаткова інформація про структуру ігрового дерева. (Для ілюстративного контрприкладу розгляньте гру, де для першого ходу є два можливі варіанти: A і B. Якщо перший хід A, то для другого ходу є 1 мільйон різних можливих варіантів, тоді як якщо це B, то єдиний можливий другий хід - C. Зараз у грі є 1 000 001 можливих дві послідовності руху, але ймовірність того, що випадковий гравець закінчиться грою в послідовності B, C - 50%.)
Ilmari Karonen

@IlmariKaronen Це правда, і я думав про це, оскільки розмістив питання. Однак я не думаю, що коефіцієнт поширення на коефіцієнт розгалуження дерева ігор швидко збільшується, за винятком рядків, що містять чек. Якщо сумарний внесок у ймовірність швидко відпадає від рівня, наближення все ще має працювати досить добре.
очне яблуко

Відповіді:


26

Немає контрольних матчів з 0-3 класів.

4 ply: 8 checkmates, 197,281 total nodes
5 ply: 347 checkmates, 4,865,609 total nodes
6 ply: 10,828 checkmates, 119,060,324 total nodes
7 ply: 435,767 checkmates, 3,195,901,860 total nodes
8 ply: 9,852,036 checkmates, 84,998,978,956 total nodes
9 ply: 400,191,963 checkmates, 2,439,530,234,167 total nodes

"контрольні матчі" - це кількість рухів контрольної передачі, зроблених на остаточному шарі. Отже, для 5-ти шарових, існує 347 контрольних послідовностей точно довжини 5.

Ці значення отримані з: https://www.chessprogramming.org/Perft_Results

Наразі немає даних контрольної матки на 10 і більше рівнів, імовірно, через необхідні обчислювальні ресурси.

Щоб отримати більш конкретні дані (наприклад, самі рядки), вам потрібно буде написати власну програму perft, яка зберігає рядки, що закінчуються в матчі.


13

Ця послідовність цілих чисел відома як A079485 в он-лайн енциклопедії цілочисельних послідовностей (OEIS), і цифри до і включають 13 шарів відомі з різними доступними посиланнями.


REFERENCES Homer Simpson, Chess Review, Jan-Feb 1982. Гаразд, я склав частину цього, але це було б смішно ...
Майкл

У OEIS насправді є все, чи не так?
очне яблуко

8

Ось проста програма Python, яка відповідає на питання, але повільна, займає 40 хвилин на своєму ноутбуці (і збільшується принаймні в 30 разів на додатковий шар). Приємно, що він роздруковує ігри, якщо вам це потрібно. Я міг розмістити висновок тут, але не хотів робити 347-рядкову відповідь ... :-)

import chess
from chess import pgn

def dfs(board, depth):
    global n
    result = board.result(claim_draw=True)
    if result != '*':
        game = pgn.Game.from_board(board)
        print(game.mainline())
    elif depth > 0:
        moves = list(board.legal_moves)
        for move in moves:
            n += 1
            board.push(move)
            dfs(board, depth-1)
            board.pop()

n = 0
try:
    board = chess.Board()
    dfs(board, 4)
except KeyboardInterrupt:
    pass
print(n, 'positions checked')

Для подальшої довідки ви можете кинути такі речі, як цей вихід на pastebin.com; вибір ніколи не закінчується.
Джейсон C

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

7

Першокласна особа, яку я знаю для такого роду аналізу, - Франсуа Лабелль, який обчислив багато чисел, пов’язаних із шахами (включаючи оцінку максимального темпу зростання кількості шахових ігор як функції класу) і, зокрема, обчислив кількість контрольних номерів до рівня 13. Щодо значень до 12, див. малюнок на веб-сторінці http://wismuth.com/chess/chess.html .

Потім на веб- сайті http://wismuth.com/chess/statistics-games.html він дає конкретні цифри до 13-ти, у яких, очевидно, 346,742,245,764,219 гри в мат.

Щодо загальної кількості ігор, він наводить результати інших, хто піднявся до рівня 15 (!), Але, думаю, вони не відстежили контрольних команд.

З плів 5-13 є приблизно 1 шанс на 10000, що хід приносить пару. Але, здається, значно легше спаровуватися як Білий порівняно з Чорним:

графік шару проти шансів, що стосуються товариша

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

Мені подобаються випадкові ігри в шахи. Іноді було б непогано пов’язати це з онлайн-квантовим генератором випадкових чисел, щоб мати програму, яка грає у всі ігри в шахи, якщо гіпотеза про багато світів дотримана.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.