Это на самом деле не столько вопрос программирования, сколько вопрос теории игр. Далее следует набросок теоретико-игрового анализа проблемы.
У нас есть игра двух игроков (A и B). Игра для двух игроков - это всегда игра с нулевой суммой, то есть выигрыш одного игрока - это проигрыш для другого. Даже если выигрыши в игре не равны нулю (т. Е. Есть результаты, которые дают положительные выплаты обоим игрокам), выплаты всегда можно нормализовать (принимая их разницу), поэтому мы можем без потери общности предположить, что игра здесь также равна нулю Итоговая игра. Из этого мы делаем вывод, что если целью А является максимизировать [минимизировать] количество встреч с агентами Б, то целью Б является минимизация [максимизация] количества встреч с агентами А.
На основании описания далее предполагается, что A и B выбирают свои ходы одновременно, то есть A выбирает слоты для агентов A, не зная, какие слоты будут собирать агенты B, и наоборот. Без этого предположения, т. Е. Если B видит ходы A, B очень легко "выиграть".
Позвольте X быть набором всех возможных назначений агентов A доступным слотам (подчиняющимся ограничениям для текущего раунда или поворота), то есть X является набором подмножеств слотов; каждое подмножество, обозначающее назначение агентов именно этим слотам в подмножестве. Аналогично, пусть Y будет множеством всех возможных назначений агентов B доступным слотам (аналогично, подчиняясь ограничениям для агентов B). Сейчас есть четыре игры. В каждой игре A выбирает элемент x из X, а b выбирает элемент y из Y, после чего:
- В игре I.a, A выигрывает, если x и y делят слот, в противном случае B выигрывает (в этой игре A пытается провести хотя бы одну встречу)
- В игре I.b A получает положительный выигрыш, эквивалентный количеству общих слотов в x и y (в этой игре A пытается максимизировать количество собраний)
- В игре II.a, A выигрывает, если x и y не делят слот, в противном случае B выигрывает (в этой игре A пытается избежать любых встреч)
- В игре II.b A получает отрицательный выигрыш, эквивалентный количеству общих слотов в x и y (в этой игре A пытается минимизировать количество собраний)
Все эти игры могут быть проанализированы с использованием стандартных теоретико-игровых методов. Мы фокусируемся на игре I.a, а остальное оставляем читателю в качестве упражнения. Если имеется элемент y из Y, доступный так, что ни один из x в X не использует общий слот с y, B выбирает y и выигрывает; поэтому предположим, что нет, то есть предположим, что каждый y в Y соответствует по меньшей мере одному x в X, так что x и y совместно используют слот. A не может играть с помощью какой-либо детерминированной стратегии, потому что B может противостоять ей, выбрав y, который не делит слот с детерминистически выбранным x; поэтому А должен играть по смешанной стратегии, то есть по рандомизированной стратегии точно так же, как смешанная стратегия 1/3 - 1/3 - 1/3 оптимальна для Рошамбо (камень-ножницы-бумага). В ответ также будет играть смешанная стратегия. Вероятности различных элементов X и Y продиктованы количеством совпадающих наборов, то есть элементы x из X, имеющие общие слоты со многими Y, будут иметь более высокую вероятность в смешанной стратегии, чем те, которые имеют общие слоты только с несколько Y.
Расчет стабильных смешанных стратегий (равновесие Нэша для этой игры) теоретически прост, и с любым базовым справочником по теории игр можно ознакомиться.