- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果满足条件,同一个玩家移动,您如何处理游戏?
我试过这样的东西,但我觉得不太对:
function negamax(node, depth, α, β, color)
if node is a terminal node or depth = 0
return color * the heuristic value of node
else
foreach child of node
if (condition is met) // the same player moves
val := negamax(child, depth-1, α, β, color)
else
val := -negamax(child, depth-1, -β, -α, -color)
if val≥β
return val
if val≥α
α:=val
return α
最佳答案
不要尝试为此更改 minimax 算法本身,而是修改游戏表示以适应。基本上有两种解决方案:
据我所知,没有文献讨论过您的特定问题。当我想到上面的解决方案 2 时,我觉得自己很聪明,但我怀疑很多其他人也发明了同样的把戏。
我应该说,正确处理 minimax 系列非常困难。用高级语言设计游戏搜索 AI 时的一个技巧是在更简单的游戏(减少棋盘大小、使用井字游戏等)上测试您的搜索算法以确保正确性。如果游戏足够小,你可以。通过手动和 b 玩游戏来确保其结果有意义。测试高级算法,如 negascout通过确保他们给出与 naive negamax 相同的答案。尝试让具有游戏特定行为(评估函数、棋盘表示、搜索和存储启发式等)的代码远离执行树搜索的代码也是一个好主意。
关于algorithm - Negamax - 玩家移动两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773055/
TLDR:我有一个用于 negamax 实现的非对称评估函数 - 这可以接受吗?还是我需要使其对称? 更长:我正在编写一个游戏 AI(用于类似国际象棋的棋盘游戏“Hive”),它使用带有 alpha-
我有一个尽可能简单的 negamax 算法,用于评估 Tic Tac Toe 中的位置。游戏状态在 numpy 中存储为一个数组,X 的棋子用 1 表示,O 的棋子用 4 表示。 我刚才正在测试这个,
如果满足条件,同一个玩家移动,您如何处理游戏? 我试过这样的东西,但我觉得不太对: function negamax(node, depth, α, β, color) if node is
我已经实现了 Negamax,因为它可以在 wikipedia 上找到,其中包括 alpha/beta 剪枝。 但是,它似乎倾向于失败的一步,据我所知这是无效的结果。 这款游戏是井字游戏,我已经抽象了
这段代码是为计算井字游戏中某个位置的最佳移动而构建的。我几乎得到了代码的每一部分,除了 for 循环中的条件,它表示 minRating != LOSING_POSITION。此代码来自给定伪代码的实
注意:如果您认为这篇文章对您没有足够的详细信息(例如,代码,结果和其他内容;我将相应地编辑帖子。 注意2:我自己编写了这个程序。 我有一个negamax实现,其结果对我来说似乎是非常错误的,我尝试了许
嗨! 我正在尝试为我的国际象棋引擎编写一个 negamax 搜索算法,但我似乎无法让它工作。我以 wikipedias 伪代码为例,但不知何故它没有产生预期的结果。当我用 2 层运行它时,它改变了我的
我一直在使用 negamax 玩连连四。我注意到的是,如果我添加 alpha-beta,它有时会给出“错误”的结果,因为在进行失败操作时,我认为它不应该与我正在搜索的深度相匹配。如果我删除 alpha
我正在上我的第一个 AI 类(class),并尝试在我的 c 代码中实现 NegaMax 算法。我正在使用这个算法来玩简单的 Nim 游戏,每个玩家在轮到他们时移除 1-3 个匹配项。计算机在这里与自
好吧,我先承认这个会有点长。我正在为 C# 编写国际象棋引擎,最终目标包括 UCI 实现。我已经做到了,给定一个棋盘,引擎将生成所有有效 Action 的列表;然而,我的评估代码似乎很挣扎,因为在与自
我对 Negamax 算法以及如何在实际案例中应用它有点困惑。在网上我找到了以下 C/C++ 代码(引用:https://chessprogramming.wikispaces.com/Unmake+
我是游戏树算法的新手,我尝试实现一个简单的井字棋游戏,该游戏利用 NegaMax 算法为计算机 AI 玩家评估拼贴分数。然而,AI 的行为并不聪明(我可以一直赢,因为 AI 不会阻止我的 Action
我为黑白棋游戏编写了 AI 播放器,我决定使用 NegaMax 或 MiniMax 来实现。伪代码: function negamax(node, depth, α, β, color) if
Negamax 通常如下所示: function negamax(node, depth, α, β, color) is if depth = 0 or node is a terminal
我正在尝试为 tic-tac-toe 应用程序实现 negamax 搜索函数,但它不会返回最佳值,而是似乎半随机猜测。这是我的代码的相关部分: public int negamax(Result re
我无法识别 negamax(alpha - beta)实现中的错误。 我可以使简单的 negamax 版本正常工作,但是我无法将其转换为 negaMax 的 alpha-beta 版本。 首先是正在运
我的程序中有一个有效的 negamax 算法。但是,我需要程序在 kMaxTimePerMove 时间内找到最佳可能的着法。我做了一些研究,似乎使用迭代加深和我的 negamax 算法是最好的方法。现
我正在制作黑白棋玩家,并实现了一个带有 alpha-beta 剪枝的极小极大算法。然后我在网上对最好的算法进行了一系列研究,并不断听到他们都使用的“negamax”算法。似乎大多数人认为 negama
关于非递归、基于迭代的 negamax 算法的任何想法或伪代码? 我使用 negamax 作为我的国际象棋 AI 的搜索核心。 我的引擎是用 JavaScript 编写的,根据文献,如果使用迭代而不是
我正在尝试构建国际象棋 AI。我的带 alpha-beta 修剪 (ABP) 的 negamax 函数运行速度比单独的 min 和 max 函数也用 ABP 慢得多(大约 8 倍),尽管返回的移动是相
我是一名优秀的程序员,十分优秀!