1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng: Xữ lý tìm kiếm trên chuỗi kí tự doc

16 286 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 2,85 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Strings and Pattern Matching Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 2 Strings and Pattern Matching  Brute Fo

Trang 1

Strings and Pattern Matching

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 2

Strings and

Pattern Matching

 Brute Force,

Rabin

Rabin Karp, Karp,

Knuth

Knuth MorrisMorris PrattPratt

 RegularRegular ExpressionsExpressions

Trang 2

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 3

Bài

Bài tốn tốn tìm tìm kiếm kiếm chuỗi chuỗi ký ký tự

 ĐốiĐối tượngtượng củacủa bàibài tốntốn stringstring searchingsearching làlà tìmtìm

kiếm

kiếm vịvị trítrí củacủa mộtmột mẫu mẫu văn văn bản bản (text (text pattern) pattern)

trong

trong nội nội dung dung một một văn văn bản bản lớn lớn hơn hơn (một (một câu,

một

một đoạn đoạn hay hay một một quyển quyển sách, sách, … …))

 CũngCũng nhưnhư phầnphần lớnlớn cáccác thuậtthuật tốntốn khác,khác, quanquan tâmtâm

chính

chính củacủa stringstring searchingsearching làlà tốc tốc độ độ và và hiệu hiệu quả quả

 CĩCĩ nhiềunhiều thuậtthuật tốntốn tìmtìm kiễmkiễm chuỗichuỗi kýký tựtự kháckhác

nhau

nhau TuyTuy nhiênnhiên,, chúngchúng tata sẽsẽ chỉchỉ khảokhảo sátsát baba thuậtthuật

tốn

tốn làlà:: BruteBrute ForceForce,, RabinRabin KarpKarp và Knuth

Knuth Morris

Morris PrattPratt

Thuật

Thuật tốn tốn Brute Force Brute Force

 ThuậtThuật tốntốn BruteBrute ForceForce soso sánhsánh mẫumẫu tìmtìm kiếmkiếm vớivới

văn

văn bản,bản, mỗimỗi lầnlần 11 kýký tự,tự, chocho đếnđến khikhi cáccác kýký tựtự

khơng

khơng khớpkhớp đượcđược tìmtìm thấythấy::

 ThuậtThuật tốntốn cĩcĩ thểthể đượcđược thiếtthiết kếkế saosao chocho nĩnĩ sẽsẽ dừngdừng

khi

khi gặpgặp sựsự xuấtxuất hiệnhiện đầuđầu tiêntiên củacủa mẫumẫu trongtrong texttext

hoặc

hoặc chocho đếnđến khikhi đãđã xétxét đếnđến cuốicuối texttext

Trang 3

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 5

Thuật

Thuật tốn tốn Brute Force Brute Force

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 6

Thuật

Thuật tốn tốn Brute Force Brute Force

Algorithm Brute Brute Force Force (P) (P);;

 Input Input:: String String mẫumẫu P P với với m m ký ký tự tự

 Ouput Ouput:: Vị Vị trí trí chuỗi chuỗi mẫu mẫu P P trong trong T T hoặc hoặc báo báo khơng khơng cĩ cĩ

 do

if

if (text (text letter letter == == pattern pattern letter) letter)

 so so sánh sánh text text letter letter kế kế với với pattern pattern letter letter kế kế

 else

 chuyển chuyển pattern pattern dịch dịch sang sang phải phải 1 1 letter letter

 until until (tìm (tìm thấy thấy tồn tồn bộ bộ pattern pattern hoặc hoặc đến đến cuối cuối text) text)

Trang 4

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 7

Thuật toán Brute Force

Thuật toán Brute Force

 Độ Độ phức phức tạp tạp của của thuật thuật tốn tốn Brute Brute Force Force:: Giả Giả

sử

sử kích kích thước thước của của mẫu mẫu là là M M ký ký tự tự và và text text cĩ cĩ

N

N ký ký tự tự

TrườngTrường hợphợp xấuxấu nhấtnhất:: soso sánhsánh mẫumẫu vớivới mọimọi

chuỗi

chuỗi concon chiềuchiều dàidài MM trongtrong texttext

TổngTổng sốsố phépphép soso sánhsánh:: M M (N (N M+ M+1 1))

Độ Độ phức phức tạp tạp trong trong trường trường hợp hợp xấu xấu nhất nhất ::

O(MN)

Trang 5

Dương

