Trie

✍ dations ◷ 2025-04-26 17:07:21 #数据结构

在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。

Trie这个术语来自于retrieval。根据词源学,trie的发明者Edward Fredkin把它读作/ˈtriː/ "tree"。但是,其他作者把它读作/ˈtraɪ/ "try"。

在图示中,键标注在节点中,值标注在节点之下。每一个完整的英文单词对应一个特定的整数。Trie可以看作是一个确定有限状态自动机,尽管边上的符号一般是隐含在分支的顺序中的。

键不需要被显式地保存在节点中。图示中标注出完整的单词,只是为了演示trie的原理。

trie中的键通常是字符串,但也可以是其它的结构。trie的算法可以很容易地修改为处理其它结构的有序序列,比如一串数字或者形状的排列。比如,bitwise trie中的键是一串比特,可以用于表示整数或者内存地址。

trie树常用于搜索提示。如当输入一个网址,可以自动搜索出可能的选择。当没有完全匹配的搜索结果,可以返回前缀最相似的可能。

trie树实际上是一个确定有限状态自动机(DFA),通常用转移矩阵表示。行表示状态,列表示输入字符,(行,列)位置表示转移状态。这种方式的查询效率很高,但由于稀疏的现象严重,空间利用效率很低。也可以采用压缩的存储方式即链表来表示状态转移,但由于要线性查询,会造成效率低下。

于是人们提出了下面两种结构。

三数组Trie(Triple-Array Trie)结构包括三个数组:base,next和check.

二数组Trie(Double-Array Trie)包含base和check两个数组。base数组的每个元素表示一个Trie节点,即一个状态;check数组表示某个状态的前驱状态。

这是一个用于词频统计的程序范例,因使用了getline(3),所以需要glibc才能链接成功,没有glibc的话可以自行改写。

相关

  • 显微解剖学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学组织学(英语:histology)是一门对生物组织
  • 赫布里底群岛赫布里底群岛(Hebrides,发音为/ˈhɛbrɨˌdiːz/)位于苏格兰西部大西洋中,由内赫布里底群岛和外赫布里底群岛组成。群岛自中石器时代起就有人居住,凯尔特语、古诺尔斯语和英语文
  • 福煦大街福煦大街(法语:Avenue Foch)是法国巴黎的一条街道,开辟于1854年,最初以拿破仑三世的皇后命名为皇后大街,1929年以第一次世界大战期间的法国元帅费迪南·福煦重新命名。福煦大街位
  • 总书记总书记或第一书记是政党的党务或政治领导职位,以共产党、劳动党、社会党和其他左翼政党较多使用。一些政党同时有主席和总书记(第一书记)的职位,两者的职权区分在各个政党中各有
  • 在北和平统一促进协会在北和平统一促进协会(朝鲜语:재북평화통일촉진협의회 / 在北平和統一促進協議會)简称在北平统(재북평통)或统协(통협),是朝鲜民主主义人民共和国团体,成立于1956年7月。协会成员主要
  • 根肿黑粉菌纲根肿黑粉菌属 根肿黑粉菌纲(学名:Entorrhizomycetes)是担子菌门黑粉菌亚门下的一个纲。该纲仅含一个目(根肿黑粉菌目,Entorrhizales),该目下也仅含一个科(根肿黑粉菌科,Entorrhizale
  • 王神爱王神爱(384年-412年),晋安帝司马德宗的皇后。琅琊临沂人。祖父王羲之、父王献之都是中国古代大书法家,母为晋简文帝女新安愍公主司马道福。王皇后本人也工于书法。太元二十一年(39
  • 阮自嵩阮自嵩(?-?),字惟中,号思竹,直隶桐城(今安徽枞阳)阮家享堂人,祖籍陕西长安(今西安市),明朝政治人物、进士出身。福建巡抚阮鹗之侄。顺天府乡试第十一名,后参加会试第二十名。嘉靖三十五年(15
  • FictionJunctionFictionJunction(フィクション ジャンクション)是日本作曲家梶浦由记Solo Project的总称。(但不包含梶浦制作的原声音乐。)梶浦由记除担当键盘乐器,还不定期(几近于无,例如:synchron
  • 弦论地景弦论地景(String theory landscape)是弦论的一项重要概念,反映了所有的物理参数,因此形成充斥着大量维度的地形,如同高山和谷地一般。处在谷地的流形,是属于稳定真空,也是多维地景