data-structures - 自动建议功能的加权特里

标签 data-structures trie

我有一个 trie(后缀树),用于我网站的自动建议功能。

现在我想在权重较低的文本上方显示最受欢迎(权重最高)的文本。我如何更改我的 trie 以使建议按加权顺序出现。

还是我应该在内存中按重量排序?

最佳答案

您可以在每个节点添加一个 countweight 属性,并在您使用单词构建 trie 时更新它。每个字符的初始权重为 0,但如果字符是单词的终止符,则其初始权重为 1。随着您不断添加单词,您可以调整终端字符的权重。

因此,例如,您可以:

t:0
|  
o:1
|
w:3---e:0
|  \    \
n:2 a:0  l:4
     \
      r:0
       \
        d:2

对于字符串to(出现一次),tow(出现三次),towel(出现四次),town (出现两次)和toward(也出现两次)。

然后,如果您有前缀 tow,您可以查看非零权重字符串,例如 tow:3towel:4town:2toward:2

之后,您可以根据重量排序。

我还没有在实践中尝试过这个实现;这只是一个想法。

关于data-structures - 自动建议功能的加权特里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17554682/

相关文章:

algorithm - 采访: Suggest a data structure which optimizes insertion,删除和随机值生成

java - 动态换币算法(最优结果)

java - 在 Java 中使用 Trie 自动完成

ocaml - OCaml 中的 Trie 数据结构

c++ - 在具有重复项的一长串数据的滚动窗口中查找模式

java - 如何确定数据结构的实际内存使用情况

c# - 类似于 C# 中的图形实现

Java:如何在哈希数组映射特里树(HAMT)插入期间执行哈希冲突缓解?

cs50 pset5 字典.c : this code is giving segmentation fault

c - 添加节点时如何重置指向头节点的指针?