问题标签 [game-theory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
164 浏览

algorithm - 如何为这种 2-4 人游戏选择获胜策略,仅算法

这是一个整数序列

整数序列以非递减顺序排列。

m(2<=m<=4)玩家轮流选择这些整数之一进行标记。如果一个整数被标记两次,它被最后选择它的玩家占据,并且玩家有另一个机会标记。(很明显,整数不能被第三次标记:)

玩家占据的整数之和就是玩家的最终得分。得分最高的玩家获胜。由于这些玩家都在玩他们最好的策略,因此根据整数序列决定哪一个将获胜。

看起来像 ACM-ICPC 问题?并不真地。真的是游戏:)

编辑

玩家不能通过他们的回合。

原因是,一个玩家只有在他/她没有动力去玩那个回合的时候才会想要通过一个回合。因此,如果player i通过一个回合,那么任何其他player j人也会看到他们没有动力去玩那个回合。所以他们最终也会通过转牌,游戏永远停滞不前。

例如,序列是 1,2。2 名球员正在比赛。第一个标记为 1,第二个也标记为 1,所以 player2 得 1 分。然后player2又有机会tag,1不能tag,所以tag了2。现在轮到player1,他只能tag 2,tag 2后得2分。本场比赛后,player1得2分而 player2 得到 1。所以 player1 获胜。

0 投票
2 回答
1666 浏览

algorithm - 博弈论:MEX 规则和 Nimbers

我一直在阅读这个关于 Nimbers 和博弈论的小教程。

有人可以解释为什么mex 规则支配游戏位置的 nimber 吗?

见:http://en.wikipedia.org/wiki/Mex_(mathematics)

从最小排除序数来看,在我看来,一个状态的 Nimber 实际上是该人“无法”达到的最小状态。这对管理当前游戏的状态有何帮助?

我在 Wikipedia 上看到了一个证明,但我对此一无所知。 http://en.wikipedia.org/wiki/Sprague%E2%80%93Grundy_theorem#Proof

0 投票
1 回答
927 浏览

c++ - 如何使用事件序列对游戏进行编程

我正在用 C++ 为 NDS 编码。我正计划编写一个游戏,其中事件按顺序发生并根据玩家的选择而变化,就像决策树一样。例子:

===地点===

  • 走廊:玩家可以通过的两扇门
  • 浴室:地下室有秘密入口
  • 地下室:通往走廊
  • 卧室:通往浴室

===顺序===

在此处输入图像描述

在每个房间里,都会不断检查按键。所以这是编码我最初想到的序列的基本且通常不好的方法:

这种方法的许多缺点中的一些是:

  • 几乎不可能实现多人游戏,因为一切都需要不断更新
  • 几乎不可能更新其他功能(例如帧/时间跟踪器)
  • 添加在房间之间移动的选项会导致递归并可能导致内存溢出

所以,问题是:解决这些缺点的最佳选择是什么?

是的,我可以在 switch 语句中编写所有内容,并在 playGame 函数之外使用一个变量来跟踪 switch 语句中的位置,但结构似乎不可读或不合逻辑。

0 投票
0 回答
111 浏览

math - 大型博弈中的混合策略近似

我是博弈论的新手,正在考虑如何为特定游戏找到混合策略,以及如何找到可能太大而无法计算的游戏的良好混合策略近似值。

设置是这样的:

  • 我们有一个按位置大小降序排列的 2600 个位置列表,例如 a100、b100、..、z100、a99、b99、..、z99、...、a1、b1、..、z1(所以前 26 个位置的大小为 100 等)

  • 我们按顺序在各个地点之间循环,并将它们分组到各个地区。地区需要有一定的规模(现在假设为 100,但如果我们愿意,我们可以改变阈值),地区列表将如下所示:{a100}、{b100}、..、{z100} , {a99,b99}, {c99,d99}, .., {y50,z50}, {a49,b49,c49},...,{a33,b33,c33,d33},...

  • 用户想要访问一个位置,用户对访问哪个位置没有任何偏好

  • 对手最多可以控制位置总大小的 10%。如果用户访问了一个对手控制了至少一个位置的地区,那么用户就会受到威胁,否则用户是安全的。(注:位置总大小为 131300)

