数据结构与算法(C++语言版)串讲(精品·公开课件).pptVIP

  • 1
  • 0
  • 约6.82千字
  • 约 41页
  • 2018-12-03 发布于广西
  • 举报

数据结构与算法(C++语言版)串讲(精品·公开课件).ppt

* * * * * * * * * * * * * * * * * * * 串模式匹配 i指示器之所以可不回溯,是因为重新开始一趟匹配时,可利用上趟匹配的结果。一般而言,一个无回溯匹配法的关键问题是,在匹配过程中一旦发现pj与ti不等,应能确定出从P中的哪个字符起与ti(或ti+1)对齐继续往下比较。这里记这个字符为pk,显然k<j,且对不同的i,k也不同。Knoth等人发现这个k值仅仅依赖于子串P的前i个字符的构成,而与主串T无关。这是个令人鼓舞的发现,它是实现无回溯的关键。可用一个函数next表示j与k的这种对应关系,它是仅与子串有关的函数,其含义是,在匹配过程中,一旦发现一对不等的字符(设为pj与ti),若next(j)=k(k≥0),则下次的比较应从P中的pk起与T中的ti对齐往下进行;若next(j)<0,则P中任何字符不必再与ti进行比较,下次比较从P的首字符起与ti+1对齐往下进行。next(j)的取值,应首先保证使匹配过程无遗漏(即不放过任何可能的匹配),其次,应使P串向后滑动尽可能长的距离。函数next( )称为失败函数。 串模式匹配 下面假定对给定的子串,它的next函数已确立,则串模式匹配算法可描述为以下程序的形式,它也是KMP算法的基本部分。 串模式匹配 以上程序中,用一维数组next[ ]表示失败函数next(),变量i只增不减,其初值为0,在循环中一

文档评论(0)

1亿VIP精品文档

相关文档