gpt4 book ai didi

JavaScript 文件系统 API 作为国际象棋 Alpha Beta 数据存储

转载 作者:行者123 更新时间:2023-11-29 22:17:56 27 4
gpt4 key购买 nike

如果我发现需要在国际象棋 AI 逻辑中涉及服务器,我将开始用 JavaScript 和一些 Node.JS 编写国际象棋程序,至少在我可能无知的观点中这仍然是合理的。我的问题很简单:用于 JavaScript 的客户端文件系统 API 是否是缓存极小极大结果以供将来引用的合理方法,或者结果数据是否太多而无法存储在任何一个地方?我的想法是,它可以用作一种允许 AI 适应用户的方式,并通过能够访问以前的决定而不是每次都手动重新确定它们来“学习”。这是一个合理的计划还是我低估了这需要的内存使用量?如果您的回答是这似乎是合理的,那么一些关于以这种方式存储数据的最有效方法的提示也会很好。

最佳答案

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

你描述的一般都是用换位表解决的。您计算一个哈希键来标识位置并使用它存储其他数据。看: https://www.chessprogramming.org/Transposition_Table https://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 个条目。通常对于国际象棋位置分析,您使用超过 1 GB 的内存用于换位表。无论如何,对于 javascript 引擎,我认为 2.5 MB 是一个很好的折衷方案。

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

关于JavaScript 文件系统 API 作为国际象棋 Alpha Beta 数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com