JavaScript文件系统API作为象棋Alpha Beta数据存储
JavaScript FileSystem API as Chess Alpha Beta data storage
我开始用JavaScript编写象棋程序,如果我发现需要将服务器涉及到象棋AI逻辑中,可能会使用一些Node.JS,至少在我可能无知的观点中,这仍然是合理的。我的问题很简单:JavaScript的客户端文件系统API是缓存minimax结果以供将来参考的合理方式,还是结果数据太多而无法存储在任何一个地方?我的想法是,它可以作为一种方法,让AI能够适应用户,并通过能够访问以前的决策而不是每次都手动重新确定它们来"学习"。这是一个合理的计划吗?还是我低估了所需的内存使用量?如果您的答案是这是合理的,那么一些关于以这种方式存储数据的最有效方法的技巧也会很好。
我以前用c++写过象棋引擎,但没有写过Javascript。
你所描述的通常是用置换表来解决的。计算一个标识位置的散列键,并用它存储其他数据。看到的:https://www.chessprogramming.org/Transposition_Tablehttps://www.chessprogramming.org/Zobrist_Hashing
Web存储提供每个源:
2.5 MB for Google Chrome
5 MB for Mozilla Firefox
10 MB for Internet Explorer
每个表项通常包含:
Zobrist Hash Key: 8 byte
Best Move: 2 byte
Depth: 1 byte
Score: 2 byte
Type of score (exact, upper bound, lower bound): 1 byte
= 16 byte
例如Google Chrome可以容纳160k个条目。通常,对于象棋位置分析,您将使用超过1gb的内存来存储换位表。无论如何,对于javascript引擎,我认为2.5 MB是一个很好的折衷方案。
为了确保javascript引擎使用最佳存储,我建议您将数据转换为某种二进制表示。然后我将通过Zobrist哈希键索引localStorage并存储与之相关的所有其他信息。
相关文章:
- 如何将不可变的js导入angular 2(alpha)
- 如何(功能)检测浏览器是否支持WebM alpha透明度
- html5具有特定alpha的画布填充文本和具有不同alpha的背景
- Tic tac toe alpha-beta
- html5画布支持带alpha的十六进制颜色吗
- 新的gump ruby sass alpha任务失败
- Obtain alpha from Bootstrap Colorpicker
- 如何测试 jQuery 3.0 beta 在浏览器中是否兼容 Promises/A+
- HTML5画布到PNG在alpha透明时将所有通道归零
- EffectComposer和具有三个.js的alpha通道
- jQuery仅悬停在图像内容上,不悬停在Alpha上
- 将浮点数字转换为RGBA CSS颜色的有效Alpha值
- 试图在没有get/putImageData的情况下操作画布上的alpha
- 如何在 JavaScript 中匹配字符类 [:alpha:]
- 按 alpha 通道绘制的图像映射
- Microsoft Surface Pro 2 上的 JavaScript 设备方向:alpha 和 gamma 值切换
- 自定义图标行为是否在JQueryMobile 1.4(Alpha / Beta / RC-1)中发生了变化
- 设备定向事件's Alpha、Beta、Gamma值..有人能帮忙解释一下如何形象化吗
- 在不使用侦听器的情况下获取设备方向(alpha、beta、gamma)
- JavaScript文件系统API作为象棋Alpha Beta数据存储