Dương Anh Anh Đức Đức – – Nhập Nhập môn môn Cấu Cấu trúc trúc Dữ Dữ liệu liệu và và Giải Giải thuật thuật 9

Thuật toán Brute Force

 Độ Độ phức phức tạp tạp của của thuật thuật tốn tốn Brute Brute Force Force:: Giả Giả sử sử

kích

kích thước thước của của mẫu mẫu là là M M ký ký tự tự và và text text cĩ cĩ N N ký ký

tự

Trường Trường hợp hợp tốt tốt nhất nhất 1 1:: mẫu mẫu xuất xuất hiện hiện ngay ngay đầu đầu

text

Độ Độ phức phức tạp tạp trong trong trường trường hợp hợp tốt tốt nhất nhất 1 1:: O(M)

Trường Trường hợp hợp tốt tốt nhất nhất 2 2:: mẫu khơng khơng xuất xuất hiện hiện

trong

trong text text

Độ Độ phức phức tạp tạp trong trong trường trường hợp hợp tốt tốt nhất nhất 2 2:: O(N)

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 10

Ví dụdụ, , vớivới M=5 M=5 tata cĩcĩ víví dụdụ sausau: :

Trang 6

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 11

Thuật

Thuật tốn tốn Rabin Rabin Karp Karp

n ThuậtThuật tốntốn Rabin Rabin Karp Karp tính tính các các giá giá trị trị băm băm

(hash

(hash value) value) của của mẫu mẫu tìm tìm kiếm kiếm và và của của chuỗi chuỗi

con

con M M ký ký tự tự cần cần so so sánh sánh trong trong văn văn bản bản

n NếuNếu cáccác giágiá trịtrị bămbăm khơngkhơng bằngbằng nhau,nhau, thuậtthuật tốntốn

sẽ

sẽ tínhtính giágiá trịtrị bămbăm chocho chuỗichuỗi concon MM kýký tựtự kếkế tiếptiếp

Thuật

Thuật tốn tốn Rabin Rabin Karp Karp

 NếuNếu cáccác giágiá trịtrị bămbăm bằngbằng nhau,nhau, thuậtthuật tốntốn thựcthực

hiện

hiện phépphép soso sánhsánh Brute Brute Force Force giữa giữa mẫu mẫu và

chuỗi này này

 TheoTheo cáchcách này,này, sẽsẽ chỉchỉ cĩcĩ mộtmột phépphép soso sánhsánh ứngứng vớivới

mỗi

mỗi chuỗichuỗi concon trongtrong vănvăn bản,bản, vàvà Brute Brute Force Force sẽ

chỉ

chỉ cần cần đến đến khi khi các các giá giá trị trị băm băm bằng bằng nhau nhau

Trang 7

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 13

Thuật

Thuật tốn tốn Rabin Rabin Karp Karp

 HãyHãy xemxem víví dụdụ dướidưới đâyđây đểđể rõrõ hơnhơn mộtmột chútchút::

GiáGiá trịtrị bămbăm củacủa “AAAAA”“AAAAA” làlà 100100

GiáGiá trịtrị bămbăm củacủa “AAAAH”“AAAAH” làlà 3737

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 14

Thuật toán Rabin

Thuật toán Rabin Karp Karp

Trang 8

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 15

Thuật toán Rabin

Thuật toán Rabin Karp Karp

 MẫuMẫu cócó chiềuchiều dàidài MM kýký tựtự

hash_p=giágiá trịtrị bămbăm củacủa mẫumẫu

hash_t=giágiá trịtrị bămbăm củacủa MM kýký tựtự đầuđầu trongtrong texttext

do

ifif (( hash_p ==== hash_t ))

So

So sánh sánh brute brute force force giữa giữa mẫu mẫu và và chuỗi chuỗi con con

hash_t == giá giá trị trị băm băm của của M M ký ký tự tự kế kế trong trong text text

until

until (kết (kết thúc thúc text text hoặc hoặc kết kết quả quả soso sánh sánh ==== true) true)

Thuật

Thuật tốn tốn Rabin Rabin Karp Karp

 NhữngNhững câucâu hỏihỏi chungchung củacủaRabin Rabin Karp Karp ::

 ChọnChọn hàmhàm bămbăm nàonào đểđể tínhtính giágiá trịtrị băm?băm?

 CĩCĩ tốntốn nhiềunhiều thờithời giangian đểđể “băm”“băm” cáccác chuỗichuỗi concon

hay

