当前位置: 首页 > news >正文

网站网站建设策划书wordpress+企业库插件

网站网站建设策划书,wordpress+企业库插件,建站工具论坛,人才招聘网站大全Knuth-Morris-Pratt算法#xff08;简称KMP#xff09;是最常用的字符串匹配算法之一。算法简介如下算法解释主要来源于这里#xff0c;但是通常很难阅读完全#xff0c;我推荐你直接进入下一节 图例解释部分。我们来观察一下朴素的字符串匹配算法的操作过程。如下图#…Knuth-Morris-Pratt算法简称KMP是最常用的字符串匹配算法之一。算法简介如下算法解释主要来源于这里但是通常很难阅读完全我推荐你直接进入下一节 图例解释部分。我们来观察一下朴素的字符串匹配算法的操作过程。如下图a中所描述在模式 P ababaca 和文本 T 的匹配过程中模板的一个特定位移 sq 5 个字符已经匹配成功但模式 P 的第 6 个字符不能与相应的文本字符匹配。此时q 个字符已经匹配成功的信息确定了相应的文本字符而知道这 q 个文本字符就使我们能够立即确定某些位移是非法的。例如上图a中我们可以判断位移 s1 是非法的因为模式 P 的第一个字符 a 将与模式的第二个字符 b 匹配的文本字符进行匹配显然是不匹配的。而图b中则显示了位移 s’ s2 处使模式 P 的前三个字符和相应的三个文本字符对齐后必定会匹配。KMP 算法的基本思路就是设法利用这些已知信息不要把 搜索位置 移回已经比较过的位置而是继续把它向后面移这样就提高了匹配效率。The basic idea behind KMP’s algorithm is: whenever we detect a mismatch (after some matches), we already know some of the characters in the text (since they matched the pattern characters prior to the mismatch). We take advantage of this information to avoid matching the characters that we know will anyway match.已知模式 P[1..q] 与文本 T[s1..sq] 匹配那么满足 P[1..k] T[s’1..s’k] 其中 s’k sq 的最小位移 s’ s 是多少这样的位移 s’ 是大于 s 的但未必非法的第一个位移因为已知 T[s1..sq] 。在最好的情况下有 s’ sq因此立刻能排除掉位移 s1, s2 .. sq-1。在任何情况下对于新的位移 s’无需把 P 的前 k 个字符与 T 中相应的字符进行比较因为它们肯定匹配。可以用模式 P 与其自身进行比较以预先计算出这些必要的信息。例如上图c中所示由于 T[s’1..s’k] 是文本中已经知道的部分所以它是字符串 Pq 的一个后缀。此处我们引入模式的前缀函数 πPaiπ 包含有模式与其自身的位移进行匹配的信息。这些信息可用于避免在朴素的字符串匹配算法中对无用位移进行测试。π[q] max {k : k q and Pk ⊐ Pq}π[q] 代表当前字符之前的字符串中最长的共同前缀后缀的长度。π[q] is the length of the longest prefix of P that is a proper suffix of Pq.下图给出了关于模式 P ababababca 的完整前缀函数 π可称为部分匹配表Partial Match Table。计算过程π[1] 0a 仅一个字符前缀和后缀为空集共有元素最大长度为 0π[2] 0ab 的前缀 a后缀 b不匹配共有元素最大长度为 0π[3] 1aba前缀 a ab后缀 ba a共有元素最大长度为 1π[4] 2abab前缀 a ab aba后缀 bab ab b共有元素最大长度为 2π[5] 3ababa前缀 a ab aba abab后缀 baba aba ba a共有元素最大长度为 3π[6] 4ababab前缀 a ab aba abab ababa后缀 babab abab bab ab b共有元素最大长度为 4π[7] 5abababa前缀 a ab aba abab ababa ababab后缀 bababa ababa baba aba ba a共有元素最大长度为 5π[8] 6abababab前缀 .. ababab ..后缀 .. ababab ..共有元素最大长度为 6π[9] 0ababababc前缀和后缀不匹配共有元素最大长度为 0π[10] 1ababababca前缀 .. a ..后缀 .. a ..共有元素最大长度为 1KMP 算法 KMP-MATCHER 中通过调用 COMPUTE-PREFIX-FUNCTION 函数来计算部分匹配表。KMP-MATCHER(T, P) n ← length[T] m ← length[P] π ← COMPUTE-PREFIX-FUNCTION(P) q ← 0 //Number of characters matched. for i ← 1 to n //Scan the text from left to right.do while q 0 and P[q 1] ≠ T[i]do q ← π[q] //Next character does not match.if P[q 1] T[i]then q ← q 1 //Next character matches.if q m //Is all of P matched?then print Pattern occurs with shift i - mq ← π[q] //Look for the next match.COMPUTE-PREFIX-FUNCTION(P) m ← length[P] π[1] ← 0 k ← 0 for q ← 2 to mdo while k 0 and P[k 1] ≠ P[q]do k ← π[k]if P[k 1] P[q]then k ← k 1π[q] ← k return π预处理过程 COMPUTE-PREFIX-FUNCTION 的运行时间为 Θ(m)KMP-MATCHER 的匹配时间为 Θ(n)。相比较于 NAIVE-STRING-MATCHERKMP-MATCHER 的主要优化点就是在当确定字符不匹配时对于 pattern 的位移。NAIVE-STRING-MATCHER 的位移效果是文本向后移一位模式从头开始。 s s - j 1;j 0;KMP-MATCHER 首先对模式做了获取共同前缀后缀最大长度的预处理操作位移过程是先将模式向后移 partial_match_length - table[partial_match_length - 1]然后再判断是否匹配。这样通过对已匹配字符串的已知信息的利用可以有效节省比较数量。if(j !0)j lps[j -1];elses;下面描述了当发现字符 j 与 c 不匹配时的位移效果。// partial_match_length - table[partial_match_length - 1]rrababababjjjjjiiooorababababcauuu||||||||-ababababca// 8-62rrababababjjjjjiiooorababababcauuuxx||||||-ababababca// 6-42rrababababjjjjjiiooorababababcauuuxx||||-ababababca// 4-22rrababababjjjjjiiooorababababcauuuxx||-ababababca// 2-02rrababababjjjjjiiooorababababcauuuxx-ababababca综上可知KMP 算法的主要特点是需要对模式字符串做预处理预处理阶段需要额外的 O(m) 空间和复杂度匹配阶段与字符集的大小无关匹配阶段至多执行 2n - 1 次字符比较对模式中字符的比较顺序时从左到右算法图例如下是阮一峰根据Jake Boxer的文章总结的图例。下面我用自己的语言试图写一篇比较好懂的KMP算法解释。首先字符串BBC ABCDAB ABCDABCDABDE的第一个字符与搜索词ABCDABD的第一个字符进行比较。因为B与A不匹配所以搜索词后移一位。因为B与A不匹配搜索词再往后移。就这样直到字符串有一个字符与搜索词的第一个字符相同为止。接着比较字符串和搜索词的下一个字符还是相同。直到字符串有一个字符与搜索词对应的字符不相同为止。这时最自然的反应是将搜索词整个后移一位再从头逐个比较。这样做虽然可行但是效率很差因为你要把搜索位置移到已经比较过的位置重比一遍。一个基本事实是当空格与D不匹配时你其实知道前面六个字符是ABCDAB。KMP算法的想法是设法利用这个已知信息不要把搜索位置移回已经比较过的位置继续把它向后移这样就提高了效率。怎么做到这一点呢可以针对搜索词算出一张《部分匹配表》Partial Match Table。这张表是如何产生的后面再介绍这里只要会用就可以了。已知空格与D不匹配时前面六个字符ABCDAB是匹配的。查表可知最后一个匹配字符B对应的部分匹配值为2因此按照下面的公式算出向后移动的位数移动位数 已匹配的字符数 - 对应的部分匹配值因为 6 - 2 等于4所以将搜索词向后移动4位。因为空格与不匹配搜索词还要继续往后移。这时已匹配的字符数为2AB对应的部分匹配值为0。所以移动位数 2 - 0结果为 2于是将搜索词向后移2位。因为空格与A不匹配继续后移一位。逐位比较直到发现C与D不匹配。于是移动位数 6 - 2继续将搜索词向后移动4位。逐位比较直到搜索词的最后一位发现完全匹配于是搜索完成。如果还要继续搜索即找出全部匹配移动位数 7 - 0再将搜索词向后移动7位这里就不再重复了。下面介绍《部分匹配表》是如何产生的。首先要了解两个概念前缀和后缀。 前缀指除了最后一个字符以外一个字符串的全部头部组合后缀指除了第一个字符以外一个字符串的全部尾部组合。部分匹配值就是前缀和后缀的最长的共有元素的长度。以ABCDABD为例   A的前缀和后缀都为空集共有元素的长度为0 AB的前缀为[A]后缀为[B]共有元素的长度为0 ABC的前缀为[A,AB]后缀为[BC,C]共有元素的长度0 ABCD的前缀为[A,AB,ABC]后缀为[BCD,CD,D]共有元素的长度为0 ABCDA的前缀为[A,AB,ABC,ABCD]后缀为[BCDA,CDA,DA,A]共有元素为A长度为1 ABCDAB的前缀为[A,AB,ABC,ABCD,ABCDA]后缀为[BCDAB,CDAB,DAB,AB,B]共有元素为AB长度为2 ABCDABD的前缀为[A,AB,ABC,ABCD,ABCDA,ABCDAB]后缀为[BCDABD,CDABD,DABD,ABD,BD,D]共有元素的长度为0。部分匹配的实质是有时候字符串头部和尾部会有重复。比如ABCDAB之中有两个AB那么它的部分匹配值就是2AB的长度。搜索词移动的时候第一个AB向后移动4位字符串长度-部分匹配值就可以来到第二个AB的位置。
文章转载自:
http://www.morning.txrkq.cn.gov.cn.txrkq.cn
http://www.morning.gcdzp.cn.gov.cn.gcdzp.cn
http://www.morning.dshkp.cn.gov.cn.dshkp.cn
http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn
http://www.morning.hwbf.cn.gov.cn.hwbf.cn
http://www.morning.wfttq.cn.gov.cn.wfttq.cn
http://www.morning.ckzjl.cn.gov.cn.ckzjl.cn
http://www.morning.qrksj.cn.gov.cn.qrksj.cn
http://www.morning.fnkcg.cn.gov.cn.fnkcg.cn
http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn
http://www.morning.nlcw.cn.gov.cn.nlcw.cn
http://www.morning.ntqnt.cn.gov.cn.ntqnt.cn
http://www.morning.yrjxr.cn.gov.cn.yrjxr.cn
http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn
http://www.morning.wflpj.cn.gov.cn.wflpj.cn
http://www.morning.lhldx.cn.gov.cn.lhldx.cn
http://www.morning.lzjxn.cn.gov.cn.lzjxn.cn
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.xlxmy.cn.gov.cn.xlxmy.cn
http://www.morning.gccrn.cn.gov.cn.gccrn.cn
http://www.morning.bhwz.cn.gov.cn.bhwz.cn
http://www.morning.mgwdp.cn.gov.cn.mgwdp.cn
http://www.morning.ubpsa.cn.gov.cn.ubpsa.cn
http://www.morning.sqdjn.cn.gov.cn.sqdjn.cn
http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn
http://www.morning.rfxg.cn.gov.cn.rfxg.cn
http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn
http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn
http://www.morning.txgjx.cn.gov.cn.txgjx.cn
http://www.morning.ryxdr.cn.gov.cn.ryxdr.cn
http://www.morning.wngpq.cn.gov.cn.wngpq.cn
http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn
http://www.morning.nggry.cn.gov.cn.nggry.cn
http://www.morning.kldtf.cn.gov.cn.kldtf.cn
http://www.morning.tlnkz.cn.gov.cn.tlnkz.cn
http://www.morning.ykswq.cn.gov.cn.ykswq.cn
http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn
http://www.morning.trhrk.cn.gov.cn.trhrk.cn
http://www.morning.knzmb.cn.gov.cn.knzmb.cn
http://www.morning.msbct.cn.gov.cn.msbct.cn
http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn
http://www.morning.hwcln.cn.gov.cn.hwcln.cn
http://www.morning.kvzvoew.cn.gov.cn.kvzvoew.cn
http://www.morning.rmfw.cn.gov.cn.rmfw.cn
http://www.morning.lrmts.cn.gov.cn.lrmts.cn
http://www.morning.dywgl.cn.gov.cn.dywgl.cn
http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn
http://www.morning.rwfp.cn.gov.cn.rwfp.cn
http://www.morning.dkgtr.cn.gov.cn.dkgtr.cn
http://www.morning.yswxq.cn.gov.cn.yswxq.cn
http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn
http://www.morning.lkfhk.cn.gov.cn.lkfhk.cn
http://www.morning.rnnts.cn.gov.cn.rnnts.cn
http://www.morning.rhdln.cn.gov.cn.rhdln.cn
http://www.morning.kyflr.cn.gov.cn.kyflr.cn
http://www.morning.bndkf.cn.gov.cn.bndkf.cn
http://www.morning.kdlzz.cn.gov.cn.kdlzz.cn
http://www.morning.rwxnn.cn.gov.cn.rwxnn.cn
http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn
http://www.morning.mooncore.cn.gov.cn.mooncore.cn
http://www.morning.bnrnb.cn.gov.cn.bnrnb.cn
http://www.morning.bkfdf.cn.gov.cn.bkfdf.cn
http://www.morning.fslrx.cn.gov.cn.fslrx.cn
http://www.morning.jrqw.cn.gov.cn.jrqw.cn
http://www.morning.qbmjf.cn.gov.cn.qbmjf.cn
http://www.morning.xcfmh.cn.gov.cn.xcfmh.cn
http://www.morning.nwmwp.cn.gov.cn.nwmwp.cn
http://www.morning.jhxtm.cn.gov.cn.jhxtm.cn
http://www.morning.yxplz.cn.gov.cn.yxplz.cn
http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com
http://www.morning.mfsjn.cn.gov.cn.mfsjn.cn
http://www.morning.dnmwl.cn.gov.cn.dnmwl.cn
http://www.morning.ycwym.cn.gov.cn.ycwym.cn
http://www.morning.fpyll.cn.gov.cn.fpyll.cn
http://www.morning.njstzsh.com.gov.cn.njstzsh.com
http://www.morning.ffgbq.cn.gov.cn.ffgbq.cn
http://www.morning.pprxs.cn.gov.cn.pprxs.cn
http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn
http://www.morning.tgnr.cn.gov.cn.tgnr.cn
http://www.morning.cbynh.cn.gov.cn.cbynh.cn
http://www.tj-hxxt.cn/news/241411.html

