[发明专利]大字符串匹配方法无效
申请号: | 02134428.0 | 申请日: | 2002-07-24 |
公开(公告)号: | CN1392497A | 公开(公告)日: | 2003-01-22 |
发明(设计)人: | 彭泉 | 申请(专利权)人: | 彭泉 |
主分类号: | G06F17/22 | 分类号: | G06F17/22 |
代理公司: | 广州市新诺专利事务所有限公司 | 代理人: | 华辉 |
地址: | 510630 广东省广州*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 字符串 匹配 方法 | ||
技术领域
本发明涉及一种大字符串匹配方法,属于计算机编程的技术领域。
背景技术
字符串匹配是电脑应用中常用的算法。例如,设两个串,S1=“abcde”,S2=“afbceg”,则abce是S1和S2的公共匹配串,即S1和S2的相同部分,若用*标识不匹配的部分,则这两个串可表示为S1=“abc*e”,S2=“a*bce*”。
两个字符串中的字符如果相等,则称这两个字符匹配。例如上例中,S1[0]=S2[0]=’a’,S1[4]=S2[5]=’e’,则称S1[0]与S2[0]匹配,S1[4]与S2[5]匹配。同样,设两个序列P,Q,P={p1,...,pn},Q={q1,...,qm},(P,Q的元素pi,qi可以是整数、或者任何其它类型的一维或多维数据,)则P,Q匹配可称为数据序列匹配;如果pi=qj,则称序列P的元素pi与序列Q的元素qj匹配。为了方便和统一起见,元素为非字符的序列也称为串,两个序列的匹配运算称为串的匹配运算。
设待匹配的两个串长度分别为M、N,传统的字符串匹配算法是生成匹配矩阵(生成匹配矩阵的运算量是M*N次比较和至少M*N次读/写操作,即使形式上不生成完整的匹配矩阵,但概念上也必须生成该矩阵,并且需要同样或者略多于生成矩阵的计算量),然后在矩阵中搜索最大匹配串(这个运算量也是O(M*N)),其总运算量是O(M*N)。对于大型的字符串,如果按照上述传统的匹配方式,其运算量将是非常惊人的。
发明内容
本发明提供一种运算复杂度低,运算速度快的大字符串匹配方法。
本发明所述的大字符串匹配方法,按以下步骤进行:
a)在需要匹配的两个大的字符串M、N中选择一个特征字
符或字符串序列,根据特征字符或字符串序列对所要匹
配的两个字符串分别分段,得到{Mi},{Nj},用散列变换
方法计算每段小字符串Mi和Nj的散列值,以散列值为元
素组成变换序列(ai,bi)和(cj,dj),这样把需要匹配的两个大
的字符串分别变换成序列{(ai,bi)}以及{(cj,dj)};
b)然后对序列{(ai,bi)}、{(cj,dj)}进行匹配。如果ai=cj并且bi
=dj则表示M中元素(ai,bi)与N中元素(cj,dj)匹配,标记出
匹配项;
c)序列{(ai,bi)}、{(cj,dj)}中匹配和不匹配所对应的段分别处
理,其中匹配项对应的小字符串段进行字符串匹配,并
进一步标记出小字符串段中的匹配和非匹配内容并输出
匹配和非匹配内容;做为粗匹配,非匹配项对应的小字
符串段全部作为非匹配内容输出;做为细匹配,可以对
各个非匹配段进行进一步匹配,找出更多的匹配内容。
上述a)步骤中的散列变换采用计算每段小字符串的长度和以及段中各字符累加和的散列计算方式,变换为一对关于段的长度及段中各字符累加和的序列Mi(ai,bi)以及Nj(cj,dj)。上述b)步骤的匹配运算和c)步骤中对各个段做进一步匹配的算法使用对角线匹配算法。对角线匹配算法描述于后。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于彭泉,未经彭泉许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/02134428.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:钝化法热浸镀铝及铝合金工艺
- 下一篇:一种制备氧化钒薄膜的方法