用于自动机空间压缩的线性同余字符集变换方法及系统技术方案

技术编号:22467614 阅读:78 留言:0更新日期:2019-11-06 11:26
本发明专利技术提供一种一种用于自动机空间压缩的线性同余字符集变换方法,步骤包括:将模式串集构建成自动机,并生成状态转移矩阵;读取状态转移矩阵的各个状态行,计算最佳变换参数和最大有效后继状态;根据状态转移矩阵和最佳变换参数,记录数据结构,将状态行替换为变换后的有效状态行;读取目标文本的字符,根据字符当前状态,利用线性同余函数进行字符变换,得到变换后的字符,符合条件下得到后继状态,实现变换。本发明专利技术还提供一种用于自动机空间压缩的线性同余字符集变换系统,包括规则编译器、变换参数生成器、状态行变换器、比较器、压缩自动机存储器、状态寄存器、字符集变换器及文本扫描器。

Transformation method and system of linear congruence character set for space compression of automata

【技术实现步骤摘要】
用于自动机空间压缩的线性同余字符集变换方法及系统
本专利技术属于信息
,具体涉及一种用于自动机空间压缩的线性同余字符集变换方法及系统。
技术介绍
字符串匹配算法是一类搜索算法,广泛应用于生物信息学、信息检索、数据压缩、网络入侵检测等领域。一个字符串是一个定义在有限字母表Σ上的有限字符序列,字符串匹配算法在一个大的字符串T上搜索某个字符串集合S={Pi}中所有字符串Pi的所有出现位置。T被称为文本,Pi被称为模式串,T和Pi都定义在同一个字母表Σ上。在字符串匹配领域,自动机是一种重要的数据结构。例如,1975年由Aho及Corasick提出的AC自动机算法(参考EfficientStringMatching:AnAidtoBibliographicSearch),1977年由Knuth、Morris及Pratt提出的KMP算法(参考FastPatternMatchingInStrings),1999年由Allauzen、Crochemore及Raffinot提出的BOM算法(参考FactorOracle:ANewStructureforPatternMatching)等许多算法都通过自动机实现快速的字符串匹配。由于在多数应用中模式串集的规模通常较大,生成的自动机占用空间较大,也影响其匹配速度,因此降低自动机占用的资源就成为一个值得研究的问题。自动机又称为有限状态机,是一种用于表示字符串集合并提供字符串匹配功能的数据结构。抽象来讲,串匹配算法中的自动机可以表示为一个大小为N×256的矩阵AN×256,其中N是自动机的状态数,256是字符集大小(1个字节)。对于当前状态s和输入字符c,A[s,c]表示抵达的下一个状态,通常用一个非负整数或指针来表示。A[s,c]=-1表示当前状态s对于输入字符c没有后继状态。AN×256中每个状态行所占用的空间为sizeof(int)×256,共占用空间sizeof(int)×256×N。由于在许多应用中模式串集S规模很大,对应的自动机状态数较多,占用的空间很可观,影响了基于自动机的串匹配算法的实用性,因此,有必要对自动机的高效压缩方法进行研究。2004年Norton在OptimizingPatternMatchingforIntrusionDetection一文中提出了一种称为Banded-Row的自动机压缩方法。由于在串匹配算法中,自动机的大部分状态通常只有很少的几个后继状态,对于每一个状态行A[s],直接用sizeof(int)×256来表示是非常浪费存储空间的。为了压缩AC自动机的存储空间,Banded-Row用两个整数lbs和ubs分别记录状态行A[s]中第一个和最后一个后继状态的转移字符,即:去掉A[s]头尾的空转移,每一行仅使用sizeof(int)×(ubs-lbs+3)的存储空间来表示,既保留了数组随机存取的特性,同时相比矩阵表示法也节省了存储空间。2018年刘燕兵等提出了基于字符集变换的自动机空间压缩方法,由于在串匹配算法中,自动机状态行通常非常稀疏,lbs和ubs之间仍然有大量无效状态,基于字符集变换的自动机空间压缩方法通过异或函数对输入字符进行变换,并定义:在合适的变换参数X[s]的作用下,减少了和之间的无效状态数,进一步节省了存储空间。现有的技术方案主要是Banded-Row法和基于字符集变换的自动机空间压缩方法,这两种方案在空间和时间上都一些不足。空间上,Banded-Row方法和基于字符集变换的自动机空间压缩方法分别需要占用和的空间,当ubs-lbs或较大时,即使每行的后继状态数较少,占用的空间也仍然可观。例如,若lbs=0,ubs=255,即便A[s]只有两个后继状态,Banded-Row方法也无法压缩空间,又例如,当且A[s,125]≠-1时,尽管A[s]只有三个后继状态,基于字符集变换的自动机空间压缩方法仍需要消耗sizeof(int)×130的空间。时间上,由于这两种方法都需要在扫描时检查字符是否超过[lbs,ubs]或范围,影响了匹配速度。
技术实现思路
本专利技术的目的是提供一种用于自动机空间压缩的线性同余字符集变换方法及系统,属于针对字符串匹配的自动机压缩方法,该方法保证状态转移的时间复杂度为O(1),同时可大幅度减少数据结构的存储空间。为实现上述目的,本专利技术采用如下技术方案:一种用于自动机空间压缩的线性同余字符集变换方法,包括以下步骤:将模式串集构建成自动机,并生成状态转移矩阵;读取状态转移矩阵的各个状态行,计算得到最佳变换参数和最大有效后继状态;根据状态转移矩阵和最佳变换参数,得到数据结构,根据该数据结构将状态行替换为变换后的有效状态行;读取目标文本的字符,根据字符当前状态,利用线性同余函数进行字符变换,得到变换后的字符;如果变化后的字符不大于最大有效后继状态,则得到字符变换后的最终后继状态,实现变换。进一步地,根据状态转移矩阵的各个状态行和候选变换参数,计算最小有效后继状态,当该最小有效后继状态为零时,计算得到最大有效后继状态,记第一组使得最大有效后继状态最小的变换参数为最佳变换参数。进一步地,有效后继状态的计算式为其中A[·]为状态转移矩阵的状态行,c为目标文本的字符,s为字符当前状态,i,j为候选变换参数。进一步地,候选变换参数i取值为从0到127,j取值为从0到255。进一步地,变换后的有效状态行为<A[s,M[s]],A[s,(N[s]+M[s])mod256],A[s,(N[s]×2+M[s])mod256],…,A[s,(N[s]×lc[s]+M[s])mod256]>,其中N[s]、M[s]、lc[s]为数据结构,A[·]为状态转移矩阵的状态行,s为字符当前状态。进一步地,N[s]=2k+1,M[s]=m,lc[s]等于最大有效后继状态,其中k,m为最佳变换参数。进一步地,线性同余函数为fs(c)=N[s]×c+M[s],其中N[s]、M[s]为数据结构,c为目标文本的字符,s为字符当前状态。进一步地,最终后继状态为A[s,c’],其中A[·]为状态转移矩阵的状态行,s为字符当前状态,c’变换后的字符。一种用于自动机空间压缩的线性同余字符集变换系统,包括:规则编译器,用于读取、解析模式串集,建立自动机状态转移图,并生成状态转移矩阵;变换参数生成器,用于生成最佳变换参数;状态行变换器,用于逐行读取状态转移矩阵,接受最佳变换参数,并对状态行进行变换;比较器,用于根据变换结果,判断是否应该更新压缩自动机存储器,生成比较结果;压缩自动机存储器,用于根据比较结果读取上述变换结果,更新内部存储;状态寄存器,用于存储当前状态;字符集变换器,用于逐字符读取文本,根据状态寄存器存储的当前状态及压缩自动机中存储的对应的变换参数,对字符进行变换;文本扫描器,根据状态寄存器存储的当前状态、字符集变换器发送来的字符及压缩自动机中存储的状态行,计算下一个状态并更新状态寄存器。一种存储计算机程序的计算机可读存储介质,该计算机程序包括指令,该指令当由服务器的处理器执行时使得该服务器执行上述方法中的各个步骤。本专利技术方法保证状态转移的时间复杂度为O(1),匹配数据的速度较快,同时可大幅度减少数据结构的存储空间。附图说明图1是字本文档来自技高网
...