hay khơng?khơng?

 ĐãĐã kếtkết thúcthúc quáquá trìnhtrình tìmtìm kiếmkiếm chưa?chưa?

 ĐểĐể trảtrả lờilời nhữngnhững câucâu hỏihỏi trêntrên tata cầncần quayquay lạilại tốntốn

học

học mộtmột chútchút

Trang 9

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 17

Tốn

Tốn học học với với Rabin Rabin Karp Karp

 XemXem chuỗichuỗi kýký MM tựtự nhưnhư làlà mộtmột sốsố MM chữchữ sốsố trongtrong

cơ sốsố b ,, với với b là là số số ký ký tự tự trong trong bảng bảng chữ chữ cái cái

Chuỗi ký ký tự tự con con t[i t[i … … i+M i+M 1 1]] được được ánh ánh xạ xạ thành

 h(i)=t[i]× ×b b M M-1 +t[i+1]× ×b b M M-2 + +t[i+M + +t[i+M- -1] 1]

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 18

Tốn

Tốn học học với với Rabin Rabin Karp Karp

 Hơn Hơn nữa, nữa, cĩ cĩ x(i) x(i) ta ta cĩ cĩ thể thể tính tính x(i+ x(i+1 1)) cho cho

chuỗi

chuỗi con con kế kế tiếp tiếp t[i+ t[i+1 1 i+M] i+M] với với chi chi phí phí cố cố

định

định (O( (O(1 1)) )) như như sau sau::

 h(i+h(i+11)=t[i+)=t[i+11]]× ×b b M M-1 +t[i+ +t[i+2 2] ]× ×b b M M-

-2 + + +t[i+M] +t[i+M]

 h(i+h(i+11)=h()=h(ii))× ×b b Shift Shift left left 1 1 digit digit

 t[t[ii]]× ×b b M Trừ Trừ chữ chữ số số trái trái nhất

 +t[+t[i+Mi+M]] CộngchữsốCộngchữsố phảiphải nhấtnhất

Trang 10

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 19

Tốn

Tốn học học với với Rabin Rabin Karp Karp

 BằngBằng cáchcách này,này, tata khơngkhơng baobao giờgiờ thậtthật sựsự phảiphải tínhtính

một

một giágiá trịtrị mớimới ĐơnĐơn giản,giản, tata chỉchỉ phảiphải hiệuhiệu chỉnhchỉnh

giá

giá trịtrị sẵnsẵn cĩcĩ khikhi dịchdịch chuyểnchuyển sangsang phảiphải 11 kýký tựtự

Tốn

Tốn học học với với Rabin Rabin Karp Karp

n XétXét mộtmột víví dudu

¨¨ GiảGiả sửsử bộbộ chữchữ cáicái củacủa chúngchúng tata gồmgồm 1010 kýký tựtự [a,[a, b,b,

c,

c, d,d, e,e, f,f, g,g, h,h, ii,, j]j]

¨¨ GiảGiả sửsử “a”“a” tươngtương ứngứng vớivới 11,, “b”“b” tươngtương ứngứng vớivới 22,,

¨¨ GiáGiá trịtrị bămbăm củacủa chuỗichuỗi “cah”“cah” sẽsẽ làlà::

 3*100 + 1*10 + 8*1 = 318

Trang 11

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 21

Tốn

Tốn học học với với Rabin Rabin Karp Karp

 NếuNếu MM lớn,lớn, giágiá trịtrị kếtkết quảquả sẽsẽ rấtrất lớnlớn (~b(~bM)) ĐểĐể giảigiải

quyết

quyết vấnvấn đềđề này,này, tata sẽsẽ dùngdùng hàmhàmMOD ((% % trong trong

C)

C) để để chỉ chỉ lấy lấy phần phần dư dư sau sau khi khi chia chia cho cho một một số số

nguyên

nguyên tố tố p

 HàmHàm MODMOD đượcđược dùngdùng vìvì mộtmột sốsố tínhtính chấtchất sausau củacủa

nĩ::

[(x mod p)+(y mod p)]mod p = (

[(x mod p)+(y mod p)]mod p = (x+y x+y)mod p )mod p

(x mod p) mod p = x mod p

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 22

Tốn

Tốn học học với với Rabin Rabin Karp Karp

 Do Do đó đó::

