您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页kmp算法实验报告

kmp算法实验报告

来源:筏尚旅游网


数 据 结 构

实 验 报 告

学 院 软件学院 年 级 2009级 班 级 班 学 号 姓 名

2010 年 3 月 24 日

目录

一、实验内容……………………………………….1 二、实验过程……………………………………….X 三、实验结果……………………………………….X

软件学院2009级数据结构试验报告

一、实验内容:

1、实验题目:KMP算法

2、实验要求:实现教材中字串比较kmp算法,比较模式串abaabcac与主串acabaabaabcacaabc。

3、实验目标:了解并掌握串的类型定义和基本操作,并在此基础上实现kmp算法。了解kmp算法的基本原理和next函数的使用。

软件学院2009级数据结构试验报告

二、实验过程:

1、任务分配 2、设计思想

(1)KMP算法:在模式匹配中,每当一趟匹配过程出现字符比较不等时,不需要回溯i指针,而是利用已经得到的“部分匹配”的结果将模式向右滑动尽可能远的一段距离之后,继续进行比较。

(2)next函数:看成一个模式匹配问题,整个模式串既是主串又是模式串,可仿照KMP算法。

3、需求分析

(1) 输入的形式和输入值的范围:输入主串S,模式串T,位置pos (2) 输出的形式:模式串在主串中开始匹配的位置i

(3) 程序所能达到的功能:利用kmp算法完成模式串和主串的模式匹

配,并输出模式串在主串中开始匹配的位置

(4) 测试数据:

S=acabaabaabcacaabc T=abaabcac Pos=6

4、概要设计

1).抽象数据类型 Class String()定义字符串 Int StrLength()返回串的长度

Void get_next()求模式串T的next函数值并存入next

int kmp()利用模式串T的next函数求出T在主串S中第pos个字符之后的位

置的KMP算法

2).算法

a.kmp算法模块:实现主串和模式串的模式匹配

b.next函数模块:实现模式串自身的模式匹配,并存入nxet函数中 c.接收处理命令(初始化数据)

5、详细设计

程序代码(含注释)

软件学院2009级数据结构试验报告

6、调试分析

(1)调试中的问题分析: (2)算法的时空分析:

在利用简单的Index()函数进行模式匹配时,虽然易于理解,但是该算法效率很低。在某些特殊情况下,因为在主串中可能存在多个和模式串“部分匹配”的子串,因而引起指针i的多次回溯,从而导致时间复杂度过高。

对于kmp算法,每当一趟匹配过程中出现字符比较不等时,不需要回溯i指针,而是利用已经得到的“部分匹配”的结果将模式向右滑动尽可能远的一段距离之后,继续进行比较。因此kmp算法的效率较高,时间复杂度也较低。

7、测试结果

列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,

最好多于需求分析中所列。 8、说明(如果有)

a.

软件学院2009级数据结构试验报告

三、实验结果:(结果分析,心得体会等)

1.结果分析

kmp算法的实验,既体现了字符串的定义原理和基本特点,又通过对字符串模式匹配实验的练习,得到了一种效率更高、时间复杂度更低的kmp算法

2.心得体会:这次kmp算法代码的编写给了我深刻的体会,它不仅让我了解了字符串的基本操作和相关知识点。也通过字符串模式匹配实验的练习,让我学习了一种更为高效、时间复杂度更低的kmp算法。

注:共三大项,具体每一项的内容可根据自己的报告内容分条叙述,自行安排得当即可。

备注:(正文采用宋体小四,间距20磅)

以上说明仅供参考。实验报告从这5部分展开,具体内容可自由发挥。如有雷同,均按零分处理。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务