基于字符集变换的自动机空间压缩方法及系统技术方案

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

Space compression method and system of automata based on character set transformation

【技术实现步骤摘要】
基于字符集变换的自动机空间压缩方法及系统
本专利技术属于信息
,具体涉及一种基于字符集变换的自动机空间压缩方法及系统。
技术介绍
字符串匹配算法是一类搜索算法,广泛应用于生物信息学、信息检索、数据压缩、网络入侵检测等领域。一个字符串是一个定义在有限字母表Σ上的有限字符序列,字符串匹配算法在一个大的字符串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用两个整数lb和ub分别记录状态行A[s]中第一个和最后一个后继状态的转移字符,即:去掉A[s]头尾的空转移,每一行仅使用sizeof(int)×(ubs-lbs+3)的存储空间来表示,既保留了数组随机存取的特性,同时相比矩阵表示法也节省了存储空间。现有的技术方案主要是矩阵表示法和Banded-Row法,这两种方案在空间上都一些不足。矩阵表示法需要占用空间sizeof(int)×256×N,Banded-Row方法也需要占用的空间,当ubs-lbs较大时,即使每行的后继状态数较少,占用的空间也仍然可观。例如,若lbs=0,ubs=255,即便A[s]只有两个后继状态,也无法压缩空间。
技术实现思路
本专利技术的目的是提供一种基于字符集变换的自动机空间压缩方法及系统,属于针对字符串匹配的自动机压缩方法,该方法保证状态转移的时间复杂度为O(1),同时可大幅度减少数据结构的存储空间。为实现上述目的,本专利技术采用如下技术方案:一种基于字符集变换的自动机空间压缩方法,包括以下步骤:将模式串集构建成自动机,并生成状态转移矩阵;读取状态转移矩阵的各个状态行,计算得到最佳变换参数、最小和最大有效后继状态;根据状态转移矩阵和最佳变换参数,得到数据结构,根据该数据结构将状态行替换为变换后的有效状态行;读取目标文本的字符,根据字符当前状态,利用双射函数进行字符变换,得到变换后的字符;如果目标文本的字符不小于最小有效后继状态,且不大于最大有效后继状态,则得到字符变换后的最终后继状态,实现压缩。进一步地,根据状态转移矩阵的各个状态行和候选变换参数,计算最小和最大有效后继状态,最小后继状态的计算式为最大有效后继状态的计算式为其中A[·]为状态转移矩阵的状态行,c为目标文本的字符,s为字符当前状态,i为候选变换参数。进一步地,状态行有效长度Ls,i=sups,i-infs,i+1,记第一个使得Ls,i最小的候选变换参数i为最佳变换参数。进一步地,候选变换参数i取值范围为从0到255。进一步地,变换后的有效状态行为其中A[·]为状态转移矩阵的状态行,s为字符当前状态,X[s]、fc[s]、lc[s]为数据结构。进一步地,X[s]等于最佳变换参数,fc[s]等于最小有效后继状态,lc[s]等于最大有效后继状态。进一步地,双射函数为其中X[s]为数据结构,c为目标文本的字符,s为字符当前状态。进一步地,最终后继状态为A[s,c’-fc[s]];其中,A[·]为状态转移矩阵的状态行,s为字符当前状态,c’为变换后的字符;fc[s]为数据结构,包括等于最小有效后继状态。一种基于字符集变换的自动机空间压缩系统,包括:规则编译器,用于读取、解析模式串集,建立自动机状态转移图,并生成状态转移矩阵;变换参数生成器,用于生成最佳变换参数;状态行变换器,用于逐行读取状态转移矩阵,接受最佳变换参数,并对状态行进行变换;比较器,用于根据变换结果,判断是否应该更新压缩自动机存储器,生成比较结果;压缩自动机存储器,用于根据比较结果读取上述变换结果,更新内部存储;状态寄存器,用于存储当前状态;字符集变换器,用于逐字符读取文本,根据状态寄存器存储的当前状态及压缩自动机中存储的对应的变换参数,对字符进行变换;文本扫描器,根据状态寄存器存储的当前状态、字符集变换器发送来的字符及压缩自动机中存储的状态行,计算下一个状态并更新状态寄存器。一种存储计算机程序的计算机可读存储介质,该计算机程序包括指令,该指令当由服务器的处理器执行时使得该服务器执行上述方法中的各个步骤。本专利技术方法保证状态转移的时间复杂度为O(1),同时可大幅度减少数据结构的存储空间。附图说明图1是字符集变换示意图。图2是一种基于字符集变换的自动机空间压缩系统结构图。图3是自动机状态转移图。图4A-4C是实验1-3的结果统计图。具体实施方式为使本专利技术的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。本专利技术提供的同于基于字符集变换的自动机空间压缩方法(以下简称字符集变换方法)是以Banded-Row方法为原型,保证状态转移的时间复杂度为O(1),同时可大幅度减少数据结构的存储空间。如图1所示,本专利技术的主要思想在于通过一个双射函数fs(c)(称为字符集变换函数)对字符集进行变换,使得状态行的有效状态尽量连续。图中,A[s]是状态转移矩阵中的一个状态行,p是各个后继状态在状态行中的偏移值,c是对应的输入字符。图左侧表示Banded-Row方法,在该方法中,输入字符c与偏移值p是相同的,尽管A[s]中只有3个有效后继状态,为了存储第一个到最后一个有效后继状态,需要本文档来自技高网
...

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

【技术特征摘要】
1.一种基于字符集变换的自动机空间压缩方法,其特征在于,包括以下步骤:将模式串集构建成自动机,并生成状态转移矩阵;读取状态转移矩阵的各个状态行,计算得到最佳变换参数、最小和最大有效后继状态;根据状态转移矩阵和最佳变换参数,得到数据结构,根据该数据结构将状态行替换为变换后的有效状态行;读取目标文本的字符,根据字符当前状态,利用双射函数进行字符变换,得到变换后的字符;如果目标文本的字符不小于最小有效后继状态,且不大于最大有效后继状态,则得到字符变换后的最终后继状态,实现压缩。2.如权利要求1所述的方法,其特征在于,根据状态转移矩阵的各个状态行和候选变换参数,计算最小和最大有效后继状态,最小后继状态的计算式为最大有效后继状态的计算式为其中A[·]为状态转移矩阵的状态行,c为目标文本的字符,s为字符当前状态,i为候选变换参数。3.如权利要求2所述的方法,其特征在于,状态行有效长度Ls,i=sups,i-infs,i+1,记第一个使得Ls,i最小的候选变换参数i为最佳变换参数。4.如权利要求2所述的方法,其特征在于,候选变换参数i取值范围为从0到255。5.如权利要求1所述的方法,其特征在于,变换后的有效状态行为其中A[·]为状态转移矩阵的状态行,s为字符当前状态,X[s]、fc[s]、lc[s]为数据结构。6.如权利要求5所述的方法,其特征在于,X[s]等于最佳变换参数,fc[s]等于最小...

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

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

1