算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计

算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计

ID:33926024

大小:271.36 KB

页数:9页

时间:2019-03-01

算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计_第1页
算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计_第2页
算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计_第3页
算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计_第4页
算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计_第5页
资源描述:

《算法分析与设计2005春.课件.第11讲 清华大学:算法分析与设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、内容介绍•解决问题:模式匹配,对应实际问题:Lecture11模式匹配–文本文件字符串查找–格式文件中的字符串及其格式查找问题•算法:Naïve,RabinKarp,自动机,清华大学KMP,BM算法宋斌恒12Figure32.1Thestring-matchingproblem.Thegoalisto本章算法及其复杂度列表findalloccurrencesofthepatternP=abaainthetextT=abcabaabcabac.Thepatternoccursonlyonceinthetext,atshifts=

2、3.Theshifts=3issaidtobeavalidshift.EachcharacteroftheAlgorithmpreprocessingtimematchingtimepatternisconnectedbyaverticallinetothematchingcharacterinNaïve0O((n-m+1)m)thetext,andallmatchedcharactersareshowningreencolor.Rabin-KarpΘ(m)O((n-m+1)m)FiniteautomatonO(m

3、Σ

4、)Θ(

5、n)textTabcabaabcabacKnuthMorrisPrattO(m)Θ(n)BMpatternPabaa34TerminologyLemma32.1(Overlapping-suffixlemma)•Σ:字符集Supposethatx,y,andzarestringssuch•Σ*:由Σ生成的所有字符串,包括空串的thatx]zandy]z.If

6、x

7、≤

8、y

9、,thenx]y.集合,以下叙述x,y,z,w表示其元素If

10、x

11、≥

12、y

13、,theny]x.If

14、x

15、=

16、y

17、,thenx•Concatenationofx,

18、y:xy=y.•前缀:[:w[xÎthereexistsy,suchthatx=wy•后缀:]:w]xÎthereexistsy,suchthatx=yw561Figure32.3AgraphicalproofofLemma32.1.Wesupposethatx]aandy]z.Thethreepartsofthefigureillustratethethreecasesofthelemma.Verticallinesconnectmatchingregions(shownshaded)ofthestrings.(a)If

19、x

20、

21、≤

22、y

23、,thenx]y.(b)If

24、x

25、≥

26、y

27、,theny]x.(c)If

28、x

29、=

30、y

31、,thenx=y.NaïveStringmatchingalgorithm•Naïve-String-matcher(T,P)1.nÅlength[T]2.mÅlength[P]3.ForsÅ0ton-m1.IfP[1,…,m]==T[s+1,…,s+m]1.Print“Patternoccurswithshift”s78RabinKarpalgorithmKeyPointsofKarp-Rabin•HashValuepofastri

32、ngPwithmoduloq:•Howtocomputethevalueefficiently?–p=hash(P,m,q)=(P[m]

33、Σ

34、0+P[m-1]

35、Σ

36、1+P[m-2]

37、Σ

38、2+…+P[m-i]

39、Σ

40、i+…+P[1]

41、Σ

42、m-1)mod(q)–ts+1=Hash(T[s+1,m],m,q)–计算方法:多项式求值方法,–ts+1=(d(ts-T[s+1]h)+T[s+m+1])mod(q)•算法描述:–h=dm-1(modq)–给定字符串T和要找的子字符串P,–d是进位,如果是26个字符,则可以是26,–从i=1到L

43、ength[T]-Length[P]一般来讲取d为

44、Σ

45、•IfHash(P,m,q)!=Hash(T[i,m],m,q)continue•继续判断(naïve方法)•SpuriousHit•其中T[i,m]表示T从i开始长度为m的子串910235902314152673992123590231415267399217893110178451011791111122•Rabin-Karp-Matcher(T,P,d,q)1.n=length[T]2.m=length[P]3.h=dm-1(modq)4.p=03141521415

46、2≡(31415-3·10000)·10+2(mod13)5.T0=0≡(7-3·3)·10+2(mod13)6.Fori=1tom≡8(mod13)1.p=(dp+P[i])(modq)2.t0=(dt0+T[i])(modq)787.Fors=0ton-m1.Ifp=ts

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。