当前位置: 首页 > 知识库问答 >
问题:

使用转置表了解Nigamax

华修永
2023-03-14

注意:我了解最小-最大值的工作原理,并且我了解 alpha beta 修剪

即使你只能回答我下面的一个问题,我也会非常感激

不管我怎么努力,看看它和研究,我就是不明白移位表,特别是为什么我们不能总是使用相同位置的精确值。

我指的是这里的伪代码

我读到,我们也不能为UPPERBOUND存储移动。为什么会这样?我们已经探索了该节点的所有子节点,所以我们不能保证知道最佳移动方式吗?为什么我们无法存储最佳移动?

相反,我们可以存储下限的最佳走势吗?树枝被修剪了,我们无法得到最好的回应,为什么会这样呢?

最后,我理解了为什么我们只能在比根更接近叶子的深度使用表(因为我们从更深层次的搜索中获得了更准确的信息)。我不明白的是,对于与先前计算的(相同哈希)节点相同的节点,为什么我们不能返回找到的值?至少在UPPERBO的情况下,我们不是已经有了我们将达到的最佳分数吗(因为我们探索了所有的子节点)?

感谢任何帮助,这已经让我沮丧了这么久,我似乎找不到任何东西,澄清这些为我在线

共有1个答案

邹坚壁
2023-03-14

经过几个小时的思考和更多的研究,我终于能够理解,所以我会把答案放在这里给任何像我一样困惑的人。

对于上限(我们没有提高我们的α值-我们希望达到的最佳分数),关键观察是每个孩子返回的分数是对手希望达到的上限。我会换一种说法。我们可以保证,返回的分数可能不是对手可以回应的最佳分数(得分时,所有孩子的点头都会被剪掉

这意味着

a) 我们不能假设这是从上限返回时的最佳移动(这可能是最糟糕的移动,其他移动只是修剪而未考虑)。因此,我们不能将此移动存储在换位表中,使用该移动只会损害任何移动顺序。

b)

同样,这也意味着也许对手可以做得更好。考虑一下国际象棋或任何其他游戏中的情况,其中第一个变体你已经有一套非常强大的动作可以玩,可以反驳你的对手的移动(为什么它首先被修剪)。

现在想象到相同位置/节点的另一条路径。这条路你可能没有同样的机会得到一套强有力的举措,这可能是半好的时间。现在,我们对手的反应实际上很重要(即使是同样的立场)。因此,我们被迫再次分析这个节点,但设置我们之前获得的beta值,因为我们知道对手在最坏的情况下也会做得那么好。

所以在回答我自己的问题时,即使探索了所有节点,返回的值也不是最优值。子节点被修剪了,但现在分析它们很重要。

类似的逻辑可以应用于下限。但是在我看来,这个看起来更琐碎。如果我们再次遇到同一个节点但上次没有充分探索,那么我们应该再次探索。计算这个节点会告诉我们,我们是否真的可以利用它做得更好。

这是很多细节,但这让我困惑了很长时间,所以我想我会留下我的答案,希望能拯救别人的困惑。如果这里有什么稍微不正确的地方,请随意评论,尽管我相当有信心。也可以随时问我任何问题,我会尽我所能回答。

 类似资料:
  • 我正在写一个应用程序,可以在Twitter上发布推文。我想提供在tweet中包含位置的选项,可以通过POST状态/使用lat和long参数进行更新。 我的问题是:如果twitter帐户没有通过https://twitter.com/settings/account“在我的推文中添加位置”,然后我可以发送带有位置信息的推文,但位置信息不会出现。这对用户的安全来说是一件好事,但对我来说是一个烦恼,因为

  • 本文向大家介绍Tensorflow:转置函数 transpose的使用详解,包括了Tensorflow:转置函数 transpose的使用详解的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说,咱直接看代码吧! tf.transpose Defined in tensorflow/python/ops/array_ops.py. See the guides: Math > Matrix M

  • 我不明白为什么表条目的标志被原样使用。例如,考虑具有α-β修剪和转置表的Negamax的伪代码,并集中于TT部分。 没关系。如果条目包含确切值的下限,我们尝试从左侧缩小窗口,依此类推。 而这部分我不明白。如果值太小,为什么我们设置上限标志?值位于搜索窗口的左侧 - 它小于已知的下限 - alpha。所以看起来值应该是一个下限。 从我的测试和每个人都使用那个版本的事实来看,我肯定是错的。但我不明白为

  • 我正在尝试将转置表放入我的阿尔法β侦察兵中。我确实看到了一个增量速度提升,我认为是在游戏中期或后期,然而,即使有1-2GB的桌子大小,它可能会也可能不会比根本不从转置表中读取慢。我还注意到,如果我在没有桌子的情况下玩完全相同的游戏,一些效率较低的动作。 我测试了我的Zobrist键散列,即使在进行和撤消操作后,它们也会正常显示。我不相信它们是问题所在。我试图遵循这些文章中的建议来设计alpha/b

  • 问题内容: 我想了解嵌套列表的理解。下面,我列出了一个列表理解表达式及其for循环等效项。 我不知道我的理解是否正确。 例如, 相当于 如果可以概括一下,我猜 表格可以翻译为以下内容。(我希望我是对的) 对于更简单的情况, 等于 而, 等于 我问了一个类似的问题,即用于复杂列表理解 的循环表达式的等效项。那里给出的答案是在理解了表单内部的内容之后重构了表单。 我想知道它是如何系统地工作的,因此我可

  • 问题内容: 我需要在MS SQL中进行以下转置 从: 要以下内容: 我了解只有一列(A)时该如何处理,但无法弄清有多列要转置(A,B,…)时该如何做。 要转置的示例代码: 表结构: 任何帮助都感激不尽。 问题答案: 为了将数据转置为所需的结果,您将需要同时使用和函数。 该函数采用和列,并将结果转换为行。然后,您将使用该函数将值转换为列: 请参阅带有演示的SQL Fiddle。 如果使用的是SQL