本文主要是对double-array实际实现时的一些概念和逻辑进行自己的解释, 有误请指点. coolkissmile@gmail.com
trie树的作用
常用的高效查询检索数据结构
double-array用途: 文本分词, 模糊匹配检索, 精确匹配检索
triple-array-trie 三数组trie树
网上很多资料, 可以自己搜索, 基本原理的介绍不是本文的重点
http://blog.jqian.net/post/trie.html
本文也是建立在你已经了解了基本原理的基础上, 所以请首先了解下上面的内容, 或者如下原文:
http://linux.thai.net/~thep/datrie/datrie.html
double-array双数组trie树
double-array是由 triple-array 进行空间压缩和优化得来的, 那么是基于什么原理分析出三数组可以压缩为双数组的呢?
核心概念解释
不管是 算法原理还是具体实际编程实现的时候都涉及到几个概念
* 数据如何表示: 要构建的数据被分割为多个字符, 比如 a-z, 每个字符都进行数据编号,
这个编号就是作为寻找内存空间时的增量偏移来使用, 不同的字符编号不同
* 中文如何表示: 理论上中文可以用穷举的方式进行编号, 比如1-65535,
但是实际上一个中文字符是被当做两个字节看待的, 这样就可以把中文的字符编码降维到 ascii码的数量级