问题标签 [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 回答
539 浏览

python - 为什么 Gambit 博弈论代码不使用 python 脚本运行?

游戏1.py:

这是我的代码显示错误:

/usr/lib/python2.7/site-packages/setuptools-5.7-py2.7.egg/pkg_resources.py:1049: UserWarning: /home/raja/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).

如果我在 python 控制台中运行相同的代码没有给出任何错误正常工作..

0 投票
1 回答
144 浏览

algorithm - 将两个连续的正面翻转为负面的游戏

我在一次采访中被问到这个问题。问题是这样的

您有一串 '+' 和 '-' (例如 ++----++++++-+--+ )。有两个玩家玩家 1 和玩家 2。在每一轮,玩家之一可以选择任意两个连续的“+”,即 ++ 并将它们翻转为 -。因此,如果初始字符串是 ++----++++++-+--+ 则玩家有以下 6 个选择 (2 - 7) 。(第一个供参考)。

  1. ++----++++++-+--+
  2. ------++++++-+--+
  3. ++--------++++-+--+
  4. +----+--+++-+--+
  5. ++----++--++-+--+
  6. +----+++--+-+--+
  7. ++----++++---+--+

玩家一一进行。下最后一步的玩家将获胜(或失败 - 没有区别)。

给定一个初始字符串,如果玩家 1 第一轮,我们必须告诉谁赢了?

现在这似乎是一个经典的博弈论问题,每个玩家都试图以最佳方式进行游戏,并且在每一步都采取将他移动到获胜位置的动作。

关于如何解决这个问题的任何想法?

PS - 对方法比对解决更感兴趣。我已阅读http://www.codechef.com/wiki/tutorial-game-theory但无法在这里应用相同的逻辑。

0 投票
2 回答
1821 浏览

algorithm - 组合游戏。如果两名球员都发挥最佳,谁会赢

玩家AB以最佳方式玩游戏并交替移动。它们从 1 开始。轮到每个玩家将当前数字与 [2,9] 中的任何整数相乘。如果在轮到玩家之后,数字大于或等于n,则他获胜。

A 开始。给定n,谁赢了?

例如,

数字 2,3..,9 是中奖号码(玩家 A 将获胜)

数字 10,11,..,18 正在输号(玩家 A 会输)

数字 19,20,..,162 是中奖号码

获胜的策略是什么?如何应用 Sprague-Grundy 定理来解决这个问题?

0 投票
1 回答
99 浏览

matlab - MATLAB 中的 Sprague-Grundy 定理

我正在尝试在 MATLAB中实现“ Sprague-Grundy 定理”。这个定理本质上试图找到数组中的最小排除元素,例如在数组 [0 1 3 4 5] 中,该值将是 2。除此之外,该函数需要能够沿不同行递归矩阵(特别是图论中的邻接矩阵)例如,如果我有邻接矩阵:

1 0 0 0 0

1 0 0 0 0

0 0 0 1 0

0 1 0 0 0

0 0 1 0 0

如果我将此矩阵用作输入,并且函数从第 5 行开始,那么它将遍历“0 0 1 0 0”行,当它在第 3 列中看到 1 时,该函数将递归到第 3 行行,然后递归到第 4 个,然后是第 2 个,然后是第 1 个。

我遇到的问题是在函数输入为matrix/array的情况下进行递归。我认为当函数输入是整数时递归很简单,但是对于矩阵/数组,我不知道如何“跟踪”值并获得我想要的最终数组。到目前为止,这是我的 matlab 代码:

0 投票
0 回答
302 浏览

java - Minimax 功能不适用于连接 4

我正在尝试使用 minimax 算法在 java 中实现连接 4 的计算机 AI 版本。对于该任务,我创建了一个“节点”类,它以单个板状态开始,然后递归地创建更多节点,直至指定深度。然后它给每个节点打分,1 分表示胜利,0 分表示平局或最大深度。最后,我使用极小极大算法来选择要在函数“getColumn()”中使用的移动。这是我的代码

在板阵列中:

  • 0s 是空白空间
  • 1s 是玩家的筹码
  • 2s是ai的筹码

然而,我已经运行了许多测试,即使其他玩家即将获胜,计算机似乎总是选择最左边可用的列。任何人都可以解释如何解决这个问题或问题是什么。目前我的游戏使用深度为 7。

0 投票
0 回答
28 浏览

python-2.7 - 从黑白树中删除顶点的好结构

我想在 Python 2.7 中编写一个树(在数学视图中),其中每个顶点都是白色或黑色。然后我希望能够移除叶子以创建一棵新树。请注意,如果根只有一个连接,则它可以是叶子,因此可以将其删除。

有没有办法找到树的 ID,以便我可以将不同树的值存储在列表中?我还想为不同的小树创建一个循环,例如所有具有 8 个或更少顶点且具有所有可能的黑白着色的树。

一个想法是从二叉树开始,否则它可能会很复杂。

有什么好的结构吗?

0 投票
2 回答
99 浏览

python - 如何动态创建变量名?还是我应该简单地使用字典?

我正在用python编写一个程序来将游戏从特征形式转换为正常形式。我已经阅读了一些类似问题的答案:大多数人说最好使用字典。但是我认为如果您想为键指定特定名称,问题仍然存在。

假设我想为三个玩家的游戏构建一个程序,这很容易:

但是,如果我想为 n 个玩家的游戏构建一个程序……当然,我可以构建一个字典,但我仍然不知道如何按照我想要的方式调用每个键(v1、v2、v3,. .. ...,v123..n)。有任何想法吗?

0 投票
2 回答
1499 浏览

python - 无法构建 Gambit 博弈论扩展

我已经安装了Gambit python 接口的依赖项,但是在尝试构建 gambit 库时出现 config.h 错误(见下文)。我正在运行 Yosemite 10.10.13 并在 MacBook Air (2014) 上使用终端。

这是错误消息:

0 投票
1 回答
352 浏览

algorithm - 两个人拿硬币,hacky的解决方案

谜底是:

一行中有 n 个硬币,硬币有不同的价值。两名玩家轮流从线的一端拿一枚硬币,直到没有硬币为止。钱多的玩家获胜。如果 n 是偶数,是否有任何 hacky 算法可以决定第一个玩家在 O(1) 内存和 O(n) 时间内是赢还是输?

我已经用动态编程解决了这个问题,但我不知道hacky算法是什么。搜索后,我从这里找到了解决方案:

虽然我可以理解 if odd_s != even_s,第一人总是会赢,但我就是无法理解这种情况odd_s == even_s如果 ,如何证明没有获胜策略odd_s == even_s

0 投票
2 回答
3950 浏览

c++ - 使用了哪些技术来创建 NFS Most Wanted 2005

最想要的黑色版本于 2005 年发布,我知道他们使用 C++ 编写游戏。假设有人掌握了 C++ 的知识。他想创建一个像 NFS 2005 这样的游戏。他需要什么工具来开始编程。我对 NFS 的了解是,该游戏不是使用任何预先存在的引擎创建的。也许我错了。但如果不是,那么他们用于这些图形的内容。忽略轨道。我只想知道实现了哪些技术来使整个游戏变得完美。