| Здравствуйте, гость | Правила · Помощь |
Все темы | | | |
| » Поиск стратегии антагонистической игры., из книги Вербера "Тайна богов" | | | |
|
|
|
Игра похожа на покер. Оптимальная стратегия - подстраиваться под стратегию соперника и менять свою. Кто лучше подстроится, тот и выиграет.
|
|
|
|
Дела давно минувших дней
Больше десяти лет назад при разработке корпоративной системы подумал: в Windows есть всякие игрушки типа пасьянса, минера и т.п., а нашей системе нет. И дня за три-четыре встроил в систему игрушку Орел-Решка. Игра проста. Машина предлагает игроку задумать число 0 или 1 и нажать любую клавишу, игрок выполняет, машина выдает на экран предположение о задуманном, игрок вводит задуманное число, система сравнивает предположение и задуманное, выдает протокол и статистику на экран. Цикл повторяется. Для выигрыша достаточно набрать больше 50% очков. Игрок мог завершить игру в любой момент. Единственное условие: зачет результата игры производился лишь в том случае, если было сделано не менее 101 хода. Интерфейс простейший, поэтому эти ходы можно было сделать менее, чем за минуту. Было реализовано четыре уровня сложности: от Новичка (по сути машиной использовался имевшийся по рукой датчик случайных чисел) до Чемпиона (с авторскими ухищрениями). ![]() Рис.1 Меню Чем выше уровень сложности, тем сложнее игроку было одолеть машину. Практически мало кому из игроков удалось обыграть Чемпиона. Правда, число игравших сравнительно невелико. Нашелся один дотошный пользователь, который рассказал, что он после нескольких безуспешных попыток поставил целью обыграть машину. Сидел часа два-три (почти как очная шахматная партия), сделал около 400 ходов, вышел на 50% с какими-то долями и отфиксировал победу. Правда, в данной версии реализации программы у игрока есть небольшое преимущество: после 101 хода он может лично принимать решение о завершении игры. Правильнее было бы реализовать программу так: перед игрой пользователь вводит номер хода (большего 101), после которого игра завершается автоматически. Чтобы показать как это выглядит реально, сыграл для примера начало партии. Числа вводил особо не задумываясь. Результат игрока после 13 ходов виден (30.77%). Нижняя строка с ником пользователя – это статистика результатов его предыдущих партий. ![]() Рис.2 Протокол партии Система работает до сих пор, хотя и написана под DOS. В прошлом году была даже мысль предложить идею такой игрушки в качестве бота на гамблере. Но как подумал, что необходимо будет копать исходники, модернизировать алгоритм под другой контингент игроков… |
|
|
||
Вчера почитал условие, показалось интересным. Хотел предложить свою стратегию решения. Оказалось, что она практически совпадает с предложенной Зенкером. Да. Идея именно такая. Вытаскивать бочонки случайным образом. А вот количество бочонков каждого номинала должно быть подобрано теоретически. При этом предполагается, если оппонент будет использовать точно такой же набор бочонков, то игра должна закончиться вничью. При отличии его набора бочонков от нашего мы должны выиграть на длительной дистанции. То есть мат ожидание игры будет для нас больше нуля. Вопрос в том, как найти оптимальный набор бочонков? Я думаю, надо двигаться асимптотически шаг за шагом. То есть в качестве первого (точнее нулевого) шага взять предложенный в первом посте расчет МО. Фактически для равных вероятностей выпадения каждого из пяти чисел от 1 до 5. Вероятность этого для каждого числа равна 0,2. При этом таблица вероятностей для каждой из двух рук своя. И расчет МО для каждого тоже свой. Далее для второй руки разрешить изменение вероятностей в пределах скажем 0,05. При этом изменение производится таким образом, чтобы его МО стало наибольшим. После этого производится изменение первой руки с учетом изменившейся вероятности и т.д. В процессе иттерации допустимое изменение вероятности должно постепенно уменьшаться. При сходимости этого процесса, начиная с определенного шага эти вероятности для двух рук станут одинаковыми. Это и будет оптимальная стратегия. В принципе существует множество различных оптимизаторов, думаю и под данную задачу можно какой-нибудь из них использовать. Или разработать свой. Или вести подобную оптимизацию вручную. Важно только правильно подобрать допустимое изменение вероятностей и шаг от шага ее постепенно уменьшать. В противном случае можно легко выскочить за пределы решения и процесс может стать бесконечным. Попробую на досуге реализовать описанную схему, если кто-то меня не опередит. Это сообщение отредактировал magystr - 22/01/2009, 20:34 |
||
|
|
|
Кстати.
Второй вариант получения какого-то решения - движение от простого к сложному. То есть сначала то же самое для двух цифр 1 и 2. В этом случае решение очевидно. В мешке должны находиться только бочонки (можно и один) с числом 1. Тогда при ЛЮБОЙ стратегии оппонента мы гарантируем себе непроигрыш. Далее перейти к трем бочонкам. И т.д. Кстати для трех наверное решение должно быть достаточно простое. Сейчас голова отказывается думать. Это сообщение отредактировал magystr - 22/01/2009, 20:51 |
|
|
|
Да.
Вот тут быстро прикинул. Для чисел 1,2 и 3 НЕПРОИГРЫШНАЯ стратегия такая. Вероятность числа 1 - 0,5 вероятность числа 2 - 0,2 вероятность числа 3 - 0,3 То есть в мешке должно находиться 5 "единичек", 2 "двойки" и 3 "тройки", извлекаемые абсолютно случайным образом. Желающие могут попытаться оппровергнуть мою гипотезу, предложив ЗАВЕДОМО выигрышную стратегию против предложенной. Это сообщение отредактировал magystr - 22/01/2009, 21:20 |
|
|
||||
Алексей, Вы всё абсолютно правильно поняли. Наш "мешок" (генератор случайных чисел) должен быть настроен на формирование нашего "хода" (1,2,3,4 или 5) с заранее заданными фиксированными вероятностями. Такими - чтобы все пять условных матожиданий выигрыша/проигрыша были равны нулю. Если конечно есть решение у соответствующей системы уравнений (см.выше). Именно в этом моё предположение (за правильность не ручаюсь, но чую что прав). Найдём такой набор вероятностей - получим Оптимальную Стратегию. При этом устройство "мешка" (реализация ГСЧ) - непринципиально, важно лишь, что он настраивается как нам надо. Длительная дистанция тут ни при чём. Все "испытания" независимы и МО у них совпадает. (На то оно и МО - характеристика случайной величины). Поправка по матрице результатов (выше я опечатался) А:: 0, -3, 2, 3, 4 3, 0, -5, 2, 3 -2, 5, 0, -7, 2 -3, -2, 7, 0, -9 -4, -3, -2, 9, 0 Для фрагмента 3х3 легко заметить, что {5;2;3} является невырожденным решением системы трёх линейных однородных уравнений. И после нормировки получаем вероятности Х={0.5; 0.2; 0.3} - об этом совершенно справедливо написал magystr. |
||||
Все темы | | | |
« Предыдущая тема | Перечень тем | »
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
0 Пользователей:


