【发布时间】:2017-03-17 21:50:45
【问题描述】:
为了给两位(德国)教授留下深刻印象,我尝试改进博弈论。
电脑游戏中的人工智能。 博弈论:智力是对问题的受过良好教育且经过验证的答案。 这意味着一个深思熟虑的决定是选择一个能带来最佳结果的行为。
Question -> Resolution -> Answer -> Test (Check)
例如,一个机器人正在与另一个机器人战斗。 这个机器人有 3 个选择:
-move forward
-hold position
-move backward
生成的程序非常简单
randomseed = initvalue;
while (one_is_alive)
{
choice = randomselect(options,probability);
do_choice(roboter);
}
我们使用的是伪随机性。
成功的考验就是他是否淘汰了对手。 机器人有自动射击武器:
struct weapon
{
range
damage
}
struct life
{
hitpoints
}
现在进行一些进化。
我们让 2 个机器人互相战斗并记住随机种子。 成功机器人的标志是什么?
struct {
ownrandomseed;
list_of_opponentrandomseed; // the array of the beaten opponents.
}
现在的问题是我们如何选择正确的策略来对抗对手? 我们假设我们对每一种可能的种子策略都有最优的反策略。 现在我们唯一要做的就是观察对手的数字 并计算他的种子值。然后我们可以选择正确的策略。
为了破解随机生成器,我们可以使用手动方法: http://alumni.cs.ucr.edu/~jsun/random-number.pdf
或蛮力: https://jazzy.id.au/2010/09/20/cracking_random_number_generators_part_1.html
【问题讨论】:
-
如果您知道对手机器人的行为方式,那么您计算种子的可能性很小。但是,您将如何仅通过观察来确定机器人的行为方式。没有办法先验地运行这个。另外,是什么让你认为对手的行为总是一样的?
-
您只能在实际时间获取数据,就像黑客获取他的数据一样。并且对手不需要表现得一样,毕竟是一个随机数。
-
哦,我正在阅读alumni.cs.ucr.edu/~jsun/random-number.pdf,黑客需要猜一个词。
-
读起来很有趣:jazzy.id.au/2010/09/20/…
-
我没有看到一个形式化的游戏(消除是如何工作的?),也没有给了解博弈论基础知识的人留下深刻印象。 PRNG 的逆向工程也不是博弈论的真正意义所在,CS 有其他工具可以禁止这种情况(cryptoPRNG)。通常,人们对游戏艺术进行分类,并且根据您游戏的内部运作,甚至不需要反转种子(与 NIM 游戏相比;在您的游戏的许多可能实现中,有一个像 NIM 一样的简单策略可能)。
标签: encryption artificial-intelligence game-theory