简单的模式匹配算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单的模式匹配算法_Brute-Force算法

在串的操作中,子串的定位操作Index_string(s,t),通常称之为模式匹配(其中:子串t称之为模式串)。其功能是:主串s=“c0c1...c n-1”中,去查找子串t=“t0t1...t m-1”,若找到则返回子串t在主串s中的位置,否则查找不成功,返回-1。

为了便于理解,我们举例进行说明。

1.例子

例如:主串s=”ababcabcacbab”,t=”abcac”。其匹配过程如图6-12所示。

第一趟匹配: i=2

a b a b c a b c a c b a b

a b c

j=2

第二趟匹配: i=1

a b a b c a b c a c b a b

a

j=0

第三趟匹配: i=6

a b a b c a b c a c b a b

a b c a c

j=4

第四趟匹配: i=3

a b a b c a b c a c b a b

a

j=0

第五趟匹配: i=4

a b a b c a b c a c b a b

a

j=0

第六趟匹配: i=10

a b a b c a b c a c b a b

a b c a c

j=5

图6-12 Brute-Force算法中串的匹配过程

2.算法思想

算法的基本思想是:分别设置计数指针i和j指示主串s和模式串t中当前正待比较的字符位置。从主串的第一个字符和模式的第一个字符比较,若相等,则继续逐个比较后续字符;否则从主串的下一个字符起再重新和模式串的字符比较。依次类推,直到模式串中的每个字符依次和主串中的一个连续的字符序列相等,则称匹配成功,函数值为和模式串中第一个字符相等的字符在主串中的序号,否则称匹配不成功。

这个算法简单,易于理解,但效率不高,主要原因是:主串指针i在若干个字符序列比较相等后只要有一个字符比较不等便需回溯。

相关文档
最新文档