Algorithm/Data 判断一个单词是否为有效英文单词的结构

Algorithm/Data Structure to determine if a word is a valid English word

我正在设计一个 HTML5 游戏,它要求我验证用户输入的单词是否是有效的英语单词。我知道我可以通过将单词发送到服务器来执行验证,但是,由于我想在用户输入时进行验证,服务器端验证不是最佳解决方案。因此,我需要在游戏中执行验证,运行 在用户的浏览器中。

当用户键入时,针对英语中的每个单词验证用户输入的单词的最有效方法是什么?

是的,您可以使用诸如 trie 之类的数据结构,我们在其中制作可搜索词的树并在 O(|P|) 时间内找到元素。为什么 trie 是一个更好的选择,如果你问自己......你会看到每当用户一次输入一个字符时,你可以动态地逐个字母地遍历并根据你的游戏规则给出快速反馈。

P: pattern you are searching for.

你还说服务器端验证是不可能的,但我见过一些游戏,他们会调用 ajax 来验证单词,然后他们会创建一些在屏幕上弹出的东西或一些游戏故事或让你觉得它正在瞬间或以某种有趣的方式发生的组件,

虽然 trie 是要使用的 "theoretically correct" 数据结构,但 /usr/share/dict/words 在我的计算机上压缩到 1 MB 以下。 zlib 有纯 JS 实现,可用于解压缩。二进制搜索算法将需要不到 20 次调用来查找字典中的任何特定单词,这对于在浏览器中进行交互使用来说已经足够快了。

这足以在浏览器中实现它。

像这样的任务的一个好的算法是Bloom filter。您应该知道,困难的部分是 assemble 一本合适的字典。