【技术保护点】
1.一种用于自动机空间压缩的线性同余字符集变换方法,其特征在于,包括以下步骤:将模式串集构建成自动机,并生成状态转移矩阵;读取状态转移矩阵的各个状态行,计算得到最佳变换参数和最大有效后继状态;根据状态转移矩阵和最佳变换参数,得到数据结构,根据该数据结构将状态行替换为变换后的有效状态行;读取目标文本的字符,根据字符当前状态,利用线性同余函数进行字符变换,得到变换后的字符;如果变化后的字符不大于最大有效后继状态,则得到字符变换后的最终后继状态,实现变换。

【技术特征摘要】
1.一种用于自动机空间压缩的线性同余字符集变换方法,其特征在于,包括以下步骤:将模式串集构建成自动机,并生成状态转移矩阵;读取状态转移矩阵的各个状态行,计算得到最佳变换参数和最大有效后继状态;根据状态转移矩阵和最佳变换参数,得到数据结构,根据该数据结构将状态行替换为变换后的有效状态行;读取目标文本的字符,根据字符当前状态,利用线性同余函数进行字符变换,得到变换后的字符;如果变化后的字符不大于最大有效后继状态,则得到字符变换后的最终后继状态,实现变换。2.如权利要求1所述的方法,其特征在于,根据状态转移矩阵的各个状态行和候选变换参数,计算最小有效后继状态,当该最小有效后继状态为零时,计算得到最大有效后继状态,记第一组使得最大有效后继状态最小的变换参数为最佳变换参数。3.如权利要求2所述的方法,其特征在于,有效后继状态的计in算fs,i式,j为其中A[·]为状态转移矩阵的状态行,c为目标文本的字符,s为字符当前状态,i,j为候选变换参数。4.如权利要求3所述的方法,其特征在于,候选变换参数i取值为从0到127,j取值为从0到255。5.如权利要求1所述的方法,其特征在于,变换后的有效状态行为<A[s,M[s]],A[s,(N[s]+M[s])mod256],A[s,(N[s]×2+M[s])mod256],…,A[s,(N[s]×lc[s]+M[s])mod256]>,其中N[s]、M[s]、lc[s]为数据结构,A[·]为状态转移矩阵的状态行,s为字符当前...

【专利技术属性】
技术研发人员:孙恭鑫卢毓海刘燕兵张春燕谭建龙郭莉
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1