首页 > 解决方案 > 将数据库用于人工智能?

问题描述

我正在研究一个玩具问题:它是让代码在井字游戏中只有通过自己玩才能学会无与伦比。我是这类事情的新手......我只是决定我会通过使用随机数生成器来选择 X 和 0 的移动......然后将记录保存在一个应该移动的文本文件中永远不要再玩了(算法的那部分有一些复杂性,但没关系)。

我的问题是:我应该使用关系数据库管理系统而不是文本文件来存储“游戏状态”来避免吗?我很想这样做,因为这样我就可以为每个游戏状态拥有唯一的 ID……并将特殊表添加到数据库中以跟踪,例如,在失去“游戏状态”之前出现的所有“游戏状态”(例如,一个“游戏状态”映射到许多“先前的游戏状态”)。在我看来,通过巧妙地使用表格,关系数据库管理系统比粗略的文本文件更容易钓鱼。我假设缺点是代码自我训练所需的运行时间(因为对数据库的所有调用都可能需要一段时间)。

任何智慧将不胜感激。考虑使用数据库是否明智?我对利弊的分析准确吗?谢谢!

标签: databasealgorithmperformanceartificial-intelligence

解决方案


井字游戏有 9 个字段。

在任何字段中,您都有 3 个值选项(''、'X'、'O')。这使得 3^9 = 19.683 种可能的组合。

您需要为任何字段(0,1 或 null)存储 9 位。这产生了 177.147 位数据,更不用说元数据了。

此外,并非所有可能的组合都有效(您的字段中不能有 3 个 O,只有 1 个 X)。这使得上面的数字更小。

换句话说,如果您没有任何极高的时间限制,那么您的数据库的选择就不是性能驱动的。

如果您使用关系数据库,您仍然应该阅读有关索引的内容。

但是,我不建议您将数据存储在文本文件中(不是说 no-sql db,而是硬盘上的真实文本文件)。因为这使得访问变得复杂,如果没有很好地编程,可能会很慢。

最后的推荐是关系数据库系统,因为在这里你有更多的限制,比如唯一的 id 并且没有不需要的数据类型。这通常会导致更少的错误/错误。您还可以为任何可能的组合提供唯一键,并让您的 RDBMS 使用 unique_constraint 为您强制执行此操作。之后,您制作了一个“链接表”,仅链接您唯一组合的 id。


推荐阅读