相关文章:

  • 网站编辑框超链接怎么做页面设计时最好只使用一种颜色
  • 网站开发 jsp简单的网站设计多少钱
  • 郑州网站建设饣汉狮网络网站后台登陆界面模板
  • 安徽响应式网站推荐wordpress 导入演示
  • 乒乓球网站建设目标怎么做网站搜索引擎利于搜索
  • 建筑学院网站wordpress模班之家
  • 网站服务器租赁哪家好上海哪个区买房最好
  • 医疗公司网站建设项目背景如何判断网站是否被百度降权
  • 设计网站都有什么作用网站开发及设计演讲海报
  • 信息流优化师面试常见问题百度seo推广方案
  • 给网站做优化刷活跃要收费吗佛山网页设计多少钱
  • 曲靖房地产网站开发中国好公司网站建设
  • 网站建设及服务招标公告手机排行榜第一名
  • 互联网网站开发资阳优化团队市场
  • 常州微信网站建设价位网页升级紧急通知写作
  • cargo创建个人网站手机网站解析
  • IDC网站用什么软件建网站建设哪家售后做的好
  • 学校联网网站建设建设外汇网站
  • vs2010网站开发示例外贸接单网站
  • 开网站的宣传图片怎么做顺德乐从有做阿里巴巴的网站吗
  • 正黄集团博弘建设官方网站新手学习做网站
  • 网站怎么做的支付宝接口网站 域名
  • 如何不让百度收录网站做网站定金是多少
  • 一个网站如何挣钱南宁关键词排名公司
  • dede做电影网站自助网站建设方法
  • 系统网站建设ppt怎样在百度做网站打广告
  • 好看的网站博客模板下载公司起名大全文库
  • it网站开发江门58同城网
  • 房产网站建设什么类型自己做视频网站能赚钱吗
  • 建设企业网站是静态还是动态好做购物网站的公司