CN115801020B - 确定有限状态自动机压缩方法、匹配方法、设备及介质 - Google Patents
确定有限状态自动机压缩方法、匹配方法、设备及介质 Download PDFInfo
- Publication number
- CN115801020B CN115801020B CN202310103355.2A CN202310103355A CN115801020B CN 115801020 B CN115801020 B CN 115801020B CN 202310103355 A CN202310103355 A CN 202310103355A CN 115801020 B CN115801020 B CN 115801020B
- Authority
- CN
- China
- Prior art keywords
- state
- dfa
- derived
- states
- automaton
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明公开一种确定有限状态自动机压缩方法、匹配方法、设备及介质,涉及DFA压缩技术领域,包括获取DFA,每个DFA的DFA状态对应一个NFA的状态子集;若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成另一DFA状态到任一DFA状态的派生迁移边,得到DFA的派生图;根据派生图,获得每个DFA状态到初始状态的派生路径;根据DFA状态和对应的派生路径上所有派生状态之间的公共迁移边数,从派生状态中确定出DFA状态的默认状态;保留DFA状态的本地迁移边和默认迁移边,得到压缩后的DFA。本发明解决了现有DFA压缩方法时间复杂度较高的技术问题。
Description
技术领域
本发明涉及DFA压缩技术领域,尤其涉及一种确定有限状态自动机压缩方法、匹配方法、设备及介质。
背景技术
正则表达式匹配算法通常通过一个确定性有限自动机DFA(DeterministicFiniteAutomaton)来表示一个正则表达式规则集,实现高速海量的网络内容检测,但是,基于DFA的正则表达式匹配算法由于存储空间爆炸,存在存储开销高的问题。
相关技术中,通常采用默认迁移边思想,当DFA的两个状态之间存在多条公共迁移边时,消除一个状态的公共迁移边,保留该一个状态的公共迁移边之外的部分本地迁移边,同时保留一条默认迁移边指向另一个状态,进行DFA压缩,解决存储空间爆炸问题;但是,这种DFA压缩方法需要计算DFA中每个状态与所有其他状态的公共迁移边数,来确定每个状态需要保留的本地迁移边和默认迁移边,导致DFA压缩的时间复杂度较高。
发明内容
本发明的主要目的在于:提供一种确定有限状态自动机压缩方法、匹配方法、设备及介质,旨在解决现有DFA压缩方法需要计算DFA中每个状态与所有其他状态的公共迁移边数,导致DFA压缩的时间复杂度较高的技术问题。
为实现上述目的,本发明采用如下技术方案:
第一方面,本发明提供一种确定有限状态自动机压缩方法,方法包括:
获取确定有限状态自动机,每个确定有限状态自动机的DFA状态对应一个非确定有限状态自动机的状态子集;
若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成另一DFA状态到任一DFA状态的派生迁移边,得到确定有限状态自动机的派生图;派生图的节点为DFA状态,根节点为确定有限状态自动机的初始状态;
根据派生图,获得每个DFA状态到初始状态的派生路径;
根据DFA状态和对应的派生路径上所有派生状态之间的公共迁移边数,从派生状态中确定出DFA状态的默认状态;
保留DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机;默认迁移边为DFA状态指向默认状态的迁移边。
可选地,若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成另一DFA状态到任一DFA状态的派生迁移边,得到确定有限状态自动机的派生图,包括:
根据状态子集的状态子集大小,对DFA状态进行划分,得到至少一个状态组;
若任一状态组中任一DFA状态对应的状态子集是另一状态组中另一DFA状态对应的状态子集的公共子串,则生成派生迁移边,得到派生图;任一状态组的状态子集大小小于另一状态组的状态子集大小。
可选地,若任一状态组中任一DFA状态对应的状态子集是另一状态组中另一DFA状态对应的状态子集的公共子串,则生成派生迁移边,得到派生图的步骤,包括:
按照状态子集大小的递增顺序,从至少一个状态组中确定出另一状态组和任一状态组;
若任一状态组中任一DFA状态对应的状态子集是另一状态组中另一DFA状态对应的状态子集的公共子串,则生成派生迁移边,得到派生图。
可选地,根据派生图,获得每个DFA状态到初始状态的派生路径,包括:
根据派生图中DFA状态的派生迁移边,确定DFA状态的状态深度;
根据状态深度,对DFA状态进行划分,得到至少一个状态深度组;
按照状态深度的递增顺序,依次从至少一个状态深度组中确定出目标状态深度组;
根据派生图,获得目标状态深度组中所有DFA状态到初始状态的派生路径,得到每个DFA状态的派生路径。
可选地,保留状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机之前,方法还包括;
从状态中确定出迁移边相同的至少两个等价状态;
从至少两个等价状态中确定出聚类状态;
利用聚类状态替代至少两个等价状态中除聚类状态之外的冗余状态,并消除冗余状态的关联迁移边,得到冗余消除后的确定有限状态自动机;
保留DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机,包括:
保留冗余消除后的确定有限状态自动机的DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机。
可选地,获取确定有限状态自动机,包括:
获取正则表达式规则集;
根据正则表达式规则集,构建非确定有限状态自动机;
对非确定有限状态自动机进行转换,得到确定有限状态自动机。
第二方面,本发明还提供一种确定有限状态自动机匹配方法,方法包括:
获取输入字符串;
从字符串中确定出当前字符;
根据确定有限状态自动机的当前状态的本地迁移边,对当前字符进行匹配处理,确定有限状态自动机通过如上述的确定有限状态自动机压缩方法压缩得到;
若本地迁移边的字符与当前字符匹配成功,则根据本地迁移边,将确定有限状态自动机迁移到目标状态;
判断目标状态是否为接受状态;
若目标状态为接受状态,则输出字符串的匹配结果;
将确定有限状态自动机迁移到初始状态,并返回执行从字符串中确定出当前字符的步骤。
可选地,根据确定有限状态自动机的当前状态的本地迁移边,对输入字符串的每个字符进行匹配处理的步骤之后,方法还包括:
若本地迁移边的字符与当前字符匹配失败,则根据当前状态的默认迁移边,将确定有限状态自动机迁移到目标默认状态;
将目标默认状态作为当前状态,返回执行根据确定有限状态自动机的当前状态的本地迁移边,对当前字符进行匹配处理的步骤。
第三方面,本发明还提供一种确定有限状态自动机压缩设备,设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的确定有限状态自动机压缩程序,通过确定有限状态自动机压缩程序配置为实现如上述任一项确定有限状态自动机压缩方法或确定有限状态自动机匹配方法的步骤。
第四方面,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有确定有限状态自动机压缩程序,确定有限状态自动机压缩程序被处理器执行时实现如上述任一项的确定有限状态自动机压缩方法或确定有限状态自动机匹配方法的步骤。
本发明提供一种确定有限状态自动机压缩方法、匹配方法、设备及介质,获取确定有限状态自动机,每个确定有限状态自动机的DFA状态对应一个非确定有限状态自动机的状态子集;若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成另一DFA状态到任一DFA状态的派生迁移边,得到确定有限状态自动机的派生图;派生图的节点为DFA状态,根节点为确定有限状态自动机的初始状态;根据派生图,获得每个DFA状态到初始状态的派生路径;根据DFA状态和对应的派生路径上所有派生状态之间的公共迁移边数,从派生状态中确定出DFA状态的默认状态;保留DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机;默认迁移边为DFA状态指向默认状态的迁移边。
由此,本发明按照状态子集大小的递增顺序,依次搜索每个状态组中每个DFA状态对应的状态子集到特定状态组中每个DFA状态对应的状态子集的公共子串,生成每个DFA状态的派生迁移边;只需要搜索每个DFA状态对应的状态子集与至多O(log(n))个DFA状态对应的状态子集的公共子串,使得构建派生图的时间复杂度为O(log(n));并通过根据每个DFA状态到初始状态的派生路径上的派生状态之间的公共迁移边数,从每个DFA状态的派生状态中确定出对应的默认状态,只需根据每个DFA状态与其派生路径上至多O(log(n))个派生状态之间的公共迁移边数,来确定每个DFA状态需要保留的本地迁移边和默认迁移边,进行确定有限状态自动机压缩。使得确定有限状态自动机压缩的时间复杂度为O(log(n)),相较于现有确定有限状态自动机压缩方法,D2FA的时间复杂度为O(n2log(n))和A-DFA的时间复杂度为O(n2),降低了DFA压缩的时间复杂度较高,解决了现有DFA压缩方法需要计算DFA中每个状态与所有其他状态的公共迁移边数,导致DFA压缩的时间复杂度较高的技术问题,提高了DFA的压缩效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明确定有限状态自动机压缩设备的结构示意图;
图2为本发明确定有限状态自动机压缩方法第一实施例的流程示意图;
图3为图2中步骤S200的细化流程示意图;
图4为正则表达式规则集{ab.*cd, bc.*da}的DFA的派生图;
图5为图2中步骤S300的细化流程示意图;
图6为正则表达式规则集{ab.*cd, bc.*da}的DFA的默认树;
图7为正则表达式规则集{ab.*cd, bc.*da}的压缩后的DFA;
图8为本发明确定有限状态自动机匹配方法第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的装置或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种装置或者系统所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括该要素的装置或者系统中还存在另外的相同要素。
现有技术中,针对基于DFA的正则表达式匹配算法存储开销高的问题,主要通过两类压缩方法进行DFA压缩,压缩DFA的存储空间成为高速正则表达式匹配算法。
第一类压缩方法是合并DFA迁移边,解决DFA迁移边冗余问题。例如,D2FA采用默认迁移边思想,即当两个状态之间存在多条公共迁移边时,消除一个状态的公共迁移边,同时保留一条默认迁移边指向另一个状态;与DFA相比,D2FA减少约95%的迁移边,显著压缩了DFA的存储空间。但是,由于D2FA需要计算每个状态与所有其他状态的公共迁移边数,来确定需要消除的公共迁移边和需要保留默认迁移边,使得确定需要消除的公共迁移边和需要保留默认迁移边的时间复杂度为O(n2log(n)),其中n是DFA的状态总数,导致D2FA的压缩方法任存在时间复杂度较高的问题。因此,针对D2FA的默认迁移边确定时间复杂度高问题,A-DFA采用状态深度思想,减少默认迁移边确定时间复杂度为O(n2),牺牲了少量DFA压缩率。同时,还提出字母表压缩和状态融合等优化方法,在D2FA或A-DFA基础上,进一步减少冗余迁移边。
第二类压缩方法是构建新型有限自动机,解决DFA状态空间爆炸问题。例如,mDFA采用正则表达式规则分组和改写思想,将一个超大DFA分割成多个小型DFA,从而减轻DFA状态空间爆炸问题。Hybrid-FA采用一个头部DFA和多个尾部NFA表示一个超大DFA,即当产生指数级数量的DFA状态时,采用一个或多个NFA表示正则表达式,进一步减轻DFA状态空间爆炸问题。HFA和XFA采用额外变量及其操作指令思想,即在状态或迁移边上增加多个额外变量记录DFA状态匹配信息,可避免产生指数级数量的DFA状态,显著压缩DFA状态空间。但是,HFA和XFA构建需要手动标识正则表达式等额外辅助开销,HFA和XFA执行需要额外硬件实现变量操作。
综上,现有DFA压缩方法仍存在时间复杂度较高的问题。
鉴于现有DFA压缩方法需要计算DFA中每个状态与所有其他状态的公共迁移边数,导致DFA压缩的时间复杂度较高的技术问题,本发明提供了一种确定有限状态自动机压缩方法,总体思路如下:
方法包括:获取确定有限状态自动机,每个确定有限状态自动机的DFA状态对应一个非确定有限状态自动机的状态子集;若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成另一DFA状态到任一DFA状态的派生迁移边,得到确定有限状态自动机的派生图;派生图的节点为DFA状态,根节点为确定有限状态自动机的初始状态;根据派生图,获得每个DFA状态到初始状态的派生路径;根据DFA状态和对应的派生路径上所有派生状态之间的公共迁移边数,从派生状态中确定出DFA状态的默认状态;保留DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机;默认迁移边为DFA状态指向默认状态的迁移边。
本发明提供一种确定有限状态自动机压缩方法,按照状态子集大小的递增顺序,依次搜索每个状态组中每个DFA状态对应的状态子集到特定状态组中每个DFA状态对应的状态子集的公共子串,生成每个DFA状态的派生迁移边;只需要搜索每个DFA状态对应的状态子集与至多O(log(n))个DFA状态对应的状态子集的公共子串,使得构建派生图的时间复杂度为O(log(n));并通过根据每个DFA状态到初始状态的派生路径上的派生状态之间的公共迁移边数,从每个DFA状态的派生状态中确定出对应的默认状态,只需根据每个DFA状态与其派生路径上至多O(log(n))个派生状态之间的公共迁移边数,来确定每个DFA状态需要保留的本地迁移边和默认迁移边,进行确定有限状态自动机压缩。使得确定有限状态自动机压缩的时间复杂度为O(log(n)),相较于现有确定有限状态自动机压缩方法,D2FA的时间复杂度为O(n2log(n))和A-DFA的时间复杂度为O(n2),降低了DFA压缩的时间复杂度较高,解决了现有DFA压缩方法需要计算DFA中每个状态与所有其他状态的公共迁移边数,导致DFA压缩的时间复杂度较高的技术问题,提高了DFA的压缩效率。
下面对本发明技术实现中应用到的确定有限状态自动机压缩方法、匹配方法、设备及介质进行详细说明:
参照图1,图1为本发明确定有限状态自动机压缩设备的结构示意图;
如图1所示,该设备可以包括:处理器1001,例如中央处理器(Central ProcessingUnit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括个人电脑和笔记本电脑等用户设备,可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,Wi-Fi)接口)。存储器1005可以为高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以为稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以为独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及确定有限状态自动机压缩程序。
在图1所示的设备中,网络接口1004主要用于与其他网络设备进行数据通信;用户接口1003主要用于与用户设备进行数据交互;本发明确定有限状态自动机压缩方法中的处理器1001、存储器1005可以设置在设备中,确定有限状态自动机压缩方法通过处理器1001调用存储器1005中存储的确定有限状态自动机压缩程序,并执行本发明实施例提供的确定有限状态自动机压缩方法或确定有限状态自动机匹配方法。
下面结合附图和具体实施方式对本发明的确定有限状态自动机压缩方法、匹配方法、设备及介质进行详细描述。
基于上述硬件结构但不限于上述硬件结构,参照图2至7,图2为本发明确定有限状态自动机压缩方法第一实施例的流程示意图,图3为图2中步骤S200的细化流程示意图,图4为正则表达式规则集{ab.*cd, bc.*da}的DFA的派生图,图5为图2中步骤S300的细化流程示意图,图6为正则表达式规则集{ab.*cd, bc.*da}的DFA的默认树,图7为正则表达式规则集{ab.*cd, bc.*da}的压缩后的DFA。本实施例提供一种确定有限状态自动机压缩方法,方法包括:
步骤S100:获取确定有限状态自动机,每个确定有限状态自动机的DFA状态对应一个非确定有限状态自动机的状态子集;
本实施例中,执行主体为如图1所示的确定有限状态自动机压缩设备,该设备包括可以为包含一独立主机的物理服务器,或可以为主机集群承载的虚拟服务器。
本实施例中,一个给定的正则表达式规则集可以采用一个非确定有限状态自动机NFA表示,一个NFA包括多个状态子集,可以转换为一个确定有限状态自动机DFA。一个DFA包括多个DFA状态,一个DFA状态对应一个状态子集。DFA包含一个状态集、一个迁移边集和一个字母表;状态集中包括该DFA的多个DFA状态,DFA状态包括初始状态、接受状态和中间状态等三种状态,初始状态是DFA的起始状态,接受状态是匹配正则表达式的状态;迁移边集包括DFA从当前状态迁移到下一个状态的多条迁移边,迁移边表示当输入一个字符时,DFA从当前状态迁移到下一个状态;字母表包括DFA可处理的输入字符。
具体的,步骤S100,包括:获取正则表达式规则集;根据正则表达式规则集,构建非确定有限状态自动机;对非确定有限状态自动机进行转换,得到确定有限状态自动机。
本实施例中,正则表达式规则集可以为任意一个给定的正则表达式规则集,可以通过一个NFA表示,并且NFA可以通过子集构造算法转换为DFA。以下,以给定的正则表达式规则集{ab.*cd,bc.*da}为例进行说明,如表1所示,表1为正则表达式规则集{ab.*cd,bc.*da}的DFA的状态迁移表。
表1
续表1
其中,表1包括DFA的DFA状态、每个DFA状态对应的状态子集、DFA可处理的输入字符、迁移边和状态子集的状态子集大小。其中,DFA的初始状态0对应的NFA的状态子集为{0};当DFA处于初始状态0时,若DFA读入字符a,则DFA从状态子集{0}迁移到状态子集{0,1},即,DFA从DFA状态0迁移到DFA状态1;若DFA读入字符b,则DFA从状态子集{0}迁移到状态子集{0, 5},即,DFA从DFA状态0迁移到DFA状态2;若读入其他字符,则DFA从状态子集{0}迁移到状态子集{0},即,DFA从DFA状态0迁移到DFA状态0。当读入字符d或a后,若DFA由当前状态迁移到对应的状态子集中包括4或8对应的下一个DFA状态,则该下一个DFA状态为接受状态;如表1中,DFA状态14、DFA状态16、DFA状态17和DFA状态19是接受状态。
步骤S200:若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成另一DFA状态到任一DFA状态的派生迁移边,得到确定有限状态自动机的派生图;派生图的节点为DFA状态,根节点为确定有限状态自动机的初始状态;
本实施例中,若任DFA一状态对应的状态子集是另DFA一状态对应的状态子集的最长公共子串,则任一DFA状态派生另一DFA状态,生成另一DFA状态到任一DFA状态的派生迁移边,得到DFA中每个DFA状态的所有派生迁移边,然后将DFA中每个DFA状态作为节点,派生迁移边做为派生图的有向边,可以得到DFA的派生图。其中,派生图包括节点和派生迁移边,节点包括根节点、派生父节点和派生子节点,根节点为DFA的初始状态,另一DFA状态→任一DFA状态为派生迁移边,任一DFA状态为派生子节点,另一DFA状态为派生父节点,→表示派生关系。
具体的,如图3所示,步骤S200,包括:
步骤S210:根据状态子集的状态子集大小,对DFA状态进行划分,得到至少一个状态组;
步骤S220:若任一状态组中任一DFA状态对应的状态子集是另一状态组中另一DFA状态对应的状态子集的公共子串,则生成派生迁移边,得到派生图;任一状态组的状态子集大小小于另一状态组的状态子集大小。
本实施例中,同一状态组中的DFA状态对应的状态子集具有相同的状态子集大小,任一状态组的状态子集大小可以为另一状态组的状态子集大小减一或另一状态组的状态子集大小减二或任一状态组的状态子集大小可以为一;即,若一个DFA状态对应的状态子集的状态子集大小为i,则将该DFA状态划分到第i状态组,得到DFA对应的至少一个状态组,i为大于等于1的正整数,当另一状态组为第i状态组时,任一状态组为第i-1状态组、第i-2状态组或第1状态组。
实际情况下,当另一状态组为第i状态组时,首先,搜索第i状态组中每个DFA状态对应的状态子集与第i-1状态组中每个DFA状态对应的状态子集的公共子串,若第i-1状态组中任一DFA状态对应的状态子集是第i状态组中另一DFA状态对应的状态子集的公共子串,则生成第i状态组中另一DFA状态到第i-1状态组中任一DFA状态的派生迁移边;若第i-1状态组中任一DFA状态对应的状态子集不是第i状态组中另一DFA状态对应的状态子集的公共子串,则搜索第i-2状态组中每个DFA状态对应的状态子集与第i状态组中每个DFA状态对应的状态子集的公共子串,若第i-2状态组的任一DFA状态对应的状态子集是第i状态组的另一DFA状态对应的状态子集的公共子串,则生成第i状态组中另一DFA状态到第i-2状态组中任一DFA状态的派生迁移边;若第i-2状态组中任一DFA状态对应的状态子集不是第i状态组中另一DFA状态对应的状态子集的公共子串,则第i状态组中每个DFA状态的派生迁移边指向初始状态;需要说明,初始状态为第1状态组,不存在派生迁移边。
具体实现中,根据状态子集的状态子集大小将DFA的DFA状态分组后,通过搜索状态子集大小较小的任一状态组中每个DFA状态对应的状态子集是否为状态子集大小较大的另一状态组中每个DFA状态对应的状态子集的公共子串,生成任一状态组中每个DFA状态与另一状态组中每个DFA状态之间的派生迁移边,得到DFA的每个DFA状态的所有派生迁移边,构建DFA的派生图。
具体的,步骤S220,包括:按照状态子集大小的递增顺序,从至少一个状态组中确定出另一状态组和任一状态组;若任一状态组中任一DFA状态对应的状态子集是另一状态组中另一DFA状态对应的状态子集的公共子串,则生成派生迁移边,得到派生图。
本实施例中,进行公共子串搜索时,可以按照预设顺序依次将至少一个状态组作为另一状态组,将至少一个状态组中状态子集大小小于另一状态组的其他状态组作为任一状态组,进行派生迁移边构建。预设顺序可以为状态子集大小的递增顺序或递减顺序;较佳地,预设顺序为状态子集大小的递增顺序。
继续以给定的正则表达式规则集{ab.*cd, bc.*da}为例,针对表1所示的正则表达式规则集{ab.*cd,bc.*da}的DFA的状态迁移表,DFA状态0的状态子集为{0},其状态子集大小为1,划分为第1状态组;DFA状态1、DFA状态2、DFA状态4和DFA状态7的状态子集大小为2,划分为第2状态组;DFA状态3、DFA状态5、DFA状态8,DFA状态9,DFA状态10,DFA状态11、DFA状态15和DFA状态17的状态子集大小为3,划分为第3状态组;DFA状态6、DFA状态12、DFA状态13、DFA状态16和DFA状态18的状态子集大小为4,划分为第4状态组;DFA状态14和DFA状态19的状态子集大小为5,划分为第5状态组。
接下来,首先,按照状态子集大小的递增顺序,将第1状态组确定为另一状态组,第1状态组的初始状态0不存在派生迁移边,将初始状态0为派生图的根节点。其次,将第2状态组作为另一状态组,则第1状态组为任一状态组,因为DFA状态0的状态子集{0}是DFA状态1的状态子集{0,1}的公共子串{0},所以得到第2状态组中DFA状态1的派生迁移边为1→0;相应地,得到第2组的DFA状态2的派生迁移边为2→0,DFA状态4的派生迁移边为4→0,DFA状态7的派生迁移边为7→0。此后,依次将第3状态组、第4状态组和第5状态组确定为另一状态组,得到第3状态组的状态8的派生迁移边8→1和派生迁移边8→4,原因是DFA状态1的状态子集{0,1}和DFA状态4的状态子集{0,4}分别是DFA状态8的状态子集{0,1,6}的公共子串{0,1}和{0,4},DFA状态9的派生迁移边9→2和派生迁移边9→4,DFA状态10派生迁移边10→4,DFA状态3的派生迁移边3→2和派生迁移边3→7,DFA状态5的派生迁移边5→1和派生迁移边5→7,DFA状态11的派生迁移边11→7,DFA状态17的派生迁移边17→7,以及DFA状态15的派生迁移边15→7和派生迁移边15→4;并按照上述方法得到第4状态组的每个DFA状态和第5状态组的每个DFA状态的派生迁移边。最后,将每个状态组中每个DFA状态作为派生图的节点,根据每个DFA状态的派生迁移边,构建得到正则表达式规则集{ab.*cd, bc.*da}的压缩前的DFA的派生图,如图4所示,图4为正则表达式规则集{ab.*cd, bc.*da}的DFA的派生图;其中,正则表达式规则集{ab.*cd, bc.*da}的DFA的派生图以初始状态0为根节点,包括5层状态和每层状态中所有DFA状态的派生迁移边。
步骤S300:根据派生图,获得每个DFA状态到初始状态的派生路径;
步骤S400:根据DFA状态和对应的派生路径上所有派生状态之间的公共迁移边数,从派生状态中确定出DFA状态的默认状态;
本实施例中,每个DFA状态到初始状态的派生路径包括该DFA状态的所有派生迁移边,以及该DFA状态的所有派生状态到初始状态的默认路径;其中,默认路径包括该DFA状态的所有派生状态到对应的默认状态的所有默认迁移边,默认迁移边为每个派生状态指向对应的默认状态的迁移边,默认状态为该DFA状态的所有派生状态中与该DFA状态公共迁移边最多的派生状态,当该DFA状态的所有派生状态中与该DFA状态公共迁移边最多的派生状态有两个或两个以上时,则该DFA状态的默认状态为与该状态公共迁移边最多的派生状态中状态深度最小的一个派生状态。在派生图中,第0状态组的初始状态0不存在派生迁移边和默认迁移边;第i状态组的DFA状态包含至多O(log(n))条默认路径,原因是第i-1状态组的DFA状态数至多为O(log(n)),且第i-1状态组的每个DFA状态到初始状态0的默认路径仅有一条。
具体的,如图5所示,图5为图2中步骤S300的细化流程示意图,步骤S300,包括:
步骤S310:根据派生图中DFA状态的派生迁移边,确定DFA状态的状态深度;
本实施例中,如果任一DFA状态和另一DFA状态之间存在派生迁移边另一DFA状态→任一DFA状态,则另一DFA状态的状态深度为任一DFA状态的状态深度加1;其中,初始状态的状态深度为0;因此,可以通过搜索派生图中每个DFA状态的派生迁移边,确定每个DFA状态的状态深度。
继续以给定的正则表达式规则集{ab.*cd, bc.*da}为例,在正则表达式规则集{ab.*cd, bc.*da}的DFA的派生图中,第1状态组的DFA状态0为初始状态,不存在派生迁移边,则DFA状态0的状态深度为0;第2状态组的DFA状态1到状态0存在派生迁移边1→0,则DFA状态1的状态深度为DFA状态0的状态深度加1,即,DFA状态1的状态深度为1;依次类推,可以得到派生图中其他DFA状态的状态深度。
步骤S320:根据状态深度,对DFA状态进行划分,得到至少一个状态深度组;
本实施例中,将派生图中状态深度相同的DFA状态划分为一个状态深度组,得到至少一个状态深度组;即,若DFA状态的状态深度为j,则将该DFA状态划分为第j状态深度组,j为大于等于0的正整数;另外,还可以设置一个预设状态深度对状态深度组的数量进行限制,即,将状态深度大于预设状态深度的DFA状态均划分到预设状态深度对应的状态深度组中,限制状态深度组的数量,从而减少确定默认状态的时间。
继续以给定的正则表达式规则集{ab.*cd, bc.*da}为例,如图4所示,状态0的状态深度为0,划分为第0状态深度组;DFA状态1、DFA状态2、DFA状态4和DFA状态7的状态深度为1,划分为第1状态深度组;DFA状态3、DFA状态5、DFA状态8、DFA状态9、DFA状态10、DFA状态11、DFA状态15和DFA状态17的状态深度为2,划分为第2状态深度组;DFA状态6、DFA状态12、DFA状态13、DFA状态16和DFA状态18的状态深度为3,划分为第3状态深度组;DFA状态14和DFA状态19的状态深度为4,划分为第4状态深度组。
步骤S330:按照状态深度的递增顺序,依次从至少一个状态深度组中确定出目标状态深度组;
步骤S340:根据派生图,获得目标状态深度组中所有DFA状态到初始状态的派生路径,得到每个DFA状态的派生路径。
本实施例中,通过按照状态深度的递增顺序,依次将至少一个状态深度组每个状态深度组作为目标状态深度组,获得目标状态深度组中所有DFA状态到初始状态的派生路径,从而得到确定有限状态自动机中每个DFA状态到初始状态的派生路径。
继续以给定的正则表达式规则集{ab.*cd, bc.*da}为例,如下表2所示,表2为正则表达式规则集{ab.*cd, bc.*da}的DFA的每个DFA状态与其派生路径上所有DFA状态之间的公共迁移边数,表2包括DFA的DFA状态、每个DFA状态对应的状态子集、状态子集的状态子集大小、每个DFA状态的状态深度、公共迁移边数和公共迁移边数对应的DFA状态。
表2
续表2
具体实现中,参照图4,首先,将第0状态深度组作为目标状态深度组,由于第0状态深度组中状态0为初始状态,不存在派生路径,因此状态0不存在对应的默认状态。其次,将第1状态深度组作为目标状态深度组,从派生图中可以看出DFA状态1的派生迁移边为1→0,由于DFA状态0不存在对应的默认状态,因此DFA状态1的派生路径只有派生迁移边1→0,即,DFA状态1的派生路径的派生状态只有状态0;如表2所示,计算得到DFA状态1与DFA状态0的公共迁移数为255,表示为(255,0),可以看出DFA状态1的所有派生状态中与DFA状态1公共迁移边最多的派生状态为DFA状态0,则得到DFA状态1的默认状态为状态0;同理,可以得到DFA状态2、DFA状态4和DFA状态7的默认状态均为DFA状态0。再次,将第2状态深度组作为目标状态深度组,从派生图中可以看出DFA状态3的包括派生迁移边3→2和派生迁移边3→7;由于DFA状态2和DFA状态7的默认状态均为DFA状态0,则DFA状态2的默认迁移边为2→0,DFA状态7的默认迁移边为7→0,可以得到DFA状态3到初始状态的派生路径上的派生状态包括DFA状态2、DFA状态7和DFA状态0;如表2所示,计算得到DFA状态3与DFA状态0的公共迁移数为0,表示为(0,0),DFA状态3与DFA状态2的公共迁移数为0,表示为(0,2),DFA状态3与DFA状态7的公共迁移数为255,表示为(0,7);可以看出DFA状态3的所有派生状态中与DFA状态3公共迁移边最多的目标派生状态为DFA状态7,则得到DFA状态3的默认状态为DFA状态7;同理,可以得到第2状态深度组中DFA状态5、DFA状态8、DFA状态9、DFA状态10、DFA状态11和DFA状态17的默认状态;特别地,第2状态深度组中DFA状态15的派生状态包括DFA状态0、DFA状态4和DFA状态7,由于计算的DFA状态15与DFA状态0的公共迁移边数、DFA状态15与DFA状态4的公共迁移边数和DFA状态15与DFA状态7的公共迁移边数均为0,因此DFA状态15的默认状态为0,并修改DFA状态15的状态深度为1。由此,依次将第3状态深度组和第4状态深度组作为目标状态深度组,可以得到第3状态深度组和第4状态深度组中所有DFA状态的默认状态;最后,将所有DFA状态作为节点,根据每个DFA状态到默认状态的默认迁移边,可以得到正则表达式规则集{ab.*cd,bc.*da}的DFA的默认树,如图6所示,图6为正则表达式规则集{ab.*cd, bc.*da}的DFA的默认树。
步骤S500:保留状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机;默认迁移边为DFA状态指向默认状态的迁移边。
本实施例中,当确定有限状态自动机的任一DFA状态与另一DFA状态之间有公共迁移边时,则这两个DFA状态之间的公共迁移边为冗余迁移边;因此,在确定有限状态自动机压缩时,可以确定出与每个DFA状态公共迁移边最多的默认状态,消除每个DFA状态与对应的默认状态之间的公共迁移边,保留每个DFA状态的与默认状态的公共迁移边之外的部分本地迁移边和一条默认迁移边,实现确定有限状态自动机的压缩。另外,本实施例中在确定出每个DFA状态的默认状态后,也可以根据状态深度的递增顺序,依次对每个状态深度组中所有DFA状态进行冗余迁移边消除。
作为一个实施例,步骤S500之前,方法还包括;从DFA状态中确定出迁移边相同的至少两个等价状态;从至少两个等价状态中确定出聚类状态;利用聚类状态替代至少两个等价状态中除聚类状态之外的冗余状态,并消除冗余状态的关联迁移边,得到冗余消除后的确定有限状态自动机;步骤S500,包括:保留冗余消除后的确定有限状态自动机的DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机。
本实施例中,至少两个等价状态中状态深度最小的等价状态为聚类状态,至少两个等价状态中聚类状态之外的其他等价状态为冗余状态,冗余状态的关联迁移边包括冗余状态的扇出迁移边和扇入迁移边。
具体实现中,确定有限状态自动机压缩时,还需要消除确定有限状态自动机的冗余状态及冗余状态的关联迁移边,并在消除冗余状态及冗余状态的关联迁移边后,将确定有限状态自动机中其他DFA状态指向的冗余状态替换为该冗余状态对应的聚类状态,进行确定有限状态自动机的冗余状态消除,得到冗余消除后的确定有限状态自动机;然后,再根据冗余消除后的确定有限状态自动机中每个DFA状态对应的默认状态,消除每个DFA状态的冗余迁移边,保留每个DFA状态的部分本地迁移边和一条默认迁移边,完成确定有限状态自动机压缩,得到压缩后的确定有限状态自动机。
继续以给定的正则表达式规则集{ab.*cd, bc.*da}为例,结合表1和图6,可以看出,第0状态深度组中初始状态0没有迁移边相同的等价状态,且初始状态0没有对应的默认状态,因此,保留初始状态0的全部迁移边;第1状态深度组中DFA状态1没有迁移边相同的等价状态,DFA状态1的默认状态为DFA状态0,因此,消除DFA状态1与DFA状态0的公共迁移边,保留本地迁移边1:b→3(即DFA状态1读入字符b迁移到DFA状态3)和默认迁移边1:*→0(即DFA状态1读入任意字符*迁移到DFA状态0);相应的,根据状态深度的递增顺序,依次对每个状态深度组中所有DFA状态进行冗余状态消除和冗余迁移边消除,得到正则表达式规则集{ab.*cd, bc.*da}的压缩后的DFA的状态迁移表。
如表3所示,表3包括压缩后的DFA的DFA状态、每个DFA状态对应的状态子集、状态子集的状态子集大小、每个DFA状态对应的默认状态、压缩后的DFA可处理的输入字符和本地迁移边。需要说明的是,正则表达式规则集{ab.*cd, bc.*da}的DFA中,DFA状态4、DFA状态7和DFA状态15的默认状态均为初始状态0;但是由于DFA状态4、DFA状态7和DFA状态15与初始状态0之间无公共迁移边,因此,DFA状态4的迁移边、DFA状态7的迁移边和DFA状态15的迁移边中没有需要消除的冗余迁移边和需要保留的默认迁移边。
表3
续表3
由此,根据保留每个DFA状态的部分本地迁移边和一条默认迁移边,得到正则表达式规则集{ab.*cd, bc.*da}的压缩后的DFA,如图7所示,压缩后的DFA包括DFA状态、每个DFA状态的部分本地迁移边和每个DFA状态指向对应的默认状态的一条默认迁移边。
本实施例提供一种确定有限状态自动机压缩方法,按照状态子集大小的递增顺序,依次搜索每个状态组中每个DFA状态对应的状态子集到特定状态组中每个DFA状态对应的状态子集的公共子串,生成每个DFA状态的派生迁移边,构建确定有限状态自动机的派生图;只需要搜索每个DFA状态对应的状态子集与至多O(log(n))个DFA状态对应的状态子集的公共子串,使得构建派生图的时间复杂度为O(log(n)),其中,n为确定有限状态自动机的状态总数;然后,按照状态深度的递增顺序,根据派生图,从每个DFA状态的派生路径上所有派生状态中确定出每个DFA状态的默认状态;只需要根据每个DFA状态与其派生路径上至多O(log(n))个派生状态的公共迁移边数,从每个DFA状态的派生状态中确定出每个DFA状态的默认状态,得到每个DFA状态与默认状态之间需要保留的本地迁移边和默认迁移边,使得确定每个DFA状态需要保留的本地迁移边和默认迁移边的时间复杂度为O(log(n));由此,根据默认状态保留确定有限状态自动机的本地迁移边和默认迁移边,使得确定有限状态自动机压缩的时间复杂度为O(log(n)),相较于现有D2FA方法和A-DFA方法,降低了确定有限状态自动机压缩的时间复杂度,提高了确定有限状态自动机的压缩效率,高效支持大规模正则表达式规则集的DFA压缩。
另外,本实施例还通过迁移边相同的至少两个等价状态中聚类状态替代冗余状态,消除冗余状态和冗余状态的关联迁移边,进一步对确定有限状态自动机进行压缩,确保了确定有限状态自动机的压缩率。并且,本实施例的确定有限状态自动机压缩方法可扩展,结合上述第二类压缩方法构建新型有限自动机,可进一步压缩DFA存储空间。
进一步地,参照图8,图8为本发明确定有限状态自动机匹配方法第一实施例的流程示意图;基于同一发明构思,本实施例提供了一种确定有限状态自动机匹配方法,方法包括:
步骤S10:获取输入字符串;
本实施例中,执行主体为如图1所示的确定有限状态自动机压缩设备,该设备包括可以为包含一独立主机的物理服务器,或可以为主机集群承载的虚拟服务器。输入字符串根据实际匹配需求从网络数据包内容中获取。
步骤S20:从字符串中确定出当前字符;
步骤S30:根据确定有限状态自动机的当前状态的本地迁移边,对当前字符进行匹配处理,确定有限状态自动机通过如上述的确定有限状态自动机压缩方法压缩得到;
本实施例中,获取输入字符串后,可以依次从字符串中确定出一个字符作为当前字符,将当前字符与确定有限状态自动机的当前状态进行匹配处理。
步骤S40:若本地迁移边的字符与当前字符匹配成功,则根据本地迁移边,将确定有限状态自动机迁移到目标状态;
具体的,步骤S40之后,方法还包括:若本地迁移边的字符与当前字符匹配失败,则根据当前状态的默认迁移边,将确定有限状态自动机迁移到目标默认状态;将目标默认状态作为当前状态,返回执行根据确定有限状态自动机的当前状态的本地迁移边,对当前字符进行匹配处理的步骤。
本实施例中,当前字符与当前状态进行匹配后,确定有限状态自动机根据相应的迁移边迁移到下一个状态;此时,将下一个状态作为当前状态,当前字符的下一个字符作为当前字符,返回执行根据确定有限状态自动机的当前状态的本地迁移边,对当前字符进行匹配处理的步骤,来进行下一个状态与下一个字符的匹配处理。
步骤S50:判断目标状态是否为接受状态;
步骤S60:若目标状态为接受状态,则输出字符串的匹配结果;
步骤S70:将确定有限状态自动机迁移到初始状态,并返回执行从字符串中确定出当前字符的步骤。
本实施例中,当确定有限状态自动机由当前状态迁移到接受状态时,得到字符串的一个匹配结果;此时,确定有限状态自动机迁移到初始状态,按照上述步骤对字符串中剩下的字符进行匹配处理,直到字符串中所有字符均完成匹配。
本实施例提供一种确定有限状态自动机匹配方法,通过压缩后的确定有限状态自动机对输入字符串进行匹配,节省了内存空间及资源,提高了正则表达式的匹配性能。
上述确定有限状态自动机压缩方法的具体实施方式中更多实施细节可参见上述实施例一或二中确定有限状态自动机压缩方法的具体实施方式的描述,为了说明书的简洁,此处不再重复赘述。
此外,本发明实施例还提出一种计算机存储介质,存储介质上存储有确定有限状态自动机压缩程序,确定有限状态自动机压缩程序被处理器执行时实现如上文的确定有限状态自动机压缩方法或确定有限状态自动机匹配方法的步骤。因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。确定为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种确定有限状态自动机压缩方法,其特征在于,所述方法包括:
获取确定有限状态自动机,每个所述确定有限状态自动机的DFA状态对应一个非确定有限状态自动机的状态子集;
若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成所述另一DFA状态到所述任一DFA状态的派生迁移边,得到所述确定有限状态自动机的派生图;所述派生图的节点为所述DFA状态,根节点为所述确定有限状态自动机的初始状态;
根据所述派生图,获得每个所述DFA状态到所述初始状态的派生路径;
根据所述DFA状态和对应的所述派生路径上所有派生状态之间的公共迁移边数,从所述派生状态中确定出所述DFA状态的默认状态;
保留所述DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机;所述默认迁移边为所述DFA状态指向所述默认状态的迁移边。
2.如权利要求1所述的方法,其特征在于,所述若任一DFA状态对应的状态子集是另一DFA状态对应的状态子集的最长公共子串,则生成所述另一DFA状态到所述任一DFA状态的派生迁移边,得到所述确定有限状态自动机的派生图,包括:
根据所述状态子集的状态子集大小,对所述DFA状态进行划分,得到至少一个状态组;
若任一状态组中所述任一DFA状态对应的状态子集是另一状态组中所述另一DFA状态对应的状态子集的公共子串,则生成所述派生迁移边,得到所述派生图;所述任一状态组的状态子集大小小于所述另一状态组的状态子集大小。
3.如权利要求2所述的方法,其特征在于,所述若任一状态组中所述任一DFA状态对应的状态子集是另一状态组中所述另一DFA状态对应的状态子集的公共子串,则生成所述派生迁移边,得到所述派生图,包括:
按照所述状态子集大小的递增顺序,从至少一个所述状态组中确定出所述另一状态组和所述任一状态组;
若所述任一状态组中所述任一DFA状态对应的状态子集是所述另一状态组中所述另一DFA状态对应的状态子集的公共子串,则生成所述派生迁移边,得到所述派生图。
4.如权利要求1所述的方法,其特征在于,所述根据所述派生图,获得每个所述DFA状态到所述初始状态的派生路径,包括:
根据所述派生图中所述DFA状态的所述派生迁移边,确定所述DFA状态的状态深度;
根据所述状态深度,对所述DFA状态进行划分,得到至少一个状态深度组;
按照所述状态深度的递增顺序,依次从至少一个所述状态深度组中确定出目标状态深度组;
根据所述派生图,获得所述目标状态深度组中所有DFA状态到所述初始状态的派生路径,得到每个所述DFA状态的所述派生路径。
5.如权利要求1所述的方法,其特征在于,所述保留所述DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机之前,所述方法还包括;
从所述DFA状态中确定出迁移边相同的至少两个等价状态;
从至少两个所述等价状态中确定出聚类状态;
利用所述聚类状态替代至少两个所述等价状态中除所述聚类状态之外的冗余状态,并消除所述冗余状态的关联迁移边,得到冗余消除后的确定有限状态自动机;
所述保留所述DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机,包括:
保留所述冗余消除后的确定有限状态自动机的DFA状态的本地迁移边和默认迁移边,得到压缩后的确定有限状态自动机。
6.如权利要求1所述的方法,其特征在于,所述获取确定有限状态自动机,包括:
获取正则表达式规则集;
根据所述正则表达式规则集,构建非确定有限状态自动机;
对所述非确定有限状态自动机进行转换,得到所述确定有限状态自动机。
7.一种确定有限状态自动机匹配方法,其特征在于,所述方法包括:
获取输入字符串;
从所述字符串中确定出当前字符;
根据确定有限状态自动机的当前状态的本地迁移边,对所述当前字符进行匹配处理,所述确定有限状态自动机通过如权利要求1至6任一项所述的确定有限状态自动机压缩方法压缩得到;
若所述本地迁移边的字符与当前字符匹配成功,则根据所述本地迁移边,将所述确定有限状态自动机迁移到目标状态;
判断所述目标状态是否为接受状态;
若所述目标状态为所述接受状态,则输出所述字符串的匹配结果;
将所述确定有限状态自动机迁移到初始状态,并返回执行所述从所述字符串中确定出当前字符的步骤。
8.如权利要求7所述的匹配方法,其特征在于,所述根据确定有限状态自动机的当前状态的本地迁移边,对输入字符串的每个字符进行匹配处理的步骤之后,所述方法还包括:
若所述本地迁移边的字符与所述当前字符匹配失败,则根据所述当前状态的默认迁移边,将所述确定有限状态自动机迁移到目标默认状态;
将所述目标默认状态作为所述当前状态,返回执行所述根据确定有限状态自动机的当前状态的本地迁移边,对所述当前字符进行匹配处理的步骤。
9.一种确定有限状态自动机压缩设备,其特征在于,所述设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的确定有限状态自动机压缩程序,通过确定有限状态自动机压缩程序配置为实现如权利要求1至6所述的确定有限状态自动机压缩方法或7至8中任一项所述的确定有限状态自动机匹配方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有确定有限状态自动机压缩程序,确定有限状态自动机压缩程序被处理器执行时实现如权利要求1至6所述的确定有限状态自动机压缩方法或7至8中任一项所述的确定有限状态自动机匹配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310103355.2A CN115801020B (zh) | 2023-02-13 | 2023-02-13 | 确定有限状态自动机压缩方法、匹配方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310103355.2A CN115801020B (zh) | 2023-02-13 | 2023-02-13 | 确定有限状态自动机压缩方法、匹配方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115801020A CN115801020A (zh) | 2023-03-14 |
CN115801020B true CN115801020B (zh) | 2023-04-11 |
Family
ID=85430946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310103355.2A Active CN115801020B (zh) | 2023-02-13 | 2023-02-13 | 确定有限状态自动机压缩方法、匹配方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115801020B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835892A (en) * | 1995-06-12 | 1998-11-10 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for expanding similar character strings |
CA2307529A1 (en) * | 2000-03-29 | 2001-09-29 | Pmc-Sierra, Inc. | Method and apparatus for grammatical packet classifier |
JP2007011998A (ja) * | 2005-07-04 | 2007-01-18 | Nippon Telegr & Teleph Corp <Ntt> | XPath式処理方法、XPath式処理装置、XPath式処理プログラムおよびそのプログラムを記憶した記憶媒体、ならびに、オートマトン |
CN103166802A (zh) * | 2011-12-12 | 2013-06-19 | 中国移动通信集团湖南有限公司 | 一种确定有限自动机的构建方法及装置 |
CN103957012A (zh) * | 2014-04-18 | 2014-07-30 | 华为技术有限公司 | 一种dfa矩阵的压缩方法及装置 |
CN109923521A (zh) * | 2016-10-28 | 2019-06-21 | 区块链控股有限公司 | 用于经由区块链实施确定性有限自动机(DFAs)的系统和方法 |
CN111262589A (zh) * | 2020-01-13 | 2020-06-09 | 奇安信科技集团股份有限公司 | 一种dfa空间压缩方法及装置 |
CN115149962A (zh) * | 2022-08-01 | 2022-10-04 | 鹏城实验室 | 确定性有限自动机压缩方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101001115B1 (ko) * | 2005-06-27 | 2010-12-14 | 퀄컴 인코포레이티드 | 각종 증폭 관련 동작을 수행하기 위해 증폭기를 구현 및이용하는 방법 및 장치 |
US9280600B2 (en) * | 2012-03-20 | 2016-03-08 | Yissum Research Development Company Of The Hebrew University Of Jerusalem Ltd. | Method and system for decompression-free inspection of shared dictionary compressed traffic over HTTP |
US8862585B2 (en) * | 2012-10-10 | 2014-10-14 | Polytechnic Institute Of New York University | Encoding non-derministic finite automation states efficiently in a manner that permits simple and fast union operations |
-
2023
- 2023-02-13 CN CN202310103355.2A patent/CN115801020B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835892A (en) * | 1995-06-12 | 1998-11-10 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for expanding similar character strings |
CA2307529A1 (en) * | 2000-03-29 | 2001-09-29 | Pmc-Sierra, Inc. | Method and apparatus for grammatical packet classifier |
JP2007011998A (ja) * | 2005-07-04 | 2007-01-18 | Nippon Telegr & Teleph Corp <Ntt> | XPath式処理方法、XPath式処理装置、XPath式処理プログラムおよびそのプログラムを記憶した記憶媒体、ならびに、オートマトン |
CN103166802A (zh) * | 2011-12-12 | 2013-06-19 | 中国移动通信集团湖南有限公司 | 一种确定有限自动机的构建方法及装置 |
CN103957012A (zh) * | 2014-04-18 | 2014-07-30 | 华为技术有限公司 | 一种dfa矩阵的压缩方法及装置 |
CN109923521A (zh) * | 2016-10-28 | 2019-06-21 | 区块链控股有限公司 | 用于经由区块链实施确定性有限自动机(DFAs)的系统和方法 |
CN111262589A (zh) * | 2020-01-13 | 2020-06-09 | 奇安信科技集团股份有限公司 | 一种dfa空间压缩方法及装置 |
CN115149962A (zh) * | 2022-08-01 | 2022-10-04 | 鹏城实验室 | 确定性有限自动机压缩方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
周金治等."基于参数设定的正则表达式匹配算法".《江苏大学学报》.2016,第37卷(第2期),正文第194-200页. * |
Also Published As
Publication number | Publication date |
---|---|
CN115801020A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3672242B2 (ja) | パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体 | |
US7756859B2 (en) | Multi-segment string search | |
JP5950285B2 (ja) | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム | |
Koppula et al. | Learning url patterns for webpage de-duplication | |
WO2021258848A1 (zh) | 数据字典生成方法、数据查询方法、装置、设备及介质 | |
JP6847079B2 (ja) | 最適なソートキーの圧縮およびインデックスの再構築 | |
US6735600B1 (en) | Editing protocol for flexible search engines | |
US20220005546A1 (en) | Non-redundant gene set clustering method and system, and electronic device | |
CN102867049A (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN112511629B (zh) | 一种mpt结构的账户树的数据压缩方法及系统 | |
CN115801020B (zh) | 确定有限状态自动机压缩方法、匹配方法、设备及介质 | |
CN106844553A (zh) | 基于样本数据的数据探测和扩充方法及装置 | |
WO2013097065A1 (zh) | 一种索引数据处理方法及设备 | |
US20220171815A1 (en) | System and method for generating filters for k-mismatch search | |
US8661061B2 (en) | Data structure, data structure generation method, information processing apparatus, information processing system, and computer-readable storage medium having stored therein information processing program | |
CN114238576A (zh) | 数据匹配方法、装置、计算机设备和存储介质 | |
CN114625933A (zh) | 内存中字符串查找方法、装置、设备、存储介质及产品 | |
CN115185998A (zh) | 目标字段查找方法及装置、服务器、计算机可读存储介质 | |
CN105279157B (zh) | 一种正则查询的方法和装置 | |
CN113836917A (zh) | 文本分词处理方法及其装置、设备与介质 | |
JP2020077236A (ja) | 探索プログラム、探索方法及び探索装置 | |
JP7422367B2 (ja) | 近似文字列照合方法及び該方法を実現するためのコンピュータプログラム | |
US20240054288A1 (en) | Inference Methods For Word Or Wordpiece Tokenization | |
JP5771971B2 (ja) | 情報処理装置、情報処理方法、及びコンピュータプログラム | |
CN107798060B (zh) | 一种实时流式数据处理应用软件特征识别方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |