我正在使用标准的alpha beta剪枝搜索算法构建一个翻转棋玩家。我试图添加一个翻译表来存储搜索树中先前计算过的节点。因此,我需要对代表游戏板(即状态)的二维数组进行哈希,并为其存储一个值。
我只好使用双重循环迭代我的数组,并将所有值相加并乘以偏移量以获得唯一的哈希值。
我怀疑有更聪明的方法来完成这个任务?有人有什么想法吗?
我只好使用双重循环迭代我的数组,并将所有值相加并乘以偏移量以获得唯一的哈希值。
@Override
public int hashCode() {
if (dirtyHash) {
int hash = 0;
for (int i = 0; i < Board.SIZEX; i++)
for (int j = 0; j < Board.SIZEY; j++)
hash += board[i][j] * (i + Board.SIZEY * j);
hashValue = hash;
dirtyHash = false;
}
return hashValue;
}
我怀疑有更聪明的方法来完成这个任务?有人有什么想法吗?