所以我的问题是:

首先,在给定设置的情况下,我将如何绘制零和支付矩阵?

如何为用户和对手找到混合策略?我是否应该随机选择一堆对手可以控制的位置,在这个子博弈中找到混合策略,然后多次重复这个过程?在如此大的矩阵上找到精确的解决方案是否可行?

我什至不确定将其作为一次性游戏还是一种捉迷藏游戏是否有意义?

对于帖子的长度和我的问题的含糊性质,我深表歉意,但我刚刚开始学习博弈论,找不到很多与我提出的问题相关的文献。提前致谢。

0 投票
1 回答
680 浏览

matlab - matlabFunction 有什么好的替代品?

我在 MATLAB 中编写了一个小程序,使用 TU 游戏的多线性扩展来计算 Shapley 值。但是,我在使用 MATLAB 的符号数学工具箱时遇到了麻烦。在程序中,我必须集成一组函数来获得 Shapley 值。但是,在 MATLAB 程序中,我不能使用 int() 命令

因此,我必须改用integral()。在这种情况下,我需要使用 matlabFunction() 将表达式集转录为 MATLAB 函数句柄。但是,在我可以访问此命令的所有 Linux 机器(MATLAB R2014a)上都不起作用(请参阅下面的讨论)。作为一种解决方法,MATLAB 程序将函数集返回到当前工作区,在那里可以使用 int() 命令计算 Shapley 值。

为了使讨论更具体,让我们首先考虑这个小的 MATLAB 程序。

注释部分是在程序内部不起作用的部分,但需要用该程序计算 Shapley 值,这就是它的目的。我测试了这个程序多达 12 名玩家,我能够通过两步程序成功计算 Shapley 值。因此,上述程序正确地指定了所考虑的问题。为了更好地理解这两个步骤的过程和上述程序的功能,让我们专注于一个三人游戏。联盟的值由以下数据数组给出

请注意,联盟根据其唯一的整数表示进行排序。定义了游戏,我们现在可以使用上述程序评估多线性扩展和偏导数集,但不能评估 Shapley 值。

偏导数集的积分在单位立方体的对角线上运行,但是我们可以将变量从 [x1,x2,x3] 设置为 [y,y,y],并且积分从 0 运行到 1。

积分的解是由下式给出的 Shapley 值:

检查这确实是 Shapley 值可以通过实现的潜在函数方法来完成

附带我的 MATLAB 博弈论工具箱 MatTuGames

http://www.mathworks.com/matlabcentral/fileexchange/35933-mattugames

除了与 int() 集成,还可以使用integral(),但内容如下

必须用 matlabFunction() 重写为函数句柄。正如我上面提到的,这在 Linux 下不起作用(MATLAB R2013a、R2013b、R2014a)。要看到这一点,让我们尝试重现该示例

来自 URL 上的文档:

http://www.mathworks.de/de/help/symbolic/generate-matlab-functions.html?searchHighlight=matlabFunction

这应该给

但我明白了

现在我的问题来了:Exists there an alternative procedure to get from

函数句柄

通过整合它

或者换一种说法。是否有另一种方法可以将乘法 * 更改为逐元素乘法 .*,并将幂运算 ^ 更改为逐元素幂。^?

当然,对上述 MATLAB 程序的任何改进建议都非常感谢。


0 投票
1 回答
2034 浏览

java - 100 游戏 - CanIWin()

问题:

  1. 两名玩家从一个共同的号码池中选择号码以达到总和。
  2. 达到/越过目标值的玩家获胜。
  3. 问题是要找出玩家 1 是否可以执行一个获胜策略——对于给定的总数和一个数字池。

我的方法:

假设两个玩家都从可用池中选择最佳数字。最优,我的意思是-

  1. 检查池中可用的最高数字是否 >= 剩余值。[yes]=> 返回可用的最高值。

  2. 如果无法获胜,请选择RequiredToWin - HighestNumberInThePool池中最大的可用数字( ),这将不能保证在下一回合中获胜。

我刚刚想出了“一个”解决方案并编写了代码。我试图分析它是否是仪式?就时间、空间而言,是最优的。还试图了解如何改进我的编码约定 - 全局变量和我使用条件语句的方式。这个解决方案是仪式吗?