h(

h(i i)=((t[ )=((t[i i] ]× ×b b M M-1 mod mod p)+(t[i+ p)+(t[i+1 1] ]× ×b b M M-2 mod mod p) p)

+ + +(t[i+M +(t[i+M- -1 1]mod ]mod p))mod p))mod p p h(i+

h(i+1 1)=(h( )=(h(i i))× ×b b modmod p p // // ShiftShift left left 1 1 digit digit

t[ t[i i]]× ×b bM mod mod p p// // TrừTrừ chữ chữ số số trái trái nhất

+ + t[ t[i+M i+M] ] mod mod p) p)// // CộngCộng chữ chữ số số phải phải nhất nhất

mod mod p p

Trang 12

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 23

Tốn

Tốn học học với với Rabin Rabin Karp Karp

 ĐộĐộ phứcphức tạptạp củacủa thuậtthuật tốntốnRabin Rabin Karp Karp

Nếu p làlà sốsố nguyênnguyên tốtố đủđủ lớn,lớn, giágiá trịtrị bămbăm nĩinĩi

chung

chung sẽsẽ kháckhác nhaunhau vớivới cáccác chuỗichuỗi kháckhác nhaunhau

TrongTrong trườngtrường hợphợp này,này, việcviệc tìmtìm kiếmkiếm tốntốn chichi

phí O(N),, trongtrong đĩđĩ NN làlà sốsố kýký tựtự cĩcĩ trongtrong texttext

TaTa luơnluơn cĩcĩ thểthể tìmtìm đượcđược víví dụdụ trongtrong đĩ,đĩ, trongtrong

trường

trường hợphợp xấuxấu nhất,nhất, chichi phíphí sẽsẽ làlà O(MN)) TuyTuy

nhiên,

nhiên, trườngtrường hợphợp nàynày cĩcĩ lẽlẽ sẽsẽ chỉchỉ xảyxảy rara khikhi p

quá

quá nhỏnhỏ

Thuật

Thuật tốn tốn Knuth Knuth Morris Morris Pratt Pratt

 ThuậtThuật tốntốn KnuthKnuth MorrisMorris PrattPratt (KMP(KMP)) kháckhác vớivới

thuật

thuật tốntốn brutebrute forceforceởở chỗchỗ nĩnĩ lưulưu lạilại thơngthơng tintin vềvề

những

những lầnlần soso sánhsánh trướctrước đểđể dùngdùng chocho lầnlần soso sánhsánh

kế

kế tiếptiếp

 MộtMột hàmhàm••failurefailure function(f)function(f) đượcđược dùngdùng đểđể tínhtính baobao

nhiêu

nhiêu thơngthơng tintin ởở bướcbước trướctrước cĩcĩ thểthể đượcđược dùngdùng lạilại

 ĐặcĐặc biệt,biệt, ff cĩ cĩ thể thể định định nghĩa nghĩa như như prefix prefix dài dài nhất nhất

của

của mẫu mẫu P[ P[0 0,, ,j] ,j] đồng đồng thời thời là là suffix suffix của của P[ P[1 1,, ,j] ,j]

(( chú chú ý, ý, khơng khơng phải phải của của P[ P[0 0,, ,j] ,j] ))

Trang 13

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 25

 VíVí dụdụ::

GiáGiá trịtrị củacủa KPMKPM failurefailure functionfunction::

 HàmHàm nàynày chocho biếtbiết baobao nhiêunhiêu kýký tựtự ởở đầuđầu củacủa

mẫu

mẫu tínhtính đếnđến nơinơi xảyxảy rara sựsự kháckhác biệtbiệt khớpkhớp vớivới

text

text

NếuNếu sựsự kháckhác biệtbiệt xảyxảy rara ởở vịvị trítrí 44,, tata sẽsẽ biếtbiết a,a,

b

b ởở vịvị trítrí 22,, 33 tươngtương ứngứng vớivới a,a, bb ởở vịvị trítrí 00,, 11

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 26

Thuật

Thuật tốn tốn so so khớp khớp KPM KPM((mãmã giảgiả):):

return ““KhongKhong co co P P trong trong T T””

Algorithm KMPMatc h (T,P)

 Input Input: : StringString T T (text) (text) với với n n ký ký tự tự và và mẫu mẫu P P với với m m ký ký tự tự

 Output Output: : Chỉ Chỉ số số đầu đầu của của chuỗi chuỗi con con đầu đầu tiên tiên trongtrong T T khớp khớp với với P, P, hoặc hoặc cho cho biết

P P khơng khơng phải phải là là chuỗi chuỗi con con của của T T

f ¬ KMPFailureFunction (P) (P); ; // //xây xây dựng dựng failure failure function function

