- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BF(Brute-Force)算返抹
1.BF(Brute-Force)算法
Brute-Force算法的基本思想是:
1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。
2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在串s 中的位置就是t 在s中的位置,否则模式匹配不成功。
Brute-Force算法的实现
c语言实现:
// Test.cpp : Defines the entry point for the console application.
//
#include stdafx.h
#include stdio.h
#include stdlib.h
#include iostream
using namespace std;
//宏定义
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define MAXSTRLEN 100
typedef char SString[MAXSTRLEN + 1];
/************************************************************************/
/*
返回子串T在主串S中第pos位置之后的位置,若不存在,返回0
*/
/************************************************************************/
int BFindex(SString S, SString T, int pos)
{
if (pos 1 || pos S[0] ) exit(ERROR);
int i = pos, j =1;
while (i= S[0] j = T[0])
{
if (S[i] == T[j])
{
++i; ++j;
} else {
i = i- j+ 2;
j = 1;
}
}
if(j T[0]) return i - T[0];
return ERROR;
}
void main(){
SString S = {13,a,b,a,b,c,a,b,c,a,c,b,a,b};
SString T = {5,a,b,c,a,c};
int pos;
pos = BFindex( S, T, 1);
coutPos:pos;
}
2.KMP算法
2.1 算法思想:每当一趟匹配过程中出现字符比较不等时,不需要回溯I指针,而是利用已经的带的“部分匹配”的结果将模式向右滑动尽可能远的一段距离后,继续进行比较。
即尽量利用已经部分匹配的结果信息,尽量让i不要回溯,加快模式串的滑动速度。
需要讨论两个问题:①如何由当前部分匹配结果确定模式向右滑动的新比较起点k?② 模式应该向右滑多远才是高效率的?
现在讨论一般情况:
假设 主串:s: ‘s(1) s(2) s(3) ……s(n)’ ; 模式串 :p: ‘p(1) p(2) p(3)…..p(m)’
现在我们假设 主串第i个字符与模式串的第j(j=m)个字符‘失配’后,主串第i个字符与模式串的第k(kj)个字符继续比较。
此时,s(i)≠p(j):
由此,我们得到关系式:即得到到1 到 j -1 的部分匹配结果:
‘P(1) P(2) P(3)…..P(j-1)’ = ’ S(i-j+1)……S(i-1)’
从而推导出k 到 j- 1位的“部分匹配”:即P的j-1~j-k=S前i-1~i- (k -1))位
‘P(j - k + 1) …..P(j-1)’ = ’S(i-k+1)S(i-k+2)……S(i-1)’
由于s(i)≠p(j),接下来s(i)将与p(k)继续比较,则模式串中的前(k-1)个字符的子串必须满足下列关系式,并且不可能存在 k’k 满足下列关系式:(kj)
有关系式: 即(P的前k- 1 ~ 1位= S前i-1
您可能关注的文档
- 2010特岗简答练习汇的总.doc
- 2010年电器连锁新图的景国美瞄准新模式苏宁趋向国际化.doc
- 2010年高考试题——的理综(山东卷)(解析版).doc
- 2010生物必修二试题的精选.doc
- 2010高三生物高考二的轮复习:专题三《细胞的生命历程》.doc
- 2010年乐化高中高考的物理模拟试卷大重组(五).doc
- 2011-01-30_相机标兜抹的原理与意义及OpenCV、Matlab实现差异小结.doc
- 2011CB100400-作物兜泥样性对病虫害生态调控和土壤地力的影响.doc
- 2011-2012年度第二训魔期高一期中测试卷.doc
- 2011-2012学年高中傻您物上学期 第3章 细胞的基本结构本章测试4 新人教版必修1.doc
最近下载
- 仁爱版初中英语九年级上册全册教案.pdf VIP
- 新建热网首站项目土建施工和设备安装工程技术方案.pdf VIP
- 故障码详解.ppt VIP
- NB-T11409-2023水电工程费用构成及概(估)算费用标准.docx VIP
- 导弹的诞生和发展教学课件PPT.ppt
- 发电厂和变电站工作票填写规范培训教案详解.ppt VIP
- 注册土木工程师(水土保持方向)案例题整理.docx VIP
- 系统架构设计:构建高可用、可扩展的IT系统培训课件.pptx VIP
- 河堤开挖出水池出水箱涵穿堤管道施工方案样本.doc VIP
- 人教版(PEP)新教材小学一年级英语上册Unit 2My first class 复习课件.pptx
原创力文档


文档评论(0)