问题描述
我正在尝试实现以下论文中提到的节省空间的Trie数据结构。(完成Trie)
Space-Efficient Data Structures for Top-k Completion
通过以上参考,我在制作数据结构时遵循了以下步骤。
1)我用1000个单词创建了Trie树(未压缩)。
2)然后我按级别顺序遍历树并创建了几个向量。
-
vector< bitset<5> > noOfChildren;
特定节点有多少个子节点。一个节点可以有(0到26个子节点),因此可以用5位表示。 -
vector< bitset<5> > charsInBits;
特定节点的字符将转换为5位。 -
vector< int> startPosition
它是向量noOfChildren的前缀和。给出特定节点的第一个子节点的索引。 -
vector<bitset<1> > leafNode
它存储该节点是否为叶节点。 0代表没有叶子,1代表叶子。现在我将所有这些向量数据存储在不同的文件中。(。txt)
(上面的过程是一次过程。)
现在,当我运行程序时,我将从(.txt)文件中提取所有数据到各自的向量中。
然后,我处理所有这些向量并成功遍历Trie树。
我有几个问题
-
这是紧凑的Trie表示形式,因为我还没有在内存中存储Trie节点地址?
-
我的程序给我1000多个字“细分错误”。它甚至不创建Trie树。为什么会这样?
注意:
- 我已经在程序中实现了上述逻辑,并且我的程序可以完美地运行1000个单词。
- 我还没有完全执行上述研究论文中所说的话。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)