i ¬ ¬ 0 0; ; j j ¬ ¬ 0 0; ;

 while i i < < n n do

 if P[j] P[j] = = T[ T[i i] ] then

 if j j = = m m - - 1 1 then

 return i i - - m m - - 1 1 //tìm được được một một chuỗi chuỗi con con khớp

i ¬ ¬ i i + + 1 1

j ¬ ¬ j j + + 1 1

 else else if if j j > > 0 0 then //khơng khớp, khớp, nhưng nhưng cịn cịn dữ dữ liệu liệu

j ¬ ¬ f(j f(j- -1) //j chỉ chỉ đến đến ngay ngay sau sau matching matching prefix prefix trong trong P P

i ¬ ¬ i i + + 1 1

return ““KhongKhong co co P P trong trong T T””

Trang 14

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 27

Thuật toán KPM failure function

ii ¬ ¬ ii + + 1 1

Algorithm KMPFailureFunction (P) (P); ;

 Input Input: :String mẫumẫu P P với với m m ký ký tự

 Output Output: :Failure Failure functionfunction ff ứng ứng với với P, P, sẽ sẽ ánh ánh xạ xạ jj với với chiều chiều dài dài của của longest longest

prefix của của P P là là suffix suffix của của P[ P[1 1,, ,j] ,j]

i ¬ ¬ 1 1; ; j j ¬ ¬ 0 0; ;

 while i £ £ m m-1 do

 if P[j] P[j] = = T[j] T[j] then // //ta ta cĩcĩ jj + + 1 1 ký ký tự tự khớp khớp nhau nhau

 f( f(i i) ) ¬¬ j j + + 1 1

i ¬ ¬ i i + + 1 1

j ¬ ¬ j j + + 1 1

 else else if if j j > > 0 0 then // // jj chỉ chỉ đến đến ngay ngay sau sau matching matching prefix prefix trong trong P P

j ¬ ¬ f(j f(j- -1)

 else // //khơng khơng khớp

 f( f(i i) ) ¬ ¬ 0 0

ii ¬ ¬ ii + + 1 1

Thuật

Thuật tốn tốn Knuth Knuth Morris Morris Pratt Pratt

Trang 15

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 29

 PhânPhân tíchtích độđộ phứcphức tạptạp củacủa thuậtthuật tốntốn

ĐịnhĐịnh nghĩanghĩa kk = = ii jj

TrongTrong mỗimỗi lầnlần lặplặp củacủa vịngvịng lặplặp whilewhile mộtmột trongtrong

3

3 điềuđiều sausau sẽsẽ xảyxảy rara::

 NếuNếu T[i]T[i] == P[j],P[j], thìthì ii tăng tăng lên lên 1 1,, jj cũng cũng vậy, vậy, kk

khơng khơng đổi đổi

 NếuNếu T[i]T[i] !=!= P[j]P[j] vàvà jj > > 0 0,, thì thì ii khơng khơng đổi đổi và và kk

tăng tăng lên lên ít ít nhất nhất 1 1,, vì vì kk thay thay đổi đổi trong trong khoảng khoảng từ

từ ii jj đến đến ii f(j f(j 1 1))

 NếuNếu T[i]!=P[j]T[i]!=P[j] vàvà jj = = 0 0,, thì thì ii tăng tăng lên lên 1 1 và và kk

tăng tăng lên lên 1 1 vì vì jj khơng khơng đổi đổi

Thuật

Thuật tốn tốn Knuth Knuth Morris Morris Pratt Pratt

Dương Anh Đức

Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 30

Thuật

Thuật tốn tốn Knuth Knuth Morris Morris Pratt Pratt

 NhưNhư vậy,vậy, mỗimỗi lầnlần lặp,lặp, ii hoặc hoặc k, k, tăng tăng lên lên ít ít nhất nhất 1 1

nên

nên số số lần lần lặp lặp tối tối đa đa là là 2 2n n

 DĩDĩ nhiênnhiên tata đangđang giảgiả thiếtthiết ff đã đã được được tính tính trước trước

 TuyTuy nhiên,nhiên, cáchcách tínhtính ff gần gần giống giống như như KMPMatch KMPMatch

nên

nên chi chi phí phí tính tính ff hồn hồn tồn tồn tương tương tự tự = = O(m) O(m)

 TổngTổng chichi phíphí:: O(O(n n + + m) m)

Ngày đăng: 13/07/2014, 22:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w