问题标签 [minimax]

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 投票
2 回答
2845 浏览

java - 剪枝算法

我很头疼,为什么要打印课程示例中的某些节点作为 alpha-beta 修剪的结果,所以我在 Java 中实现了 Peter Norvig 的 alpha beta 修剪版本。

教科书上说,唯一应该扩展的终端节点是

以该顺序。

我的算法打印:

根是极小极大根的正确值。我已经调试了几个小时,似乎找不到故障。我是否忽略了什么或教科书不正确?

0 投票
3 回答
1443 浏览

c - c minimax 使用 posix 线程

我正在使用 POSIX 线程编写程序以在整数数组中找到 minimax。我的问题是如何确定我需要多少线程以及在线程函数内输出最小值和最大值是否正确?为什么我需要动态线程?

这是我的代码:

0 投票
2 回答
3523 浏览

python - 奥赛罗 Alpha-Beta 修剪玩坏蟒蛇

我目前正在尝试为奥赛罗制作一个好的 AI,并使用 Minimax 算法做到了这一点。然而,当我尝试使用 alpha-beta 剪枝进行更深入的搜索时,该算法似乎运行得很糟糕。我用 Wiki 和 Berkely.edu 等其他来源检查了它,我认为我已经正确实现了它,但我仍然找不到问题。

0 投票
1 回答
909 浏览

recursion - Negamax 是否总是应该返回正值?

所以如果上面是我的 negamax 代码(从维基百科复制),它的调用如下:

那么,无论我们用什么深度调用这个函数,这个函数是否总是返回一个正值。这是假设启发式值本身始终为正。

0 投票
2 回答
5926 浏览

artificial-intelligence - Minimax/ Alpha beta 修剪移动排序?

我读过(例如,http://radagast.se/othello/Help/order.html),首先搜索每个级别的最佳移动(可以使用迭代深化找到)使搜索速度更快。

在不使用太多额外内存和 CPU 时间的情况下,如何搜索可能的最佳动作?

0 投票
1 回答
10601 浏览

algorithm - 了解极小极大/极大极小路径 (Floyd-Warshall)

我已经实现了 Floyd-Warshall-Algorithm 来解决 All-pairs 最短路径问题。现在我发现我也可以通过简单的修改来计算极小极大或极大极小路径。但我不明白结果是什么意思(什么是极小极大路径)。我在网上找到了一些解释,但它们让我感到困惑。

Minimax - 图问题中的 Minimax 涉及找到两个节点之间的路径,该路径使沿路径的最大成本最小化。

Maximin - 与 Minimax 的相反方式 - 在这里您遇到问题,您需要找到最大化沿路径的最小成本的路径。

有人可以尝试给出其他解释或示例吗?

0 投票
2 回答
1584 浏览

vb.net - Minmax 算法仅在直接看到移动时获胜。否则总是让玩家获胜

在我第一次尝试极小极大算法和一般的递归调用(我对编程相对较新)时,我已经花了三天时间试图弄清楚我在哪些小代码中出了什么问题。基本上,除了我想在其中实际学习和研究的东西:极小极大算法之外,我的应用程序中的所有东西都在工作。

基本上,每当玩家移动时,计算机将执行以下两项操作之一:

  • 如果它旁边有一个获胜的举动,它将使用该举动。非常简单。
  • 然而,如果这个动作不是直接可见的,它会选择任何让玩家获胜的动作。与它应该做的完全相反。

我知道它不是来自:

  • 合法移动吸气剂
  • 板评估器本身,不知道它是否可能来自带有指向它的一些奇怪的东西,但评估器正在返回正确的分数。

这是代码(我删掉了一些启动程序的函数):

希望你能帮忙!

0 投票
2 回答
2501 浏览

java - 奥赛罗中的 Alpha Beta 修剪问题

我正在创建一个播放奥赛罗的简单引擎,使用带有 alpha beta 切割的 minimax。它玩得很好,但有时我会得到一个奇怪的索引超出范围异常(总是接近尾声)。

这是我的算法

在 makeMove 和 undoMove 中,我更新了游戏状态(黑胜、白胜、平局)。我还在这些方法中切换播放器。当玩家没有移动时,我会在不改变棋盘的情况下进行虚拟移动,并切换玩家。

还有更多的代码,但我认为问题发生在算法达到游戏结束位置时。当我将引擎设置为播放随机动作时,不会发生此问题,因此问题应该是 alpha beta 算法。

这里是getAllMoves,这个调用getFlips:

这是getFlips。

这是更新状态:

谢谢!

0 投票
3 回答
4200 浏览

java - Minimax 算法不返回最佳移动

我正在编写一个使用带有 alpha-beta 修剪的 minimax 的 Othello 引擎。它工作正常,但我发现以下问题:

当算法发现位置丢失时,它会按预期返回 -INFINITY,但在这种情况下,我无法跟踪“最佳”移动……位置已经丢失,但无论如何它应该返回有效移动(最好是像好的国际象棋引擎那样存活时间更长的棋步)。

这是代码:

我称之为:

当搜索一个丢失的位置(例如,想象它稍后丢失 10 步)时,上面的最佳变量等于作为参数传递的空无效移动......为什么?

谢谢你的帮助!

0 投票
2 回答
16651 浏览

java - Alpha-beta 移动排序

我有一个基本的 alpha-beta 修剪实现,但我不知道如何改进移动排序。我读过它可以通过浅搜索、迭代深化或将 bestMoves 存储到转换表来完成。

任何建议如何在该算法中实现这些改进之一?