【精选】深入双数组Trie(Double-Array Trie).pdfVIP

【精选】深入双数组Trie(Double-Array Trie).pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【精选】深入双数组Trie(Double-Array Trie)

深入双数组Trie(Double-Array Trie)  1 什么是Double Array Trie  2 DAT 结构  2.1 DAT 定义  2.2 DAT 匹配  2.3 DAT 构造  2.4 DAT 改进方案 什么是Double Array Trie  Double Array Trie 是TRIE 树的一种变形,它是在保证TRIE 树检索速度的前提下, 提高空间利用率而提出的一种数据结构,本质上是一个确定有限自动机 (deterministic finite automaton,简称DFA)。  所谓的DFA 就是一个能实现状态转移的自动机。对于一个给定的属于该自动机的状 态和一个属于该自动机字母表Σ 的字符,它都能根据事先给定的转移函数转移到下 一个状态。  对于Double Array Trie (以下简称DAT),每个节点代表自动机的一个状态,根据 变量的不同,进行状态转移,当到达结束状态或者无法转移的时候,完成查询。 DAT 结构 DAT 定义  DAT 是采用两个线性数组(base[]和check[]),base 和check 数组拥有一致的下标, (下标)即DFA 中的每一个状态,也即TRIE 树中所说的节点,base 数组用于确定 状态的转移,check 数组用于检验转移的正确性。因此,从状态s 输入c 到状态t 的一个转移必须满足如下条件: base[s] + c == t check[base[s] + c] == s  DAT 也可如下描述: 1. 对于给定的状态s,如果有n 个状态(字符c ,c ,...,c )的转移,需要在 1 2 n base 数组中找到一段空位t ,t ,...,t ,使得t -c ,t -c ,...,t -c 都为base 1 2 n 1 1 2 2 n n 数组中下标为s 的值,注意此处的t ,t ,...,t 不一定在base 数组中连续; 1 2 n 2. 对于转移的状态t ,t ,...,t ,其作为下标时, 1 2 n check[t ],check[t ],...,check[t ]的值都为状态s; 1 2 n  为了便于理解,这里有一个256 叉树的图(准确的说是26 叉树,但是图画得不好, 暂且我们把它当作256 叉树吧)。  图中最顶端有256 的父节点,每个父节点都有256 个子节点;那么无论汉字和字母, 都可以分布在256 个子节点上,但是如果词语只有app 和apple 以及banana 三个词 语,那么256 个父节点显得有些浪费,实际上只需要2 个父节点就可以了。 o 如果节点的类型为整型,我们把所有的节点进行编号的话,且直接采用词语 的首字母ascii 码来直接作为节点,a(97), b(98)这两个父节点会使用到, 其余的父节点是多余的,使用一个空指针即可。 o 根据256 叉树的定义,97 和98 也会有256 个子节点,但是词语的第二个字 母显示,97 的下一个节点只有一个p(112)节点,98 的下一个节点只有一个 a(97)节点,则其余的节点仍然为空,这样,由于树型的算法的复杂度为O ,

文档评论(0)

vshoulrengb3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档