- 博客(3)
- 资源 (8)
- 收藏
- 关注
原创 有多个初始状态的 DFA
最近做了一项工作:允许一个 DFA 有多个起始状态(可以称作根: root)。这样有以下几个好处:对于多正则表达式匹配(Multiple Regular Expression Matching)的 DFA在创建多正则表达式匹配的 DFA 的过程中,有一个 DFA 的 Union 操作,这操作通过 NFA 到 DFA 的转化来完成,在这个过程中,如果状态膨胀失去控制(最坏情况是指数级,一般情
2013-11-28 22:17:55 7050
原创 gcc 4.7.3 的一个 c++11 bug
昨天一个朋友 checkout 了我的 febird 代码,编译时出现了一个诡异的错误。经过仔细勘察,他的 g++ 版本是 4.7.3,而我测试过的 g++4.7.2,g++4.8.2均无问题。后来修改代码,解决了那个问题,但要还原那个bug时,很费了一番力气。以下是还原的那个 bug 的一段简单代码,不过可能不是最简单的。#include struct A { int
2013-11-13 10:30:50 3657 1
原创 多正则表达式匹配(Multiple Regular Expression Matching)
目前 febird 中的自动机库已支持正则表达式,并且,支持的是多正则表达式匹配:给定 M 个正则表达式,每个正则表达式有一个 [0, M) 的唯一 ID,该算法为这些正则表达式生成一个 DFA。再给定一个输入文本 Text ,如果只计最长匹配,该 Text 可以匹配 M 个正则表达式中的的 K 个在该DFA上运行我的匹配算法,可以在 O(strlen(Text) + K) 的时间
2013-11-03 22:22:16 7582 15
febird C++ 库(附带所有源码)
2009-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人