如果能用双数组字典树表达 AC自动机,就能集合两者的优点,得到一种近乎完美的数据结构。 ACDAT的基本原理是替换AC自动机的goto表,也可看作为一棵双数组字典树的每个状态(下标)附上额外的信息。上节提到,AC自动机的goto表就是字典树,只不过AC自动机比字典树多了output 表和fail表。那么ACDAT的构建原理就是为每个...
简介: HanLP — Aho-Corasick DoubleArrayTire 算法 ACDAT - 基于双数组字典树的AC自动机 双数组字典树能在O(1)(1是模式串长度)时间内高速完成单串匹配,并且内存消耗可控,然而软肋在于多模式匹配。如果要匹配多个模式串,必须先实现前缀查询,然后频繁截取文本后缀才可多匹配。比如 ushers、shers、hers…这样一份...
如果能用双数组字典树表达 AC自动机,就能集合两者的优点,得到一种近乎完美的数据结构。 ACDAT的基本原理是替换 AC自动机 的goto表,也可看作为一棵双数组字典树的每个状态(下标)附上额外的信息。上节提到, AC自动机 的goto表就是字典树,只不过 AC自动机 比字典树多了output 表和fail表。那么ACDAT的构建原理...