数据结构4_串.pptVIP

  • 13
  • 0
  • 约 26页
  • 2017-07-02 发布于湖北
  • 举报
数据结构4_串

* * 讨论: 若n为主串长度,m为子串长度,则串的BF匹配算法 最坏的情况下需要比较字符的总次数为 BF算法的时间复杂度 (n-m+1)*m=O(n*m) 最好的情况是:一配就中! 只比较了m 次。 KMP算法(特点:速度快) KMP算法设计思想 KMP算法的时间复杂度 * * ① KMP算法设计思想: (参见教材P80-84) * * 尽量利用已经部分匹配的结果信息,尽量让i不要回溯,加快模式串的滑动速度。 例: S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ Index_kmp的返回值应为i=6 i i i k k a b a a b c k i i i-T[0] ④ KMP算法的时间复杂度 注意:由于BF算法在一般情况下的时间复杂度也近似于O(n+m),所以至今仍被广泛采用。 * * 而此时KMP的情况是:由于指针i无须回溯,比较次数仅为n,即使加上计算next[j]时所用的比较次数m,比较总次数也仅为n+m=O(n+m),大大快于BF算法。 回顾BF的最恶劣情况:S与T之间存在大量的部分匹配,比较总次数为: (n-m+1)*m=O(n*m) 因为主串指针i

文档评论(0)

1亿VIP精品文档

相关文档