【发布时间】:2016-05-03 18:17:36
【问题描述】:
我正在尝试使用仅允许 30kb 数据的微控制器来实现文字游戏。为此,我需要从特定的允许单词字典中查找单词,该字典在未压缩时大小接近 4 MB。
我不需要每次都给出正确答案,这样我就可以在准确性上妥协。有没有一种方法可以在 30kb 的空间中放入 4MB 的字典,同时将准确度损失降至最低?
我已经按照here 的建议尝试使用优化的“trie” 数据结构,使用压缩的 trie 生成器 here 将大小从 4 MB 降低到 740 KB,但我在不丢弃大量单词的情况下,无法找到一种方法来使其更小。
“trie”总是会给我正确的答案。有没有一种通过权衡准确性来减小尺寸的方法,并制定出一个在大多数情况下可以给我正确答案的结构? 也许我可以使用机器学习模型或与之相关的东西?
我知道这几乎是不可能的。但是游戏的设计使您不需要准确的答案。即使是 25% 左右的准确度也是合理的。
我可能会省略最长的单词,直到字典适合那个大小。但在这种情况下,这可能不是最好的方法。
【问题讨论】:
-
"Arduino 的代码大小限制为 30kb" - 究竟是什么受到了这个限制?你的字典不应该嵌入到你的 Python 代码中。
-
我同意你应该把字典放在你的数据部分
-
取决于特定的 Arduino,他可能没有太多选择,字典必须在代码部分结束。我对他如何在 Arduino 上使用 Python 有点迷茫。这里唯一的选择可能是找到一个小得多的字典,这可能会使类似拼字游戏的游戏完全无法玩。用于工作的工具等等。
-
我认为您可以更轻松地通过串行端口与 Arduino 通信。 Arduino 将管理拼字游戏板上的所有“控件”,但处理每个单词将在某些 PC 或 raspi 上远程完成。 python 库“serial”使通过串行端口与另一个设备通信变得非常容易。通过 Arduino 上的串口发送/接收数据就像
Serial.print()和Serial.read()一样简单。 -
@user2357112 很抱歉造成混乱。编辑了我的问题以使其更清楚。 :-)
标签: dictionary machine-learning lookup trie