rust - 转置表的 btreemap 与 hashmap

标签 rust hashmap minimax btreemap

我创建了一个极小极大算法,它使用 alpha beta 剪枝和换位表来加速搜索。我目前正在使用一个 HashMap ,该 HashMap 使用棋盘状态作为键并将分数保存为值。 (游戏是 5x5 棋盘上的井字游戏)

这样做的问题是散列速度很慢,并且使用整个棋盘状态作为 key 会占用大量内存。棋盘状态由具有 3 种可能类型的二维枚举数组表示:Blank、X 和 O。我想使用我自己的哈希(可能是 zobrist)作为键,根本不保存棋盘状态,但 HashMap 会拿走我的 key 并再次散列它。我考虑过使用 btree 映射,它将键视为唯一,但访问时间是 log(n) 而不是 O(1)。我也根本不关心键的顺序,因此 btree 似乎并不适合这里。

所以我的问题是,哪种数据结构是理想的?即使它第二次对我的 key 进行哈希处理,我也应该使用 HashMap 吗?

最佳答案

我一直在做类似的事情,这就是我最终得到的结果,适合您的情况:

所有这些都必须持保留态度。就我而言,它有助于加快搜索速度,但您必须单独测试您的案例。

关于rust - 转置表的 btreemap 与 hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66323199/

相关文章:

带有 thread_local 的结构中的 Rust 生命周期

rust - 高效地从TCPStream Rust读取

javascript - 尝试在我的井字棋中实现 Minimax AI (javascript)

java - 去除重复输出

ruby - Minimax 算法 Ruby Tic Tac Toe

algorithm - Tic Tac Toe MiniMax 方案

rust - 将包含Unicode数字的字符串解析成对应的Unicode字符?

rust - 有条件地修改 Vec 的可选元素的最惯用的 Rust 方法是什么?

android - 如何在Kotlin中循环Map <String,Array <Any >>?

java - 以 Map 作为键的 WeakHashMap 在修改键后返回空值的意外行为