java - 我的 alpha-beta 修剪算法有问题吗?
问题描述
我不确定在实施 alpha-beta 修剪时出了什么问题。我已经为此进行了 12 个小时的调整,重做它,但我找不到问题(或者我尝试修复它并最终遇到更多问题)。基本上,连续 4 个或一列获胜,这是一个 8 x 8 的棋盘。
我的评价功能差不多
sum of (3 X's in a row - 3 O's in a row) * 3 + (2 X's in a row - 2 O's in a row) * 2
编辑:我不只是有堆空间的问题,虽然它是一个每次移动应该最多需要 5 秒,地雷运行 15 秒而不是JAVA HEAP SPACE ERROR
之后崩溃。
// Editing right now
}
// Iterative deepening and time-limited is ran
}
// Generates X successors sorted by utility
// Similar to the O one except just change the character
ArrayList<Node> generateXSuccessors() {
char[][] copy = new char[8][8];
char[][] temp = new char[8][8];
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
temp[i][j] = board[i][j];
}
}
// Go through all possible moves and add them to list
// Must add arraylist and return from here, solve heap space error
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if (temp[i][j] == '-') {
temp[i][j] = 'X';
for (int k = 0; k < 8; k++) {
for (int l = 0; l < 8; l++) {
copy[k][l] = temp[k][l];
}
}
successors.add(new Node(copy));
temp[i][j] = '-'; // Reset
}
}
}
//Sort list
Collections.sort(successors);
return successors;
}
通过上面显示的当前尝试,我得到了Java Heap Space error
. 在此之前,算法只是不停地运行。
我不确定我是否执行错误,或者我的评估功能是否真的很糟糕,它会导致此类错误。
编辑:
// Error
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at FourInALine$Node.<init>(FourInALine.java:204)
at FourInALine$Node.generateXSuccessors(FourInALine.java:238)
at FourInALine.alphaBeta(FourInALine.java:134)
at FourInALine.alphaBeta(FourInALine.java:157)
at FourInALine.alphaBeta(FourInALine.java:137)
at FourInALine.alphaBeta(FourInALine.java:157)
at FourInALine.alphaBeta(FourInALine.java:137)
at FourInALine.main(FourInALine.java:72)
解决方案
推荐阅读
- android - 如何检查过滤后的 recyclerView 结果是否为空?
- sonos - 如何从 Sonos 家庭获取音乐源列表?
- python - 如何在python中对新的减去数据框进行进一步计算?
- firebase - 在我的代码中的云 Firestore 中创建新集合
- ruby-on-rails - 无法删除 Rails 中的孤立迁移文件
- office365 - Office 365 的自定义功能插件
- c# - asp.net 超链接 navigateurl 保留主机名
- javascript - 如何从 div 中“提取”css元素(即形成网格)
- android - 错误:文件 google-services.json 丢失。(因为 com.google.gms:google-services 从 4.2.0 更新到 4.3.0)
- r - 从 R 数据框中删除负值和一个正值