- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《KMP_字符串模式匹配算法》教学课例.doc
《KMP 字符串模式匹配算法》教学课例
程玉胜
安庆师范学院计算机与信息学院
KMP字符串模式匹配是数据结构课程中一个重要的知识点,也是一个难点(学过KMP算法的同学100%认为:KMP是数据结构课程中最难的部分)。为了消除他们对KMP算法学习的恐惧心理,激发他们的学习兴趣,调动其积极性,显得尤为重要。
基于以上,我们根据学生的认知特点和接受水平,对教材内容进行了重新构建,并按照数据结构中“时间复杂度”概念,增加了不同模式匹配算法的运行时间,动态逼真的显示了算法的“时间”性能,获得了较好的教学效果。
教学目标
知识目标:让学生了解KMP算法应用的普遍性。如:在目前众多的文字处理软件中得到广泛应用,如Microsoft Word中的“查找”或“替换”操作。而这种操作实现的机制,同学们特别是计算机专业的学生很少去想过。
能力目标:要求学生体验一个完整的抽象数据类型(ADT)的实现方法和过程,并学会判断、计算算法优劣的方法。
价值目标:消除恐怖的学习心态,让学生感悟数据结构算法实际应用价值,从而激发学习的兴趣,形成积极主动式学习的态度。
教材分析
使用教材是清华大学严蔚敏教授并由清华大学出版社出版的《数据结构(C语言版)》,该教材难度较大,其实验方法特别是ADT方法在教材中介绍较少,而且KMP算法更是从理论分析的角度介绍了匹配算法和next的计算,自学难度很大;虽然该节知识点属于“**(表示难度较大,可以不讲)”,但是其又是考研的一个热点,所以我们又不得不讲。
教学重点、难点
教学重点:KMP算法中的next和改进的nextval计算
教学难点:KMP算法中如何计算next值
教具准备
卡 片:多个字符串,字符串指针
强力磁吸:6个
互动式教学过程
教学内容 教师活动 学生活动 目标状态 创设情境引入课题 目前的众多软件中,“查找”、“替换”等操作实现方法,要求学生举例。
给出一篇word文档 完成在上述文档中从当前位置向后查找“计算机”或者向前查找“计算机”字符串的方法。 这些软件中“查找”操作是怎么实现的?
提出问题 教师给出如下任务:手动演示如下两个字符串的查找操作。
例如:在串S=”abcabcabdabba”中查找T=” abcabd”的位置。 学生分组讨论,演示“查找”过程,如图(教具演示)
我们发现比较到S[6] 和T[6]不等时,怎么办? 解决问题
|
简单匹配算法 引入“简单匹配算法”
给出上例的匹配过程前两步:
第一趟、
第二趟、
学生完成匹配后面过程
第三趟、
第四趟、
要求学生计算匹配次数:通过4次匹配,终于在S串中“查找”到T串,位置时4 在第一趟比较后,进行的第二趟、第三趟比较有必要吗? 进一步提出问题 第一趟后,当S[6]≠T[6]时,
第二趟进行S[2]与T[1]比较是必要的吗?
第三趟进行S[3]与T[1]比较是必要的吗?
第四趟进行S[4]与T[1]比较是必要的吗?
第四趟进行S[4]与T[2]比较是必要的吗? 学生讨论,然后找学生提问,最后证明。
如果是不必要的,那么第一趟后,当S[6]≠T[6]时,
S[6]与T[ ?]比较是必要的呢!“?”怎么求? 解决问题
|
KMP匹配算法 引入“MP匹配算法”
第一趟,当S[6]≠T[6]时,
S下标不是回溯到2,T下标也不是回溯到开始,而是根据T中T[6]==’d’的模式函数值(next[6]=3,为什么?后面讲)进行匹配,要求学生完成匹配过程 当S[6]≠T[6]时,根据next[6]=3匹配过程:
要求学生计算匹配次数:仅通过2次匹配,终于在S串中“查找”到T串,位置时4 next[6]=3含义:
其实这个3表示T[6]==’d’的前面有2个字符和开始的两个字符相同”
怎么求串的模式值 next[n]? 教学重点内容|
next值的计算 引入“模式值next[n]的计算”
定义 :略 例二、求T=“abcab”的模式函数的值。
下标
1
2
3
4
5
T
a
b
c
a
b
next
0
1
1
1
2
设T=“abcab”,S=“abcadcabcab”,利用KMP算法进行匹配,几次匹配成功?存在什么问题? 问题的进一步提出 第一趟:
当出现S[5]≠T[5]时,根据next[5]=2,得:
第二趟、
第三趟、
学生完成后面的工作:
要求学生计算匹配次数:仅通过5次匹配,在S串中“查找”到T串,位置时7 比如:“abcab”模式串中,NEXT值为(0 1 1 1 2 )。当比较到T[5]=b不成功时,原NEXT的值跟T[2]比较,可事实上,T[2]也是b,与T[5]相同,所以可以直接跟T[1]比较。
可见,第二趟比较是多余的,那么如何改进呢? 教学重点内容|
nextval值的计算 next[n
文档评论(0)