08 2012 档案

自动机的一些算法和应用
摘要:几个月前实现了一个自动相关的算法,在一个比较乐观的测试中,将一个2.3G的url集合压缩到了27M,同时,key查找的时间复杂度是O(strlen(key))。当然,还有其它一些自动机相关的算法的优化实现,比如Aho-Corasick多模匹配。自动机的实现,这里说的自动机,指确定性的有穷状态自动机(DFA: Deterministic Finite Automata)。关于非确定性的有穷状态自动机(NFA:Non-deterministic Finite Automata),不会做过多介绍。NFA和DFA本质上是等价的,也就是说,它们的表达能力(能识别的语言的集合)是相同的。“语言”这个词,在 阅读全文

posted @ 2012-08-31 19:37 能发波 阅读(447) 评论(0) 推荐(0)

自动机的思维导图
摘要:自动机有很多用途,不光是编译器会用到,众所周知的还有正则表达式。其他,简单的如字符串搜索,存储等,复杂点的如模型验证,定理证明……最简单的自动机应该算是DFA了,再往简单了说,一个DFA就是一个 map>, 其中 int 是 state id,char是转移标号;如果有人还嫌不够简单,最最简单的那就是 int [][256] 了,就是一个256列的矩阵。就这么简单的一个东西,却蕴含着非常深刻的思想,有着非常广泛的用途。几个月前因为项目需要,再加上自己的兴趣,实现了一系列自动机相关的算法和数据结构(用C++11写的),其结果和成就感远超我当初一开始的想象和预期,因为有好几个算法我的实现远远 阅读全文

posted @ 2012-08-30 20:02 能发波 阅读(214) 评论(0) 推荐(0)

导航