如何解决用于实现Trie的简洁数据结构
我正在尝试实现以下论文中提到的节省空间的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多个字“细分错误”。它甚至不创建Trie树。为什么会这样?
注意:
- 我已经在程序中实现了上述逻辑,并且我的程序可以完美地运行1000个单词。
- 我还没有完全执行上述研究论文中所说的话。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。