`
MauerSu
  • 浏览: 513946 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

改进的模式匹匹配算法KMP住next的计算方法

 
阅读更多

源:http://hi.baidu.com/mzyaimama/item/78b37af45d0c3729753c4c68

评:

next数组值的程序设计求解方法:首先可以肯定的是第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位 进行比较。首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就是前一位的next值加上1;如果不等,向前继续寻找next 值对应的内容来与前一位进行比较,直到找到某个位上内容的next值对应的内容与前一位相等为止,则这个位对应的值加上1即为需求的next值;如果找到 第一位都没有找到与前一位相等的内容,那么需求的位上的next值即为1。

 

举个例子:::
模式串  a  b  a  a  b  c  a 
c
next值  0  1 
1  2  2  3  1  2
1.前两位必为0,1。
2.计算第三位的时候,看第二位b的next值,为1,则把b和1对应的a进行比较,不同,则第三位a的next的值为1,因为一直比到最前一位,都没有发生比较相同的现象。
3.计算第四位的时候,看第三位a的next值,为1,则把a和1对应的a进行比较,相同,则第四位a的next的值为第三位a的next值加上1,为2。因为是在第三位实现了其next值对应   
的值与第三位的值相同。
4.计算第五位的时候,看第四位a的next值,为2,则把a和2对应的b进行比较,不同,则再将b对应的next值1对应的a与第四位的a进行比较,相同,则第五位的next值为第二位b的   
next值加上1,为2。因为是在第二位实现了其next值对应的值与第四位的值相同。
5.计算第六位的时候,看第五位b的next值,为2,则把b和2对应的b进行比较,相同,则第六位c的next值为第五位b的next值加上1,为3,因为是在第五位实现了其next值对应的   
值与第五位相
6.计算第七位的时候,看第六位c的next值,为3,则把c和3对应的a进行比较,不同,则再把第3位a的next值1对应的a与第六位c比较,仍然不同,则第七位的next值为1。
7.计算第八位的时候,看第七位a的next值,为1,则把a和1对应的a进行比较,相同,则第八位c的next值为第七位a的next值加上1,为2,因为是在第七位和实现了其next值对应的值与第七位相同。

分享到:
评论

相关推荐

    模式匹配KMP算法

    模式匹配 KMP 算法是一种高效的字符串匹配算法,由 D.E.Knuth、J.H.Morris 和 V.R.Pratt 同时发现。该算法可以解决模式匹配的问题,即在一个大字符串中查找一个模式字符串的出现位置。 模式匹配算法的基本思路是,...

    《字符串模式匹配KMP算法》教学课例设计[归纳].pdf

    我们使用的教材是清华大学严蔚敏教授编写的《数据结构(C语言版)》,该教材难度较大,其实验方法特别是ADT方法在教材中介绍较少,KMP算法更是从理论分析的角度介绍了匹配算法和next的计算,自学难度很大。...

    模式匹配法kmp实现算法代码

    KMP(Knuth-Morris-Pratt)算法是一种高效的字符串模式匹配算法,它避免了在匹配失败时不必要的回溯,从而在O(n+m)的时间复杂度内完成匹配操作,其中n是主串(目标字符串)的长度,m是模式串(要查找的子串)的长度...

    KMP字符串模式匹配算法

    KMP字符串模式匹配算法是一种高效的字符串搜索算法,由D.E.Knuth、V.R.Morris和J.W.Pratt三位学者提出,因此得名KMP算法。该算法避免了在匹配过程中不必要的字符回溯,提高了匹配效率。下面我们将深入探讨KMP算法的...

    串匹配算法——kmp算法,并行算法

    在并行计算领域,串匹配算法也可以利用MPI(Message Passing Interface)进行分布式处理,将大文本字符串分割成多个部分,每个计算节点独立运行KMP算法,然后汇总结果。这种方法可以极大地提高处理大规模数据的效率...

    数据结构 模式匹配的改进算法

    ### 数据结构:模式匹配的改进算法 ...通过对next数组的构建和利用,KMP算法避免了传统模式匹配算法中大量的重复比较,极大地提高了匹配效率。对于大数据量的文本处理任务而言,KMP算法的应用具有重要的现实意义。

    浅论《数据结构》中KMP模式匹配算法讲解.pdf

    然而,KMP算法在理解上存在一定的难度,特别是next数组的计算方法与原理。因此,在教学过程中,通过实例讲解和适当的理论推导来帮助学生深入理解next数组的构建及其在模式匹配中的作用,是帮助学生掌握KMP算法的关键...

    KMP串匹配算法,并行计算

    其中,KMP(Knuth-Morris-Pratt)串匹配算法是解决这一问题的一种高效方法,特别适用于在给定文本串中寻找与模式串精确匹配的子串起始位置。 KMP算法的核心在于利用模式串自身的局部匹配信息,避免不必要的字符比较...

    模式匹配的KMP算法详解.

    #### 一、KMP算法背景及传统模式匹配算法 KMP算法,即Knuth-Morris-Pratt算法,是由Donald E. Knuth、James H. Morris和Vaughan R. Pratt三位计算机科学家在1977年共同提出的一种高效的字符串匹配算法。它在模式...

    模式匹配的KMP算法详解

    在传统的匹配算法中,一旦遇到失配,就需要将主串指针回溯到失配字符的前一个位置,再从模式串的起始位置开始匹配,这可能导致重复的匹配操作。KMP算法通过next数组避免了这种回溯,next[j]表示当模式串T的第j个字符...

    模式匹配的一种改进方法kmp

    与传统的字符串匹配算法相比,KMP算法在模式匹配过程中不会发生指针回溯的情况,从而大大提高了匹配效率。在最坏的情况下,KMP算法的时间复杂度为O(n+m),其中n为主串的长度,m为模式串的长度。 #### 二、核心思想 ...

    数据结构KMP-NEXT数组计算方法

    ### 数据结构KMP-NEXT数组计算方法 #### KMP算法简介 KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,由Donald Knuth、James H. Morris和Vaughan Pratt共同提出。相较于朴素的字符串匹配算法,KMP算法...

    KMP模式匹配算法c源码.zip

    《KMP模式匹配算法C语言实现详解》 KMP(Knuth-Morris-Pratt)模式匹配算法是一种在文本字符串中高效查找子串的算法,由Donald Knuth、 Vaughan Pratt和James H. Morris三位学者于1977年提出。在计算机科学中,尤其...

    数据结构 KMP算法及next数组求解过程

    传统的朴素字符串匹配算法在遇到不匹配时会将模式串回溯到第一个字符,但KMP算法通过next数组避免了这种无效的回溯。当主串与模式串中对应位置的字符不匹配时,模式串会根据next数组的值向前移动,这样可以跳过已知...

    KMP模式匹配算法C源码.zip

    KMP(Knuth-Morris-Pratt)模式匹配算法是一种在主串(也称为文本串)中查找子串(也称为模式串)的有效方法。它由Donald Knuth、Vaughan Pratt和James H. Morris三位学者于1970年代提出,解决了在字符串中查找特定...

Global site tag (gtag.js) - Google Analytics