3

我正在探索潜在的免费/付费应用程序的硬件/软件要求(最终目标是移动 Java 应用程序)。

应用程序将从这个简单的目标开始:给定数据库中相关单词的列表,以便能够对单个字符串输入进行单词补全。

换句话说,我已经知道数据库的内容——但是算法的内存占用/速度/搜索效率将决定支持的数据量。

我从一开始就使用基于后缀的树搜索,但我想知道是否有人对这种简单方法与会议中讨论的更复杂方法的速度/内存大小权衡有经验。

老实说,最初的应用程序在上下文中可能只有不到 500 个单词,所以这可能无关紧要,但最终应用程序可能会扩展到数万或数十万条记录——因此是关于速度与内存占用的问题。

我想我可以从一些简单的东西开始,然后再切换,但我希望能早点理解权衡!

4

1 回答 1

2

单词补全建议您要查找以给定前缀开头的所有单词。

尝试对此有好处,特别是如果您要添加或删除元素 - 其他节点不需要重新分配。

如果字典是相当静态的,并且检索很重要,请考虑一个更简单的数据结构:将您的单词放入有序向量中!您可以进行二分搜索以发现以正确前缀开头的候选者,并在其每一侧进行线性搜索以发现所有其他候选者。

于 2009-08-08T14:20:26.743 回答