Professional Documents
Culture Documents
Chng ta tin hnh so snh cc k t ca W tng ng vi cc k t ca S, di chuyn ln lt sang cc ch ci tip theo nu chng ging nhau. S[0] v W[0] u l A. Ta tng i : m: S: W: i: 0 ABC ABCDAB ABCDABCDABDE ABCDABD _1
Nhng, trong bc th t, ta thy S[3] l mt khong trng trong khi W[3] = 'D', khng ph hp. Thay v tip tc so snh li v tr S[1], ta nhn thy rng khng c k t 'A' xut hin trong khong t v tr 0 n v tr 3 trn xu S ngoi tr v tr 0; do , nh vo qu trnh so snh cc k t trc , chng ta thy rng khng c kh nng tm thy xu d c so snh li. V vy, chng ta di chuyn n k t tip theo, gn m = 4 v i = 0. m: S: ____4 ABC ABCDAB ABCDABCDABDE
Tip tc qu trnh so snh nh trn, ta xc nh c xu chung "ABCDAB", vi W[6] (S[10]), ta li thy khng ph hp. Nhng t kt qu ca qu trnh so snh trc, ta duyt qua "AB", c kh nng s l khi u cho mt on xu khp, v vy ta bt u so sanh t v tr ny. Nh chng ta thy cc k t ny trng khp vi hau k t trong php so khp trc, chng ta khng cn kim tra li chng mt ln na; ta bt u vi m = 8, i = 2 v tip tc qu trnh so khp. m: S: W: i: ________8 ABC ABCDAB ABCDABCDABDE ABCDABD __2
Qu trnh so khp ngay lp tc tht bi, nhng trong W khng xut hin k t ,v vy, ta tng m ln 11, v gn i = 0. m: S: W: i: ___________11 ABC ABCDAB ABCDABCDABDE ABCDABD 0
Mt ln na, hai xu trng khp on k t "ABCDAB" nhng k t tip theo, 'C', khng trng vi 'D' trong W. Ging nh trc, ta gn m = 15, v gn i = 2, v tip tc so snh. m: S: W: i: _______________15 ABC ABCDAB ABCDABCDABDE ABCDABD __2
Thut ton KnuthMorrisPratt bin nguyn, i 0 mng nguyn, T while m + i nh hn di ca su S, do: if W[i] = S[m + i], let i i + 1 if i bng di W, return m otherwise, let m m + i - T[i], if T[i] ln hn -1, let i T[i] else let i 0 return di ca on vn bn S
W[i] A B C D A B D T[i] -1 0 0 0 0 1 2
Mt v d khc phc tp hn
i W[i] 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 P A R T I C I P A T E I N P A R A C H U T E
T[i] -1 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 2 3 0 0 0 0 0
W[i] A A A A A A A T[i] -1 0 1 2 3 4 5
y l mu xu nht cho mng T, v n c th dng so snh vi on nh S = "AAAAAABAAAAAABAAAAAAA", trong trng hp ny thut ton s c gng ghp tt c cc ch 'A' vi 'B' trc khi dng li; kt qu l s lng ti a cu lnh c s dng, tin ti trn hai ln s k t ca xu S khi s ln lp ca "AAAAAAB" tng. Mc d qu trnh xy dng bng rt nhanh so vi ch ny (nhng v tc dng), qu trnh ny chy c mt ln vi ch W, trong khi qu trnh tm kim chy rt nhiu ln. Nu vi mi ln, t W c dng tm trn xu nh xu S, phc tp tng th s rt ln. Bng cch so sch, s kt hp ny l trng hp tt nht vi thut ton so khp chui Boyer-Moore. Lu rng trong thc t, thut ton KMP lm vic khng tt i vi tm kim trong vn bn ngn ng t nhin, bi v n ch c th b qua cc k t khi phn u ca t ging vi mt phn trong vn bn. Trong thc t iu ny ch i khi xy ra trong cc vn bn ngn ng t nhin. V d, hy xem xt bao nhiu ln mt xu "text" xut hin trong on vn ny.
Lin kt ngoi
An explanation of the algorithm [1] and sample C++ code [2] by David Eppstein Knuth-Morris-Pratt algorithm [3] description and C code by Christian Charras and Thierry Lecroq Interactive animation for Knuth-Morris-Pratt algorithm [4] by Mike Goodrich Explanation of the algorithm from scratch [5] by FH Flensburg.
Ch thch
Donald Knuth; James H. Morris, Jr, Vaughan Pratt (1977). "Fast pattern matching in strings [6]". SIAM Journal on Computing 6 (2): 323350. doi:10.1137/0206024. Thomas H. Cormen; Charles E. Leiserson, Ronald L. Rivest, Clifford Stein (2001). "Section 32.4: The Knuth-Morris-Pratt algorithm". Introduction to Algorithms (n bn Second). MIT Press and McGraw-Hill. 923931. ISBN978-0-262-03293-3.
Ch thch
[1] http:/ / www. ics. uci. edu/ ~eppstein/ 161/ 960227. html [2] http:/ / www. ics. uci. edu/ ~eppstein/ 161/ kmp/ [3] [4] [5] [6] http:/ / www-igm. univ-mlv. fr/ ~lecroq/ string/ node8. html http:/ / www. ics. uci. edu/ ~goodrich/ dsa/ 11strings/ demos/ pattern/ http:/ / www. inf. fh-flensburg. de/ lang/ algorithmen/ pattern/ kmpen. htm http:/ / citeseer. ist. psu. edu/ context/ 23820/ 0
Ngun v ngi ng gp vo bi
Ngun v ngi ng gp vo bi
Thut ton KnuthMorrisPratt Ngun: http://vi.wikipedia.org/w/index.php?oldid=5172762 Ngi ng gp: Ph phch, Pq, Tranh, Y Kpia Mlo, 1 sa i v danh
Giy php
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/