KMP算法next函数缺陷与改进及串类型定义
需积分: 46 125 浏览量
更新于2024-07-14
收藏 540KB PPT 举报
KMP算法的next函数的缺陷和改进-数据结构第四章
KMP算法的next函数是串模式匹配算法中的一种重要技术,该算法可以快速地查找模式串在主串中的出现位置。然而,next函数也存在一些缺陷,这些缺陷可能会导致算法的效率降低和错误的结果。因此,了解next函数的缺陷和改进方法是非常重要的。
next函数的缺陷:
1. 如果next[j] = k,而模式中Pj=Pk,则不需要和Pk进行比较,只需要和Pnext[k]进行比较即可。这是因为next[j] = k意味着Pj和Pk相同,因此可以直接比较Pnext[k],从而减少比较次数,提高算法的效率。
next函数的改进方法:
1. 使用next函数的迭代式计算:可以使用迭代式计算next函数,避免了重复计算next函数的值,从而提高算法的效率。
串类型的定义:
1. 串(字符串)String:是零个或多个字符组成的有限序列。一般记为:S=‘a1a2an’(n≥0)。
2. 子串:串中任意个连续的字符组成的子序列称为该串的子串。“”为任意串的子串。
3. 主串:包含子串的串相应地称为主串。
4. 位置:字符在串中的序号称为该字符在串中的位置。子串在主串中的位置则以子串的第一字符在主串中的位置来表示。
串的抽象数据类型定义:
ADTString{
数据对象:
D={ai|ai∈CharacterSet,i=1,2,,n,n≥0}
数据关系:
R1={<ai-1,ai>|ai-1,aiD,i=2,,n
∈
}
}
串的基本操作:
1. 串赋值StrAssign(&T,chars):初始条件:chars是字符串常量。操作结果:生成一个值等于chars的串T。
2. 串比较StrCompare(S,T):初始条件:串S和T存在。操作结果:若S>T,则返回值>0;如S=T,则返回值=0;若S<T,则返回值<0。
KMP算法的next函数是一个非常重要的技术,但它也存在一些缺陷。如果我们能够了解这些缺陷,并使用改进方法,那么我们可以提高算法的效率和准确性。
291 浏览量
6447 浏览量
1219 浏览量
2023-05-22 上传
2023-05-22 上传
124 浏览量
449 浏览量
179 浏览量
2023-05-27 上传
魔屋
- 粉丝: 27
- 资源: 2万+
最新资源
- Apache Kafka的Python客户端-Python开发
- matlab_code:与论文相关的一些代码
- lean-intl:Lean-Intl是针对尚不支持此API的浏览器的Intl-API的精益polyfill。 这是Intl.js的现代分支,具有最新数据,已根据现代开发工作流程和工具要求进行了调整
- 一组dashboard仪表盘图标 .svg .png素材下载
- 易语言多彩文本
- 浅析屏蔽电缆的接地方式.rar
- LengthConverter:该长度转换器应用程序将给定的长度(以米为单位)转换为毫米,厘米,英寸,英尺,码,公里等。此应用程序是使用HTML,CSS,BOOTSTRAP,JAVASCRIPT开发的
- laravel引入自定义composer包文件.zip
- jdbc-jar,数据库连接驱动,三个jar包。包括druid连接池,ojdbc1.6,lombok。
- PokemonApp:应用程序列出宠物小精灵
- QT5网络通讯TCP服务器端代码,linux和win兼容,亲测可用
- 单目标动态发电调度粒子群算法,c语言档案管理界面的源码,c语言
- 使用Arduino和环氧树脂制作的夜灯-电路方案
- Playwright是一个Python库,可通过单个API自动化Chromium,Firefox和WebKit浏览器-Python开发
- 气旋物理学:《游戏物理引擎设计》一书随附的物理引擎
- homebrew-pythons::beer_mug::snake:一个Hombrew Tap,字面上充满了Python解释器