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

Minimax搜索:如何打印从所选下一步移动到叶子的路径

苏浩瀚
2023-03-14

令人困惑的标题。我将尝试详细说明:我有一个人工智能象棋游戏,它使用极小值搜索来生成计算机的下一步棋。在沿着极小极大树向下移动到选定的深度(比如5)后,它最终找到了下一个最佳移动。出于我自己的测试目的,我希望能够打印出这个下一个最佳移动(表示为国际象棋棋盘配置),以及下面的4个移动,它用于确定下一步的得分。也就是说,最大极小树中每个较低级别的最佳选择路径,从最终被选择为最佳下一步的顶部节点开始。有什么想法吗?

共有1个答案

司寇灵均
2023-03-14

您需要确定主要变量。

主变(PV)是程序考虑最佳的一系列动作,因此期望被播放。

--象棋编程维基

我的游戏引擎实现使用了换位表来确定PV。要打印PV,程序执行以下步骤:

  • 移动=上次搜索确定的最佳移动
  • 打印移动
  • 采取行动
  • 获取新板的换位表条目
  • 换位表条目准确吗?
    • 是:移动=存储在转置表条目中的移动。转至步骤2
    • 否:撤消移动。转至步骤6

 类似资料:
  • 问题内容: 我试图使用Java在二叉树中打印所有根到叶的路径。 在主要方法中: 但是它给出了错误的输出。 给定的树: 预期产量: [5,1,3] [5、8、6] [5、8、9] 但是输出产生了: [5,1,3] [5、1、3、8、6] [5、1、3、8、6、9] 可以找出一个… 问题答案: 用以下方法调用递归方法: 传递时会发生什么(而不是在所有方法调用中使用单个对象,这意味着,当您返回原始调用者

  • 例子 $ gcc -v foo.c ... ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/include" #incl

  • 是否有一种方法可以打印所有可能的选择1到x,其中没有重复的数字和可变数量的数字? 所以基本上如果x=10,n(列表的长度)=5 到目前为止我已经试过了,但不容易改变

  • 好的,我的问题对于任何玩过棋盘游戏编程的人来说都应该很熟悉,所以这里是: 我实现了MiniMax算法的一种变体(返回移动而不是最小/最大值) 我还尝试将其设置为alpha beta版,尽管最终完全失败 这是我的极大极小码: 有什么想法吗?如何调整上述内容,使其成为Alpha Beta搜索? 下面是我尝试的Alpha-Beta转换(失败得很惨): 提示(以避免任何误解): > 此- 和分别被定义为一

  • 下面是一个二叉查找树,它有一个根节点、一个左节点和一个右节点。代码有效,但我想显示这个二叉查找树,这样我就可以看到图层中的每个节点…这是代码…

  • 问题内容: 我有一张像这样的桌子。 我只想选择叶子的孩子,以及他们的路径。 我想得出如下结果: 如果这不仅是sql,还可以是php + sql 请帮我。 问题答案: 非常简单的解决方案,使用PHP打印出ID和所有最后一个子节点的路径,因为我不知道在MySQL中这样做的方法。希望这可以帮助! 要运行,只需致电:

  • 我在Chrome中使用Selenium Python绑定实现web浏览器自动化。作为自动化脚本的一部分,我点击一个链接,网站将在一个新的选项卡中打开页面。但是,我的python脚本中的WebDriver对象仍然指向第一个选项卡。 我已经尝试了这个答案提供的所有选项,但没有一个是成功的。 我的问题是,我恐怕我不能保证新标签将在索引1,我也不认为我可以保证新标签在最后一个索引。我确实尝试过使用这样的键

  • 我有一棵看起来像上面的树,由一个链接结构表示: 我的目标是找到从根节点到叶节点的所有路径。 我的树遍历算法如下所示: 当我运行它时,我确信树正在按图所示构建。我已经测试过了。然而,我无法找出我的树遍历分割错误的原因。 我得到的输出是: 我已经在高度较小的树上测试了它,它是有效的。但是出于某种原因,它不适用于高度大于2的树。我认为这是树出了问题,我检查并打印了每个父级、左子级和右子级,它们打印出来如