Файл: Решения задач с использованием понятия выигрышной стратегии.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 49

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

РЕШЕНИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ПОНЯТИЯ «ВЫИГРЫШНОЙ СТРАТЕГИИ»

.

Выигрышные и проигрышные позиции

Все позиции в простых играх делятся на выигрышные и проигрышные.

.

Выигрышные и проигрышные позиции характеризуются так:

.

Методы решения:

Пример:

Вопросы:

ДЕРЕВО ИГРЫ

Вопросы:

 Ответы:

1) «да»; действительно, убрав всего одну спичку первым ходом, 1-ый игрок всегда может выиграть на следующем ходу

2) «нет», потому что если первый игрок сначала убрал одну спичку, второй всегда проиграет, если первый не ошибется

.

Типы заданий:

ИГРА С ОДНОЙ КУЧЕЙ КАМНЕЙ

if x>=29 and p==3: return True позиция Вани=3 (победа)

if x<29 and p==3: return False проигрыш

if x>=29: return False выиграл не тот, кто нужен

if p%2==1:

return F(x+1, p+1) and F(x*2, p+1) нечетные ходы Вани

else:

return F(x+1, p+1) or F(x*2, p+1) четные ходи Пети

for s in range(1, 29): перебираем все возможные ходы

if F(s, 1):

print(s)

p.s. Х-количество камней в куче, р-позиция игры

def F(x, p):

def F(x, p):

if x>=29 and p==4: return True Петя должен выиграть 2 ходом, значит позиция р=4

if x<29 and p==4: return False

if x>=29: return False

if p%2==0:

return F(x+1, p+1) and F(x*2, p+1)

else:

if F(s, 1):

print(s)

def F(x, p):

def F(x, p):

if x>=29 and (p==3 or p==5): return True либо Ваня выигрывает 1 ходом или 2

if x<29 and p==5: return False

if p%2==1:

else:

return F(x+1, p+1) or F(x*2, p+1)

def F1(x, p): т.к. нет гарантии выиграть 1 ходом, добавляем еще 1 функцию

if x>=29 and p==3: return True

if x<29 and p==3: return False

if p%2==1: return F1(x+1, p+1) and F1(x*2, p+1)

else:

return F1(x+1, p+1) or F1(x*2, p+1)

if F(s, 1):

print(s)

print()

if F1(s, 1):

print(s)

ИГРА С двумя КУЧами КАМНЕЙ

return F(x+1, y, p+1) or F(x*2, y, p+1) or F(x, y+1, p+1) or F(x, y*2, p+1)

if F(s, 7, 1):

print(s)

def F(x, y, p):

def F(x, y, p):

if x + y >= 77 and p==4: return True

if x + y < 77 and p==4: return False

if p%2==0: return F(x+1, y, p+1) and F(x*2, y, p+1) and F(x, y+1, p+1) and F(x, y*2, p+1)

else:

return F(x+1, y, p+1) or F(x*2, y, p+1) or F(x, y+1, p+1) or F(x, y*2, p+1)

if F(s, 7, 1):

print(s)

def F(x, y, p):

def F(x, y, p):

if x + y >= 77 and (p==3 or p==5): return True

if x + y < 77 and p==5: return False

if p%2==1: return F(x+1, y, p+1) and F(x*2, y, p+1) and F(x, y+1, p+1) and F(x, y*2, p+1)

else:

def F1(x, y, p):

if x + y >= 77: return False

if p%2==1: return F1(x+1, y, p+1) and F1(x*2, y, p+1) and F1(x, y+1, p+1) and F1(x, y*2, p+1)

else:

return F1(x+1, y, p+1) or F1(x*2, y, p+1) or F1(x, y+1, p+1) or F1(x, y*2, p+1)

for s in range(1, 70):

if F(s, 7, 1):

print(s)

print()

if F1(s, 7, 1):

print(s)

РЕШЕНИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ПОНЯТИЯ «ВЫИГРЫШНОЙ СТРАТЕГИИ»

  • 19-е задание: «Анализ алгоритма логической игры» Уровень сложности — повышенный, Требуется использование специализированного программного обеспечения — нет, Максимальный балл — 1, Примерное время выполнения — 6 минут. Проверяемые элементы содержания: Умение анализировать алгоритм логической игры
  • 20-е задание: «Поиск выигрышной стратегии» Уровень сложности — повышенный, Требуется использование специализированного программного обеспечения — нет, Максимальный балл — 1, Примерное время выполнения — 6 минут. Проверяемые элементы содержания: Умение найти выигрышную стратегию игры
  • 21-е задание: «Дерево игры для выигрышной стратегии» Уровень сложности — повышенный, Требуется использование специализированного программного обеспечения — нет, Максимальный балл — 1, Примерное время выполнения — 10 минут. Проверяемые элементы содержания: Умение построить дерево игры по заданному алгоритму и найти выигрышную стратегию

.

