1 概述 在某海量数据分析系统中,使用AC多模改进算法做多模匹配,作为数据分类和分发的第一道关口。部署时间较长后,内存占用较大,预处理时间随模式串数量的增加呈指数级增长,到达10W条模式串的时候已经无法正常运行。为满足需求,研究算法性能,在AC改进算法无法打成需求的情况下,研究WM匹配算法并进行改....
分类:
编程语言 时间:
2015-02-24 17:25:07
阅读次数:
427
Manacher(马拉车)是一种求最长回文串的线性算法,复杂度O(n)。网上对其介绍的资料已经挺多了的,请善用搜索引擎。而扩展KMP说白了就是是求模式串和主串的每一个后缀的最长公共前缀【KMP更像是一个自动机】题目:POJ 1159:Palindrome求原字符串最少增加几个字符后可变成回文串,相当...
分类:
其他好文 时间:
2015-02-21 23:26:15
阅读次数:
242
题意:找出一个最大的公共子串,这个子串是一个字符串的尾串(tail substring ),同时是另外那个字符串的头串(head substring),是满足A+B的长度strlen(A+B)达到最小值,这里面要注意的一个问题是,谁做模式串P是不一定的,所以要分别比较不同字符串作为模式的KMP值。
思路:让两个串分别做模式串。看谁KMP的结束的时候匹配的字符字符的个数最多就好。
当然也可以把两...
分类:
其他好文 时间:
2015-02-18 09:37:27
阅读次数:
144
trie图用于解决多模式匹配问题。设有N个长度不超过L的模式串,匹配串长为M,那么用trie图解决多模式匹配问题的复杂度为O(N*L+M).思路:trie图的基础是trie树。1.用trie树实现多模式匹配 首先建立N个模式串的trie树。设匹配串为s,我们枚举匹配起始位置i,在trie树中依次去....
分类:
其他好文 时间:
2015-02-17 14:04:55
阅读次数:
124
捕获是这样一种机制:可以使用模式串的一部分匹配目标串的一部分。将你想捕获的模式用圆括号括起来,就指定了一个捕获。在string.find使用捕获的时候,函数会返回捕获的值作为额外的结果。这常被用来将一个目标串拆分成多个:pair = "name = Anna"_, _, key, value = s...
分类:
其他好文 时间:
2015-02-11 18:17:49
阅读次数:
209
一. KMP算法KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,简称KMP算法。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹...
分类:
编程语言 时间:
2015-02-10 12:45:59
阅读次数:
351
KMP算法是字符串模式匹配的一种经典算法。设原串为s[],模式串为p[]。1. 朴素的算法枚举匹配起始位置 i(s中),从起始位置 i 开始,与模式串中的字符逐次一一对比,直到匹配成功或者匹配失败, 然后++i,如此循环直到遍历完原串s。2. KMP算法2.1 出发点 对于某次匹配,如果第一个字符....
分类:
编程语言 时间:
2015-02-08 00:15:26
阅读次数:
312
Rabin-Karp算法对于随机字符串匹配问题有良好的实用性。它建立在指纹思想上。
主串长度为n 模式串长度为m
假设
※①我们可以在O(m)时间计算一个P的指纹f(P)
※②如果f(P)不等于f(T[s..s+m-1]) 那么P一定不等于T[s..s+m-1]
※③我们可以在O(1)时间比较指纹
※④我们可以在O(1)的时间从f(T[s..s+m-1])计算f(T[s+1...
分类:
编程语言 时间:
2015-02-06 21:48:41
阅读次数:
283
Q:Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
这道题是让我们自己完善函数strStr():返回模式串needle在主串haystack中第一次出现的索引位置,若主串中不存在模式串...
分类:
其他好文 时间:
2015-02-05 11:25:23
阅读次数:
123
题目大意:给定n个长度为l的模式串,现在要用前m个大写字母生成一个随机串,每个字符有自己的出现几率,第一次出现的字符串获胜,求最终每个字符串的获胜几率
建出AC自动机,搞出转移矩阵
如果某个节点是模式串那么这个节点只向自己连一条概率为1的出边
然后把转移矩阵自乘50遍即可
#include
#include
#include
#include
#define M 120
using...
分类:
Web程序 时间:
2015-02-04 14:43:03
阅读次数:
196