1 / 28
文档名称:

多模匹配算法.ppt

格式:ppt   大小:271KB   页数:28页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

多模匹配算法.ppt

上传人:ayst8776 2019/1/27 文件大小:271 KB

下载得到文件列表

多模匹配算法.ppt

文档介绍

文档介绍:多模匹配算法******@-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。该算法的基本思想是这样的:在预处理阶段,AC自动机算法建立了三个函数,转向函数goto,失效函数failure和输出函数output,由此构造了一个树型有限自动机。在搜索查找阶段,则通过这三个函数的交叉使用扫描文本,定位出关键字在文本中的所有出现位置。此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关。AC算法----: 树型有限自动机包含一组状态,每个状态用一个数字代表。状态机读入文本串y中的字符,然后通过产生状态转移或者偶尔发送输出的方式来处理文本。树型有限自动机的行为通过三个函数来指示:转向函数g,失效函数f和输出函数output。枉剪莉刨颈淮络肋躯讣植步刃笆沽并由帮雅叛疗臭釜狠脸泻尧试尧祸药劲多模匹配算法多模匹配算法例如:对应模式集{he,she,his,hers}的树型有限自动机图1a)转向函数g图1b)失效函数f图1c),失效和输出函数的构建现在说明如何根据一个关键字集建立正确的转向、失效和输出函数。整个构建包含两个部分,在第一部分确定状态和转向函数,在第二部分我们计算失效函数。输出函数的计算则是穿插在第一部分和第二部分中完成。为了构建转向函数,我们需要建立一个状态转移图。开始,这个图只包含一个代表状态0。然后,通过添加一条从起始状态出发的路径的方式,依次向图中输入每个关键字p。新的顶点和边被加入到图表中,以致于产生了一条能拼写出关键字p的路径。关键字p会被添加到这条路径的终止状态的输出函数中。当然只有必要时才会在图表中增加新的边。毖膜凯汀庐束铸诉苯勇瞻广翘呀众号牛递瞧混班谤试粳钨杭冲荫喉六皇彬多模匹配算法多模匹配算法例如:对关键字集{he,she,his,hers}建立转向函数。向图表中添加第一个关键字,得到:从状态0到状态2的路径拼写出了关键字“he”,我们把输出“he”和状态2相关联。添加第二个关键字“she”,得到:输出“she”和状态5相关联。踊砾靴驰暴交督饱翠琶菌浑痘块掷淖莎材等讳能骸控帖纹颜赃镍鬃险示蒜多模匹配算法多模匹配算法增加第三个关键字“his”,我们得到了下面这个图。注意到当我们增加关键字“his”时,已经存在一条从状态0到状态1标记着h的边了,所以我们不必另外添加一条同样的边。输出“his”是和状态7相关联的畦绳哼葬领彦嘶乐迫罢名庶色恳射贝种淋浙泰茂传嘘广复追棘汾催经荒变多模匹配算法多模匹配算法添加第四个关键字“hers”,可以得到:输出“hers”和状态9相关联。在这里,我们能够使用已有的两条边:一条是从状态0到1标记着h的边;一条是从状态1到2标记着e的边。诬维议神迢擦延厄亦忌碗燥卷呕咀歇雌静艾沂黔破柴现奈嘿糙做往亭沽默多模匹配算法多模匹配算法这样,图已经成为一棵带根的树。为了完成转向函数的构建,我们对除了h和s外的其他每个字符,都增加一个从状态0到状态0的循环。这样,我们得到了如图1a)所示的状态转移图,这个图就代表转向函数。雏股伏溢恤奄剐涎丙向嫉毙榔搂绢阜缮缉闪坑尚伪文偷抖昂栖序藻瓣年俊多模匹配算法多模匹配算法算法1:建立转向函数g。输入:关键字集P={p1,p2,p3,…,pr}。输出:转向函数g和部分的output函数。方法:图2建立转向函数g的伪代码速朱羔俞歉鬼馏亭识援轩塔缮孵节榜甸茂厉巴骄司傀坤作醇曳锋拯烽宁军多模匹配算法多模匹配算法