Trie

✍ dations ◷ 2025-08-16 05:52:47 #数据结构

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

相关

  • 实证学派犯罪学(英语:Criminology)是一门社会科学,主题是寻找犯罪行为的现象与规律,寻找犯罪发生的原因,借此寻找方法以减轻犯罪对社会的影响(最后这项于今日已被更精致地分科为刑事政策,而
  • 南安县南安市(闽南语:.mw-parser-output .sans-serif{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,"Helvetica Neue",Helvetica,Arial,sans-serif} Lâm-
  • 可支配收入可支配所得是经济名词,英文为“Disposable Income”,简称“DI”,其概念为“实际收到的所得”(net pay)。实务上是由总所得扣除直接税而得。与"Disposable Income"类似易混淆的概
  • 信贷评级机构信贷评级机构(英语:credit rating agency,CRA),是提供信贷评级服务的国际性独立机构,该公司通过及时偿还本金和利息以及债务违约的可能性来评估债务人的偿还能力。评级机构可以对
  • 天秀路天秀路(英语:Tin Sau Road),位于天水围新市镇北部103区及108区,东面连接天葵路,西面连接天影路,是一条东西行双向道路。此路前称L13路,根据未命名道路编号定义,属于地区干路。天秀路
  • 中日韩统一表意文字扩展区E中日韩统一表意文字扩展区E(英语:CJK Unified Ideographs Extension E)是一个Unicode区段,在2015年6月17日发布的Unicode 8.0中被引入。扩展E区共收录5762个汉字,编码范围为 U+2B
  • 磁重联磁重联是一种发生于高导电等离子体中的物理过程,过程中磁拓扑重新分布,同时磁能被转换为动能、热能与加速粒子(英语:Particle acceleration)。磁重联涉及的时间尺度介在磁场的慢
  • 中国科学院化学研究所中国科学院化学研究所(以下简称“化学所”)是中国科学院早期成立的研究所之一,成立于1956年,所址地处北京市海淀区中关村。化学所的研究领域涵盖大部分化学二级学科,是一个综合性
  • 提格拉特帕拉沙尔三世提格拉特帕拉沙尔三世(又名 提革拉毘列色三世,希伯来语Tiglath-Pileser III ,旧约圣经名为普勒),(?-前727年),亚述国王(前745年-前727年在位),巴比伦国王(前729年-前727年在位)。阿卡德语名图
  • 物理学前沿《物理学前沿》(英语:),原名《中国物理学前沿》(),是由中国高等教育出版社与德国施普林格科学+商业媒体联合出版的同行评审英文学术期刊。《中国物理学前沿》创刊于2006年,起初为季