Trie

✍ dations ◷ 2025-02-24 23:41:15 #数据结构

在计算机科学中,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的话可以自行改写。

相关

  • CH碳-氢键是指碳原子与氢原子之间的共价键,是有机化合物中最常看到的共价键。碳-氢键的键长约1.09 Å (1.09 × 10−10 m),键能约413 kJ/mol,相关于98.7kcal/mol(参见下方的表)。碳
  • 对数正态分布在概率论与统计学中,任意随机变量的对数服从正态分布,则这个随机变量服从的分布称为对数正态分布。如果 Y {\displaystyle Y}
  • 石蝇.mw-parser-output ruby.zy{text-align:justify;text-justify:none}.mw-parser-output ruby.zy>rp{user-select:none}.mw-parser-output ruby.zy>rt{font-feature-settings:
  • 桐城市桐城市位于中国安徽省中部偏南,是安庆市下辖的一个县级市。1996年撤县设市。现辖1个国家级经济开发区、1个省级开发区、12个镇和3个街道。桐城是安徽省历史文化名城,清朝著名
  • 荔波荔波县是中华人民共和国贵州省黔南布依族苗族自治州下属的一个县。面积2432平方公里。邮政编码558400,县政府驻玉屏街道。荔波于秦王赢政三十六年(公元前221年)为象郡毋敛县地
  • 安托万-洛朗·德·拉瓦锡安托万-洛朗·德·拉瓦锡(法语:Antoine-Laurent de Lavoisier,1743年8月26日-1794年5月8日),法国贵族,著名化学家、生物学家,被后世尊称为“近代化学之父”。他使化学从定性转为定量
  • 硫化亚锡硫化亚锡是一种无机化合物,化学式为SnS。它出现在罕见的硫锡矿中。硫化亚锡可由单质直接化合得到,为灰色晶体。如果将硫化氢通入Sn2+(如氯化亚锡)溶液中,可以得到暗棕色沉淀,为水
  • 老挝华人老挝华人,是分布在老挝的海外华人社群,占老挝人口2%。他们主要分布于万象、丰沙湾、琅勃拉邦、巴色。老挝华人主要是广府人、潮州人、客家人、广西人、云南人和四川人,多数是十
  • 鳝鱼意面鳝鱼意面是台湾夜市及台菜馆、台菜餐厅普遍常见料理;尤以台南鳝鱼意面最富盛名;鳝鱼香脆,烩面汤汁浓郁酸甜,美味令人食指大动,鳝鱼极富蛋白质、铁质,亦被视为食补补身圣品。先烹煮
  • 欧仁·奥古斯丁·洛斯特欧仁·奥古斯丁·洛斯特(法语:Eugène Augustin Lauste,1857年1月17日-1935年6月27日),法国发明家,曾在爱迪生实验室担任威廉·肯尼迪·迪克森的助手并参与了活动电影放映机的发明