Лекция 7: Игры.

advertisement
Лекция 7: Игры.
Задачи про игры - весьма популярный вид олимпиадных задач, особенно в младших
классах. Как показывает опыт, наиболее общая проблема у начинающих - понять, "что
вообще от нас хотят", какие рассуждения являются правильным решением задачи, а какие
- нет.
Обычно предполагается (и мы не будем в дальнейшем это специально указывать!), что
играют двое, делая ходы по очереди (пропускать свой ход нельзя!), а в задаче спрашивают
"кто выиграет при правильной игре?" Стандартная ошибка по сути - понимать слова "при
правильной игре" так, как будто оба противника играют оптимальным для себя образом
(тем более, что решающий задачу часто неправильно понимает, что такое "оптимальным
образом"!). Тогда придумывается выигрышная стратегия, дающая ответ только на
оптимальный ход противника (обычно еще "оптимальным" считается такой ход, когда
противник следует придуманной нами же стратегии - хотя для другого игрока такая
стратегия может быть, наоборот, совсем никудышной!!!). На самом деле, надо уметь
придумывать ответ на любой ход противника, каким бы идиотским он нам не казался.
Обычно правильная стратегия, в отличие от липы, не имеет случаев разной сложности, а с
одинаковой легкостью находит достойный ответ на любой ход!
Игры-шутки.
Самый первый и простой класс игр - игры-шутки, в которых, на самом деле, нет никакой
стратегии (а нас хотят обмануть, что она якобы есть!). Просто... как бы кто ни ходил, либо
всегда выиграет первый игрок (тот, кто начинает игру), либо всегда второй. Задача - в том,
чтобы математически доказать такую закономерность (а заметить ее можно, сыграв
самому с собой раза 3-4). Для доказательства обычно находится какая-то величина,
которая понятно чему равна в начале и конце и понятно как изменяется на каждом ходу тут даже частенько число ходов до конца однозначно посчитать можно. Либо какой-то
инвариант (т.е. что-то, не меняющееся ни при какой ходе), однозначно зависящий от
начальной позиции (чаще всего - от четности) и определяющий выигравшего в конце.
Задача 1. Двое по очереди ломают шоколадку 5x8. За ход можно разломать любой кусок
по прямой линии между дольками. Проигрывает тот, кто не может сделать ход (И это
такое стандартное условие, что мы его будем подразумевать, если не сказано обратное.
Вопрос "кто выиграет при правильной игре?" тоже поздразумевается.)
Решение: Что значит, что игра закончилась? Конечно, что шоколадка уже вся разломана
на отдельные дольки. Долек всегда будет 5x8=40 штук, а шоколадка в начале была одна.
Заметим, что на каждом ходу один кусок шоколадки всегда разламывается на 2, т.е.
количество различных кусков шоколадки увеличивается на 1. В начале это кол-во было
равно 1, а в конце, как мы заметили, 40. Значит, игра продолжалась ровно 39 ходов
("ходом" мы называем ход одного игрока, а не пару "ход - ответный ход"). Поэтому
последний (39-й) ход был обязательно ходом первого (его ходы - первый, третий и все с
нечетными номерами) - и первый выиграл.
Вот такая получилась шутка - как ни ходи, первый всегда выигрывает ;-)
Упражнение: Решить ту же задачу в общем виде, про шоколадку MxN. (Должно
получиться, что второй выигрывает, если M и N оба нечетные, а иначе выигрывает
первый.)
Задача 2. На доске написаны 10 нулей и 10 единиц. За ход можно стереть две любые
цифры и написать вместо них 0, если они были одинаковые или 1, если они были разные.
Если на доске остается 1 - выигрывает первый. Если 0 - второй.
Решение: Ну, поскольку число цифр с каждым ходом уменьшается ровно на 1 (2 стираем,
одну пишем), а исходно их 20 и в конце должна остаться одна, то игра будет
продолжаться ровно 19 ходов. Последним ходом будет ход первого... только в этой задаче
(в отличие от предыдущей!) не факт, что первый тогда выиграет.
Выигрыш зависит от четности последнего числа, так давайте на нее и посмотрим... Такой
стандартный инвариант, как четность суммы всех чисел, не меняется при ходах.
Действительно, сумма двух одинаковых цифр - четна и, вычитая ее, мы прибавляем
четный ноль. А сумма двух разных цифр - нечетна (0+1=1), и мы прибавляем всесто нее
нечетную единицу. Исходно сумма всех чисел четна, т.к. среди них четное число
нечетных - единиц - (см. лекцию 1 "Четность"), поэтому и в конце будет четна. А это
значит, что последнее число, оставшееся в конце игры, будет четным, т.е. оно будет нулем
- и выигрывает второй.
(!) Заодно мы убедились, что не в любой игре тот, кто делает последний ход, выигрывает:
можно заставить (как оно тут и происходит) противника сделать ход, после которого он
проиграет.
Идея "идиотских ходов":
Задача 3. На доске 10x12 можно за ход вычеркнуть одну линию (горизонталь или
вертикаль, т.е. строку или столбец) если в ней еще есть одна невычеркнутая клетка.
Решение: (Да, проигрывает тот, кто не может сделать ход - если кто не понял.) Давайте
еще задачу слегка переформулируем: пусть линия не вычеркивается, а вырезается из
доски со склеиванием краев разреза. Тогда правило будет "можно вырезать любую
существующую линию" и игра заканчивается, когда от доски ничего не остается.
Пусть вдруг мы после своего хода оставили, скажем, доску с одной строкой. Конечно,
своим ходом противник может вырезать эту строку - и мы проиграем. Поэтому такой ход
был идиотским - давайте так его и называть. Посмотрим, когда нельзя будет не сделать
идиотского хода. Если доска 1xN (или Nx1) - то такой ход уже сделал противник. Если
ширина и высота доски не меньше 2, а большая из них - не меньше 3 - то вырежем линию
поперек большей размерности - и останется доска хотя бы 2x2. А вот если перед ходом
доска - 2x2, то ход обязательно будет идиотский (!). Ясно, что выиграет тот, кто оставит
противнику доску 2x2. На каждом ходу высота или ширина доски уменьшается на 1 (т.е.,
их сумма уменьшается на 1). Исходно эта сумма равна 10+12=22, в конце должна стать
2+2=4. Разность 22-4=18 - четное число ходов, поэтому доска 2x2 останется после хода
второго - и второй выиграет (как в обычной игре-шутке!).
Строго говоря: стратегия второго - играть как угодно, только не делая идиотских ходов.
Если первый где-то сделает идиотский ход (а это формально мешает загнать его на доску
2x2) - следующим ходом мы выигрываем. Если никто не сделает идиотского хода - то
после 18 ходов у первого будет доска 2x2 - и тут он все равно сделает идиотский ход.
Упражнение: Решить ту же задачу в общем виде, про доску MxN. (Вроде бы, первый
выигрывает при нечетном M+N, второй - при четном.)
Симметрия.
Сейчас мы познакомимся с мощным и красивым, но очень простым методом решения
игровых задач - симметричной стратегией. Суть его - делать каждый раз ход,
симметричный ходу противника или дополняющий его до чего-либо. Доказательство
правильности нашей стратегии будет пользоваться тем, что после каждого нашего хода
позиция симметрична: раз так, то если противник сумел сделать свой ход, то и мы
сможем сделать ход, симметричный ему. Неправильно думать что симметри - стратегия
только для второго игрока. Если исходная позиция - несимметрична, то обычно первый
игрок может ее как-то симметризовать, а потом играть по симметрии, отвечая на ходы
второго.
Задача 1. Двое по очереди кладут пятаки на круглый стол так, чтобы они не
накладывались друг на друга. (Проигрывает, как обычно, тот, кто не может сделать ход.)
Решение: Как бы так первому игроку сделать свой ход... куда можно положить пятак на
пустом круглом столе??? А давайте его в центр положим! Внимание: после такого хода
расположение пятаков на столе стало центрально симметричным(!!!) Теперь давайте
отвечать на каждый пятак второго игрока центрально симметричным ему пятаком.
Почему же мы стратегия никогда не обломается (и мы не проиграем)? Облом стратегии
означает ровно одно: второй положил куда-то пятак, а мы не смогли положить пятак в
симметричное место (там уже что-то лежит). После нашего предыдущего хода позиция
была симметричной (из симметричности не только сделанных ходов, но и самого стола),
а место, куда второй положил пятак было свободно. Центрально симметричное ему место,
куда мы хотим положить свой пятак, тоже было свободно. Но не мог же второй занять
это место своим пятаком (это тоже важно заметить, не во всех задачах так будет!!!).
Значит, не может быть так, чтобы нам некуда было положить свой пятак. Первый
выигрывает.
Задача 2. Двое по очереди ставят слонов в клетки шахматной доски так, чтобы они не
били друг друга (цвет слонов значения не имеет). Все как обычно.
Решение: Ну тут, казалось бы, без фокусов. Доска имеет размер 8x8, и никакая клетка
центром симметрии не будет. Поэтому второй может всегда отвечать на ходы первого
симметричными ходами и выиграет. НО: Пусть первый игрок поставил слона на
диагональ доски. Если второй игрок ставит своего слона в центрально симметричную
клетку, то он окажется на той же диагонали... как раз под боем слона, поставленного
первым игроком! Действительно, бывает так, что очередному симметричному ходу
мешает ход, только что сделанный противником (поэтому надо внимательно следить за
такими ситуациями!).
Выход из положения - применить симметрию не центральную, а осевую (относительно
средней линии доски). Нетрудно убедиться, что клетку, симметричную своей позиции
относительно оси, слон никогда не бьет. После каждого хода второго вся позиция
симметрична, в т.ч. расположение не бьющихся полей; ход первого тоже не ставит под
бой поле, симметричное тому, куда он был сделан. Поэтому симметричное (теперь относительно оси!) поле не бьется. Второй всегда может сделать ход и выигрывает.
Задача 3. На доске 10x12 можно за ход вычеркнуть одну линию (горизонталь или
вертикаль, т.е. строку или столбец) если в ней еще есть одна невычеркнутая клетка.
Решение: (Нет, это не дежа вю, а иллюстрация, как можно искать стратегию там, где ее
нет. Причем это еще и окажется не менее красивым решением, чем первоначальное!)
Второй может использовать центральную симметрию (множество клеток, центрально
симметричных линии - линия). После каждого хода второго расположение линий, которые
еще можно вычеркнуть, центрально симметрично, поэтому стратегия работает и на
каждый следующий ход. Идиотский ход эта стратегия разбирает, как общий случай
(убедитесь сами!).
Задача 4. Есть две кучки камней, по 17 в каждой. За ход можно взять несколько камней,
из одной кучки.
Решение: И это тоже симметрия! Выигрывает второй - он берет из другой кучки столько
камней, сколько первый взял из одной. При этом после каждого хода второго камней в
обеих кучках будет поровну - поэтому стратегию можно продолжать.
А если бы кучки были неравны, то выиграл бы первый. Первым ходом он взял бы из
большей кучки столько камней, чтобы уравнять ее с меньшей, а далее пользовался бы
изложенной выше стратегией.
(!) На самом деле, нередкое явление: в зависимости от исходных данных одна и та же
стратегия приносит успех то первому, то второму игроку.
Задача 5. Есть одна кучка из 48 камней. За ход можно взять из нее от 1 до 3 камней.
Решение: Еще один распространенный вариант симметрии. Сколько бы не взял первый
игрок, второй может взять несколько камней, дополняя его число до четырех. Т.о., за
каждую пару ходов первый и второй берут 4 камня. Каждый раз после хода второго число
камней в кучке делится на 4, а после хода первого - не делится. При этом 0 камней (т.е.
ситуация, когда нельзя сделать ход) неминуемо достанется первому игроку, т.к. 0 делится
на 4. Выигрывает второй.
Опять же, если бы число камней в кучке не делилось бы на 4, выиграл бы первый. Сначала
он взял бы столько камней, чтобы число оставшихся делилось на 4, затем воспользовался
бы нашей симметрией.
Анализ выигрышных позиций.
Бесспорно, самый мощный и универсальный способ решения заач на игры - поиск
выигрышных позиций. Здесь мы будем называть выигрышной ту позицию, которую
выгодно оставлять после своего хода, а проигрышной, соответственно, ту, которую
невыгодно (в согласии с одной половиной методической литературы и в
противоположность другой половине :-) Тогда финальная позиция, из которой уже нельзя
сделать ход - выигрышная. Основные свойства позиций таковы:
1.) каждая позиция - либо выигрышная, либо проигрышная (промежуточных вариантов
нет!);
2.) из выигрышной позиции можно пойти только на проигрышную;
3.) из любой проигрышной позиции можно пойти на выигрышную.
Тогда, если начальная позиция - проигрышная, выигрывает первый, если выигрышная второй. Стратегия одинакова: каждый раз ходить на выигрышную позицию. Тогда
противник должен будет походить на проигрышную позицию (свойство 2), а мы опять
сможем пойти на выигрышную (свойство 3).
Задача 1. "Хромая ладья" может ходить по прямой вправо или вверх. Исходно она стоит в
нижнем левым углу доски. Играют двое. Выигрывает тот, кто поставит ладью в верхний
правый угол.
Решение: Исходно ладья стоит на главной (в данном случае - главной) диагонали доски.
Первый игрок своим ходом уводит ее с диагонали в сторону. Тогда второй игрок может
вернуть ладью обратно на диагональ (посмотрите, как). Потом первый опять уведен ее с
диагонали (ходов с главной диагонали на нее же нет), а второй... опять сможет вернуть и
т.д. Так так клетка назначения лежит на главной диагонали, то на ней ладья обязательно
окажется после хода второго - и второй выигрывает.
Читаем между строк: "множество выигрышных позиций - это главная диагональ".
Анализ с конца: как же искать выигрышные позиции, если угадать их не удалось?
Можно просто последовательно разобрать все позиции, начиная с последней (желательно,
для удобства, чтобы множество позиций умещалось на двумерной доске/таблице).
Финальная позиция выигрышная. Поэтому все, с которых на нее можно пойти проигрышные. Теперь должны образоваться позиции, с которых можно пойти только на
проигрышные - они будут выигрышными. Все позиции, с которых можно пойти на какуюто из этих выигрышных - проигрышные и т.д., пока не дойдем до начальной позиции.
Задача 2. "Хромой король" может ходить на 1 клетку вправо, вверх или вверх-вправо.
Исходно он стоит в нижнем левым углу доски. Играют двое. Выигрывает тот, кто
поставит короля в верхний правый угол.
Решение: Будем отмечать позиции на доске ("+" - выигрышная, "-" - проигрышная).
Позиция в верхнем правом углу - финальная - выигрышная. 3 соседние, с которых можно
на нее пойти - проигрышные (см. табл.).
?????? - +
?????? - ??????? ?
??????? ?
??????? ?
??????? ?
??????? ?
??????? ?
???? - + - +
???? - - - ????? ? - +
????? ? - ????? ? ? ?
????? ? ? ?
????? ? ? ?
????? ? ? ?
?? - + - + - +
?? - - - - - ??? ? - + - +
??? ? - - - ??? ? ? ? - +
??? ? ? ? - ??? ? ? ? ? ?
??? ? ? ? ? ?
-+-+-+-+
--------+-+-+-+
--------+-+-+-+
--------+-+-+-+
--------
Далее отмечаем две выигрышных позиции (с них можно идти только на проигрышные) и
несколько проигрышных, с которых можно пойти на эти (см. табл. - вторую слева). Если
мы повторим это еще раз, то получим картинку на третьей табл. слева. После семи
повторений получаем, наконец, полную картину - как на табл. справа. Начальная позиция
(нижний левый угол) - проигрышная, поэтому выигрывает первый.
Задача 3. Есть две кучки камней: в одной 6, в другой 5. За ход можно взять несколько
камней из одной кучки или поровну камней из обеих кучек.
Решение: Занесем позициии в таблицу, где по двум осям будем отмечать количество
камней в двух кучках. Финальная позиция (0,0) - нижний левый угол, начальная - верхний
правый. Возможные переходы: влево по горизонтали, вниз по вертикали или влево-вниз
по диагонали на любое количество клеток. Если мы отметим финальную выигрышную
позицию и все, откуда на нее можно пойти, то получим картину, как на табл. слева.
Результат окончательного нахождения позиций можно видеть на табл. справа. Опять
начальная позиция проигрышная и выигрывает первый.
5 - ????- ?
4 - ??? - ??
3 - ??- ???
2 - ? - ????
1 - - ?????
0+ - - - - - x0 123456
5- - -+- - 4- - - - - - 3- - - - -+2-+- - - - 1- -+- - - 0+ - - - - - x01 23456
Download