Выигрышные и проигрышные позиции

Все позиции в простых играх делятся на выигрышные и проигрышные.

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

.

Выигрышные и проигрышные позиции характеризуются так:

  • позиция, из которой все возможные ходы ведут в выигрышные позиции – проигрышная;
  • позиция, из которой хотя бы один из последующих возможных ходов ведет в проигрышную позицию — выигрышная, при этом стратегия игрока состоит в том, чтобы перевести игру в эту проигрышную (для оппонента) позицию

.

Методы решения:

  • выигрышную стратегию в несложных играх, достаточно использовать метод перебора всех возможных вариантов ходов игроков;
  • Составление программы,
  • Использование MS Excel

Пример:

Игра: В кучке лежит 5 спичек; два игрока убирают спички по очереди, причем за 1 ход можно убрать 1 или 2 спички; выигрывает тот, кто оставит в кучке 1 спичку(победное число)

Вопросы:

ДЕРЕВО ИГРЫ

Вопросы:

 Ответы:

1) «да»; действительно, убрав всего одну спичку первым ходом, 1-ый игрок всегда может выиграть на следующем ходу

2) «нет», потому что если первый игрок сначала убрал одну спичку, второй всегда проиграет, если первый не ошибется

.

Типы заданий:

ИГРА С ОДНОЙ КУЧЕЙ КАМНЕЙ

  • Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два разаНапример, имея кучу из 15 камней, за один ход можно получить кучу из 16 или 30 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
  • Игра завершается в тот момент, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 29 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 28.
  • Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока - значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника.

  • Задание 19 ЕГЭ а) Укажите такие значения числа S, при которых Петя может выиграть в один ход. б) Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию Вани.

if x>=29 and p==3: return True позиция Вани=3 (победа)

if x<29 and p==3: return False проигрыш

if x>=29: return False выиграл не тот, кто нужен

if p%2==1:

return F(x+1, p+1) and F(x*2, p+1) нечетные ходы Вани

else:

return F(x+1, p+1) or F(x*2, p+1) четные ходи Пети

for s in range(1, 29): перебираем все возможные ходы

if F(s, 1):

print(s)

p.s. Х-количество камней в куче, р-позиция игры

  • Задание 20 ЕГЭ Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причем: - Петя не может выиграть за один ход; - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для указанных значений S опишите выигрышную стратегию Пети.

def F(x, p):

def F(x, p):

if x>=29 and p==4: return True Петя должен выиграть 2 ходом, значит позиция р=4

if x<29 and p==4: return False

if x>=29: return False

if p%2==0:

return F(x+1, p+1) and F(x*2, p+1)

else:

if F(s, 1):

print(s)

  • Задание 21 ЕГЭ Укажите значение S, при котором: - у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; - у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

def F(x, p):

def F(x, p):

if x>=29 and (p==3 or p==5): return True либо Ваня выигрывает 1 ходом или 2

if x<29 and p==5: return False

if p%2==1:

else:

return F(x+1, p+1) or F(x*2, p+1)

def F1(x, p): т.к. нет гарантии выиграть 1 ходом, добавляем еще 1 функцию

if x>=29 and p==3: return True

if x<29 and p==3: return False

if p%2==1: return F1(x+1, p+1) and F1(x*2, p+1)

else:

return F1(x+1, p+1) or F1(x*2, p+1)

if F(s, 1):

print(s)

print()

if F1(s, 1):


print(s)

ИГРА С двумя КУЧами КАМНЕЙ

return F(x+1, y, p+1) or F(x*2, y, p+1) or F(x, y+1, p+1) or F(x, y*2, p+1)

if F(s, 7, 1):

print(s)

def F(x, y, p):

def F(x, y, p):

if x + y >= 77 and p==4: return True

if x + y < 77 and p==4: return False

if p%2==0: return F(x+1, y, p+1) and F(x*2, y, p+1) and F(x, y+1, p+1) and F(x, y*2, p+1)

else:

return F(x+1, y, p+1) or F(x*2, y, p+1) or F(x, y+1, p+1) or F(x, y*2, p+1)

if F(s, 7, 1):

print(s)

def F(x, y, p):

def F(x, y, p):

if x + y >= 77 and (p==3 or p==5): return True

if x + y < 77 and p==5: return False

if p%2==1: return F(x+1, y, p+1) and F(x*2, y, p+1) and F(x, y+1, p+1) and F(x, y*2, p+1)

else:

def F1(x, y, p):

if x + y >= 77: return False

if p%2==1: return F1(x+1, y, p+1) and F1(x*2, y, p+1) and F1(x, y+1, p+1) and F1(x, y*2, p+1)

else:

return F1(x+1, y, p+1) or F1(x*2, y, p+1) or F1(x, y+1, p+1) or F1(x, y*2, p+1)

for s in range(1, 70):

if F(s, 7, 1):

print(s)

print()

if F1(s, 7, 1):

print(s)

29>29>29>29>