在示例中 - 我使用了从 100 到 105 的预期总和 - 以显示输出中的最佳选择。查看 Player-1 从可用池中选择 5 [7,6,5,4,3,2,1]

编辑这不是问题的解决方案。这种方法在 {pool:[1-5], Total:12} 的情况下失败了。该函数说,玩家 2 总是赢,但玩家 1 总是可以赢,如果他以 3 开始。

输出:

0 投票
1 回答
99 浏览

java - 如何将 .txt 文件的摘录输入到 Java 程序中?

我正在编写一个程序来计算从你的机架上的 Scrabble 的机架上得到一个“宾果游戏”的概率。我处于非常原始的阶段,还没有开始编写代码。但是,我已经开始研究逻辑。

我遇到的问题是这个。我有一个 .txt 文件作为字典来判断拼字游戏中的单词。它被称为 CSW-12 字典,可以在这里找到我正在使用的 .txt 文件的直接下载。

通常,使用名为 Zyzzyva 的程序来访问这些单词。可以在此处找到下载该程序的链接。

好的,所以现在从这个 .txt 文件中,我只需要输入所有 7 个字母的单词。而且只有文字,没有意义。所以这意味着当我遇到我猜想的空格时,接听这个词然后跳过行。

我对 Java 比较陌生,只知道一点。我不知道如何从 .t​​xt 之类的外部文件输入数据,更不用说如何只输入其中的摘录了。

任何帮助将不胜感激。我宁愿你教我如何做所说的任务,也不愿为我做。

0 投票
7 回答
27234 浏览

algorithm - 在给定完整历史的情况下计算球队赢得体育比赛的几率的算法

假设:

  • 团队从未改变
  • 球队的技术没有提高
  • 每个团队与其他团队的某些子集的表现的整个历史是已知的
  • 球队之间的比赛数量很多,但可能很少(每支球队都没有与其他球队交手)

例如:

我有一长串比赛结果,如下所示:

问题:

预测任何球队击败任何其他球队的正确投注赔率。

在上面的例子中,也许我们得出的结论是 A 应该在 66% 的时间内击败 B。这是基于直接观察并且非常简单。然而,找到 C 击败 B 的概率似乎更难。他们从来没有一起玩过,但似乎最有可能 C > B,信心不足。

我做过的研究:

我已经阅读了一些关于技巧游戏的不同排名系统的文章,例如国际象棋的 Elo 和 Glicko 评级系统。这些不足,因为它们对所涉及的概率分布做出假设。例如,Elo 的中心假设是每个棋手在每场比赛中的国际象棋表现是一个正态分布的随机变量。但是,根据维基百科,还有其他分布更适合现有数据。

我不想假设分布。在我看来,手头有 10,000 多个匹配结果,我应该能够从证据中推断出分布(我不知道该怎么做),或者使用某种无关紧要的强化学习方案分布是什么。

0 投票
1 回答
729 浏览

multithreading - MUD 服务器的 Rust 同步策略

因此,如果您有一个 MUD 服务器在单独的进程中处理每个 tcp 连接,

为该服务器共享可变世界数据的策略是什么?我可以想象 n 个连接响应来自用户的命令。每个命令都需要访问并可能修改世界。

Arc会是要走的路吗?

扩展到 100 或 1000 个用户怎么样?我只是在寻找正确方向的推动力。

0 投票
0 回答
63 浏览

game-theory - Gambit enumpoly 输出文档

寻找 gambit-enumpoly 的输出文档

我正在编写读取此内容的代码,并且我想要对输出顺序的描述,最好带有示例。在 http://www.gambit-project.org/gambit14/tools.html#command-line 中有一个示例调用输出
gambit-enumpoly e01.efg 但我找不到解释也找不到 e01.efg 的列表

我在 Gogle 和 stderr.org/doc/gambit-doc/html 中进行了广泛搜索

Laurence Leff 博士西伊利诺伊大学,马科姆 IL 61455 ||(309) 298-1315 Stipes 447 Assoc。计算机科学教授。寻呼机:309-367-0787 传真:309-298-2302