- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究国际象棋引擎,现在正在尝试实现 Minimax 算法。目前我已经整理了一个 mimimax 代码,但它并没有真正正常工作。鉴于我不是一个好的棋手,我在几分钟内就击败了引擎。
我希望有人好心地查看我的 minimax 代码并告诉我我写的是正确的。
提前致谢。
这是我的代码:
private int MiniMax(Game game, int depth){
return Max(depth);
}
private int Max(int depth){
if (depth <= 0
|| this.chessgame.getGameState() == Game.GAME_STATE_END_YELLOW_WON
|| this.chessgame.getGameState() == Game.GAME_STATE_END_BROWN_WON){
return EvaluatePieceScore();
}
int max = -Integer.MIN_VALUE;
List<Move> moves = generateMoves(false);
for(Move allMove : moves){
executeMove(allMove);
int score = -Mini(depth - 1);
undoMove(allMove);
if( score > max){
max = score;
}
}
return max;
}
private int Mini(int depth) {
if (depth <= 0
|| this.chessgame.getGameState() == Game.GAME_STATE_END_YELLOW_WON
|| this.chessgame.getGameState() == Game.GAME_STATE_END_BROWN_WON){
return EvaluatePieceScore();
}
int min = Integer.MIN_VALUE;
List<Move> moves = generateMoves(false);
for(Move allMove : moves){
executeMove(allMove);
int score = -Max(depth - 1);
undoMove(allMove);
if( score > min){
min = score;
}
}
return min;
}
最佳答案
你完成了一个相当复杂的任务:) MiniMax 实现本身几乎没问题,看看 WIKI 页面:
我认为最小化玩家应该使用 best move = +infinity(在您的情况下为 Integer.MAX_VALUE)
但是,既然你说你的程序运行得相当糟糕,我将提供另一个观察结果。我认为只有当你有一个非常好的评估函数(在你的情况下是 EvaluatePieceScore() 方法)时,该算法才会起作用。这就是“艺术”所在。您确定您的方法实现足够好吗?我这么说是因为通常人们将主要精力花在实现此功能上,而不是算法本身。
希望对你有帮助
关于java - MinMax 算法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789272/
我这里有 2 个关于网格的问题。首先是单元格中的填充。二是grid-gap固定值。 我正在尝试创建 4 列网格。第一个和第二个单元格(蓝绿色、红色)在调整大小时应该消失,并且没有空间容纳它们。这应该用
在这篇文章的底部( How the minmax() Function Works )它说 minmax(auto, auto) : If used as a maximum, the auto va
我有这段 CSS 来设置我的网格的列: grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); 这很好用,但我想扩展它,这样我就可以
我尝试用Java编写用于四连体游戏的MinMax程序,但该程序也应适用于其他游戏。但是,我遇到了一个问题,几天之内无法解决。节点的值设置不正确。我正在共享我的代码,该代码负责生成树。 也许您会注意到我
我对某些特征应用了线性回归,以通过 10 倍交叉验证来预测目标。 MinMax 比例应用于特征和目标。 然后对特征进行标准化。 当我运行模型时,r2 等于 0.65,MSE 为 0.02。 但是当我使
我尝试为 grid-template-rows 设置 minmax(),有趣的是,结果是 grid-rows 扩展到 的最大值>minmax() 而不是最小值。 我们如何才能使网格行保持最小声明大小,
我尝试为 grid-template-rows 设置 minmax(),有趣的是,结果是 grid-rows 扩展到 的最大值>minmax() 而不是最小值。 我们如何才能使网格行保持最小声明大小,
如果我减小容器的宽度,为什么单元格占用的宽度小于 200 像素? 我认为 minmax 必须保持宽度不小于第一个参数 (200px)。 如果删除.a、.k 和.g 的样式,一切正常。 https://
我有一个 vector QPointF我需要找到最小值和最大值 y值,因为我需要知道 vector 中数据的幅度是多少。 我使用 QPointF,但为了添加每个新元素,我总结了 x vector 中其
我尝试为 grid-template-rows 设置 minmax(),有趣的是,结果是 grid-rows 扩展到 的最大值>minmax() 而不是最小值。 我们如何才能使网格行保持最小声明大小,
我正在研究国际象棋引擎,现在正在尝试实现 Minimax 算法。目前我已经整理了一个 mimimax 代码,但它并没有真正正常工作。鉴于我不是一个好的棋手,我在几分钟内就击败了引擎。 我希望有人好心地
这是我的 minmax 算法的代码: private static void minmax(){ Move move = max(4, true, null); //System.ou
我正在构建一个井字游戏(Free Code Camp 上的一个项目),并实现了一个 minmax 算法来决定计算机玩家接下来应该选择哪个方 block 。 在我测试过的所有情况下,它都按预期工作,但以
我想在对称网格中显示可变数量的相同高度和大小的图像。使用 CSS 网格和 auto-fill和 minmax我希望能够为我的轨迹定义最小和最大像素宽度,这样我就可以防止图像被缩放得太小,同时在用户视口
我遇到了与 CSS 网格布局相关的 minmax() 函数的一些问题。 这是我的代码: * { box-sizing: border-box; } .grid { display: grid;
我正在自学 minimax 算法,我只是有几个问题希望有人能回答。 首先在第 05 行 - := 是什么意思? 同样在第 08/14 行,我注意到方法 max 或 min 被调用时带有两个参数,这个方
有了 C++ 的所有新特性(我认为 C++11 就足够了),是什么阻止了 std::minmax 函数返回一对引用。 这样一来,如果一个人提供了两个可修改的引用,它们就可以被修改。这是在开 jar 头
我正在尝试为九人莫里斯创建“AI”,但我在 minMax 算法上遇到了困难。总结一下,我花了10多个小时试图找到问题,但没有成功。 (调试这个递归很糟糕,或者我做得很糟糕,或者两者兼而有之) 自从我开
您好,我正在尝试创建具有该行为的响应列。列的宽度可以在 335 像素或 540 像素之间。 但是当我使用 grid-template-columns: repeat(auto-fit, minmax(
我一直在尝试创建一个 3 列布局,其中包含宽度为 1、2 或 3 列的卡片。为此,我使用了 CSS Grid grid-template-columns: repeat(auto-fit, minma
我是一名优秀的程序员,十分优秀!