Поддержка у нас есть таблица n * m, и два игрока играют в эту игру. Они, в свою очередь, исключают ячейки . Игрок может выбрать ячейку (i, j) и исключить все ячейки от (i, j) до (n, m), и кто исключает последнюю ячейку , теряет игры.Как выиграть эту игру?
Например, на плате 3 * 5 игрок 1 исключает ячейку (3,3) - (3,5), а игрок 2 исключает (2,5) - (3,5), текущую плату как это: (O означает, что ячейка не исключено, а х означает, что исключается)
3 O O x x x
2 O O O O x
1 O O O O O
1 2 3 4 5
и после того, как игрок 1 исключает клетки от (2,1) до (3,5), доска становится
3 x x x x x
2 x x x x x
1 O O O O O
1 2 3 4 5
Теперь игрок 2 исключает клетки из (1,2) до (3,5), который выходит только (1,1) чистый:
3 x x x x x
2 x x x x x
1 O x x x x
1 2 3 4 5
Таким образом, игрок 1 должен исключить единственную (1,1) ячейку, поскольку один игрок должен исключить хотя бы одну ячейку за ход, и он проиграет игру.
Очевидно, что в случаях n * n, 1 * n и 2 * n (n> = 2) тот, кто первым выигрывает.
Моя проблема в том, что существует ли какая-либо стратегия для игрока, чтобы выиграть игру во всех случаях? Должен ли он играть первым?
P.S
Я думаю, что это связано со стратегиями как динамического программирования или разделяй и властвуй, но не пришел к идее еще. Поэтому я размещаю его здесь.
Ответ
Благодаря sdcwc's link. Для таблиц размером больше 1 * 1 победит первый игрок. Доказательство следовать: (заимствовано из вики-страницы)
Оказывается, что для любого прямоугольного начиная с позиции больше, чем 1 × 1 1-й игрок может выиграть. Это может быть , показанный с использованием стратегии-воровства. Аргумент : предположим, что у 2-го игрока есть выигрышная стратегия против любого начального 1-го игрока. Предположим тогда , что 1-й игрок занимает только нижний правый квадрат . По нашему предположению , у 2-го игрока есть ответ , который заставит победу . Но если такой выигрышный ответ существует, то 1-й игрок мог сыграл его в качестве своего первого хода и таким образом заставил победу. Второй игрок поэтому не может иметь выигрышную стратегию .
И Zermelo's theorem обеспечивает существование такой выигрышной стратегии.
хотя интересное умственное упражнение, кажется более чем растянутым, чтобы назвать это связанным с программированием. по крайней мере, как написано. – goldPseudo
@goldPseudo Я думаю, что это связано с такими стратегиями, как динамическое программирование или разделение и победа, но пока не пришло в голову. Поэтому я размещаю его здесь. – ZelluX
Двумерный Nim? Интересно. –