首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript FileSystem API作为国际象棋阿尔法测试版数据存储

JavaScript FileSystem API作为国际象棋阿尔法测试版数据存储
EN

Stack Overflow用户
提问于 2012-12-26 18:00:37
回答 1查看 214关注 0票数 2

我开始用JavaScript编写一个国际象棋程序,如果我发现需要在国际象棋AI逻辑中涉及服务器,可能还会编写一些Node.JS,这仍然是合理的,至少在我可能一无所知的观点中是这样的。我的问题很简单:用于JavaScript的客户端FileSystem API是缓存minimax结果以供将来参考的一种合理方式,还是生成的数据太多而无法存储在任何一个位置?我的想法是,它可以被用作一种方式,允许AI适应用户,并通过能够访问以前的决策而不是每次手动重新确定它们来“学习”。这是一个合理的计划,还是我低估了它所需的内存使用量?如果您的答案是这是合理的,那么关于以这种方式存储数据的最有效方法的一些技巧也会很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-18 08:33:32

我以前用C++写过国际象棋引擎,但没有Javascript。

您所描述的内容通常通过换位表来解决。您可以计算一个标识该职位的散列键,并将其他数据与其一起存储。请参阅:https://www.chessprogramming.org/Transposition_Table https://www.chessprogramming.org/Zobrist_Hashing

Web存储按源提供:

代码语言:javascript
复制
2.5 MB for Google Chrome
5 MB for Mozilla Firefox
10 MB for Internet Explorer

每个条目通常包含:

代码语言:javascript
复制
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个条目。通常,对于国际象棋位置分析,转换表使用超过1 GB的内存。无论如何,对于javascript引擎,我认为2.5MB是一个很好的折衷方案。

为了确保javascript引擎使用最佳存储,我建议您将数据转换为某种二进制表示形式。然后,我将通过Zobrist Hash Key对localStorage进行索引,并存储与其相关的所有其他信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14038927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档