![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度包检测知识分类
文章平均质量分 57
Alan_DM
还是学生
展开
-
NFA/DFA
1、问题概述随着计算机语言的结构越来越复杂,为了开发优秀的编译器,人们已经渐渐感到将词 法分析独立出来做研究的重要性。不过词法分析器的作用却不限于此。回想一下我们的老师刚刚开始向我们讲述程序设计的时候,总是会出一道题目:给出一个填入 了四则运算式子的字符串,写程序计算该式子的结果。除此之外,我们有时候建立了比较复杂的配置文件,譬如XML的时候,分析器首先也要对该文件进行词法分 析,把整个字符串断成了转载 2016-09-13 10:33:52 · 4585 阅读 · 0 评论 -
正则表达式学习及应用
在scala中,模式匹配是很重要的一个模块,这部分主要涉及到了正则表达式的应用,所以特地学习了一下。 以下是总结的一些语法:符号’^’和’$’他们的作用是分别指出一个字符串的开始和结束。例子如下: "^The":表示所有以”The”开始的字符串(”There”,”The cat”等); "of despair$":表示所以以”of despair”结尾的字符串; "^abc$":表示开始和结原创 2016-09-13 11:36:46 · 381 阅读 · 0 评论 -
对于DFA、NFA理解
最近在做深度包检测课题时,需要学一些新的算法: DFA、NFA,对这两个算法进行一下小的总结:有穷状态自动机一听这个名字感觉很高大上,很陌生,不知道是什么意思,但是可以分开来理解。有穷,也就是说这个东西是有穷尽的,不是无限多的。状态自动机(自动机):软件工程的统一建模语言(UML)有状态图,数字逻辑中也有状态转移图。不过这些各种各样的图在本质上都跟状态机没有什么区别。总体的意思就是在有限个输入的情原创 2016-09-13 18:28:28 · 36760 阅读 · 0 评论 -
将正则表达式转换为有限状态自动机
在前一文章中总结了一下对DFA和NFA两种有限状态自动机的认识,在实际应用中,例如开发编译器时,将正则表达式转换为自动机会非常重要的一环。如果对NFA和DFA不理解的可以看下这篇博文 看一下如何把正则表达式通过Thompson构造转换为NFA: DFA和NFA理解 一个例子: (and|any)转换为NFA“|”或者,也就是从开始分成两条路去选择。 或者:从初始状态分化两条对应字符为空转载 2016-09-14 20:07:57 · 17609 阅读 · 2 评论 -
正则表达式分组算法:Yu算法
Yu算法的提出Yu等人首次提出了正则表达式分组的概念,同时提出了Yu算法。 在研究中提出如下假设: 存在正则表达式 R1、R2、R3,在合并正则表达式时,如果 R1 与 R2 互不影 响,R2 与 R3 互不影响,则可以认为 R1 与 R3 互不影响。 该假设并没有提供出实际的数学证明,只是通过大量实验检测不满足假设的概率极低可以忽略不计。Yu算法的内容Yu 算法通过计算两两正则表达式之间的原创 2016-09-19 19:28:19 · 1096 阅读 · 0 评论 -
正则表达式分组算法:IGA算法
针对Yu算法中存在的不足王美阳等人在研究中提出了新的正则表达式分组算法——IGA 算法。IGA 算法更新了正则表达式之间相互作用大小的描述,通过引入膨胀系数这一概念,来衡量正则表达式相互作用的大小。膨胀率的定 义如下:EC(R1, R2) = #DFA(R1 |R2) /(#DFA(R1)+#DFA(R2))EC(R1, R2) = #DFA(R1 |R2) /(#DFA(R1)+#DFA(R2))原创 2016-09-20 10:52:35 · 1702 阅读 · 0 评论 -
基于遗传算法的正则表达式分组算法
蔡良伟等人在提出了基于遗传算法的表达式分组 REG_NAGA 算法, 该算法优化了原有的 Becchi 分组算法,获得了较好的分组效果一、Becchi 分组算法 Becchi 算法由 Becchi 等人提出的,其算法的分组策略为不断循环二分待分组的特征模式集合,直到完成正则表达式分组。Becchi 算法的分组过程如下: (1) 将未分组正则表达式集合的第一条正则表达式加入到当前组原创 2016-09-20 11:28:08 · 1783 阅读 · 0 评论 -
对四种正则表达式分组算法的评估
在前几篇文章中介绍了Yu算法,IGA算法,Becchi算法和REG_NAGA算法,我们从分组之间DFA状态数是否平衡,是否度量正则表达式间膨胀影响,分组时的度量方式,是否对分组的匹配顺序进行调度四个方面来评估下这几个算法,通过下图来展现: 在前几篇博文中我们可以知道,Yu算法和IGA算法会设定一个阈值,当当前分组中的状态数达到阈值以后会重新建立分组,他们的,而IGA与Yu算法不同的是IGA引入了公原创 2016-09-20 11:53:42 · 1100 阅读 · 0 评论