【问题标题】:An Implementation of Double-Array Trie双数组Trie的一种实现
【发布时间】:2012-06-09 07:13:05
【问题描述】:

我正在尝试理解和使用这个Double-Array Trie implementation。但是,我似乎可以理解它们提出的理论实现与代码之间的类比。
准确地说,以下是使用的主要 Trie 结构:

struct _Trie {
AlphaMap   *alpha_map;
DArray     *da;
Tail       *tail;

Bool        is_dirty;
};  

如果有人使用过这个实现,您能否提供一个高级解释,说明以下结构的使用以及与基本数组和检查数组的双数组概念的关系。特别是 AlphaMap。

提前致谢,

【问题讨论】:

    标签: c trie


    【解决方案1】:

    libdatrie 将 unicode 字符转换为紧凑的内部表示;您必须在创建 trie 时定义允许范围的列表。 alpha_map 是一个字符范围的链表。

    da 是一个双数组结构。它包含basecheck 数组。

    tail 是一种用于存储非分支后缀的数据结构(参见“后缀压缩”)。

    is_dirty 是一个标志,如果 trie 尚未存储到磁盘或在从磁盘加载后已更改,则设置为 TRUE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多