【问题标题】:Game Theory with prediction博弈论与预测
【发布时间】: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


【解决方案1】:

这取决于用于生成(伪)随机数的算法。如果伪随机数生成器算法已知,则可以通过观察多个状态(机器人移动)来猜测种子。这类似于用于加密的蛮力猜测密码,因为某些加密算法被称为流密码,并且基本上(有时完全正确)是用于混淆数据的一次性密码。现在,假设您知道使用的伪随机数生成器是一个简单的滞后斐波那契生成器。然后,您知道他们通过计算 x(n) = x(n - 2) + x(n - 3) % 3 来生成每个数字。因此,通过观察 3 个不同的机器人动作,您将能够预测所有未来的动作。种子是提供给您观察到的序列的前 3 个数字。现在,大多数随机数生成器并非如此简单,有些随机数生成器的种子长度可达 1024 位,现代计算机不可能以蛮力的方式循环遍历所有这些可能性。所以基本上,你需要做的是找出使用了什么 PRNG 算法,找出所有可能的初始种子值,并设计一个算法来确定对手机器人根据他们的动作使用的种子。根据算法的不同,有一些方法可以比测试每一个种子更快地猜测种子。如果有更快的猜测这种种子的方法,这意味着有问题的 PRNG 不适合加密应用程序,因为这意味着密码更容易被猜到。 AES256 本身有一个中断,但理论上它仍然需要 2 ^ 111 次猜测(而不是蛮力 2 ^256 次猜测),这意味着它在技术上已经被破坏了,但是 2 ^ 111 对于现代计算机来说仍然是太多的操作在有意义的时间范围内处理。

如果 PRNG 落后于斐波那契(不再使用,我只是举一个简单的例子)并且您观察到机器人执行了选项 0,然后是 1,然后是 2...您就会知道下一个机器人要做的事情是... 1,因为 0 + 1 % 3 = 1。你也可以回溯,找出这个 PRNG 的初始值,它代表种子。

【讨论】:

  • thx 我发现了一种算法,它通过两个连续的“旧”随机生成器的蛮力获取种子
  • 抱歉我点击错误:我想说这对我来说数学太高了:(
  • thx 我找到了一种算法,它可以用 2 个密钥和 65000 步强行“正常”随机生成器。我现在得到了公式。但递归容易吗?
  • 使用的随机数生成器是什么?
  • java.util.random
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多