intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Cấu trúc dữ liệu và giải thuật (phần 12)

Chia sẻ: Nguyen Kien | Ngày: | Loại File: PDF | Số trang:10

83
lượt xem
29
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong phân 12 của tài liệu này các bạn sẽ bắt đầu làm quen với một số phương pháp tìm kiếm trên chuỗi nhanh hơn các phương pháp truyền thống trược đây như KMP ...

Chủ đề:
Lưu

Nội dung Text: Cấu trúc dữ liệu và giải thuật (phần 12)

  1. Please purchase a personal license. personal
  2. THU T TOÁN KNUTT- THU TO MORRIS-PRATT
  3. String matching String Bài toán: - Tìm v trí xu t hi n u tiên c a chu i con trong 1 o n text - Tìm v trí xu t hi n ti p theo b ng cách thay i giá tr u c a o n text - Thu t toán thông thư ng: - So sánh kí t u c a o n text và kí t u c a chu i con - N u trùng so sánh kí t ti p theo - N u khác so sánh tăng kí t o n text - Quá trình ti p di n cho n khi h t chu i con
  4. String matching String Thu t toán: isub= 0; itext = 0; //ví tr hi n t i c a chu i và o n text starttext=0; //v trí b t u while (itext
  5. String matching String ánh giá thu t toán: - m – strlength c a substring - n - strlength c a o n text S l n so sánh trong trư ng h p x u nh t: m*(t-m+1) Ví d : substring (AA….AAB), text(AA…AAA) Substring có m-1 A, text có n A Dn n trư ng h p x u nh t
  6. Knuth-Morris-Pratt Knuth Ý tư ng: d mô t ,ta coi các xâu ánh s t 1. – – Xâu W g i là ti n t (prefix) c a xâu X n u X có d ng WY (Y là 1 xâu nào ó) – VD: X=“qetyughjk” W=“qety” – Xâu W g i là h u t (suffix) c a xâu X n u X có d ng YW (Y là 1 xâu nào ó) – VD: X=”qetyughjk” W=”yughjk” – N u có thêm W# X thì W g i là prefix(hay suffic) th c s c a X.
  7. Knuth-Morris-Pratt Knuth Ý tư ng: – Hàm int Prefix(int q): tr dài c a prefix dài nh t c a P[1..m] ng th i là suffix th c s c a P[1..q]. VD: P=“abcabcd” Prefix(1)=0 P=“abcabcd” Prefix(2)=0 P=“abcabcd” Prefix(3)=0 P=“abcabcd” Prefix(4)=1 P=“abcabcd” Prefix(5)=2 P=“abcabcd” Prefix(6)=3 P=“abcabcd” Prefix(7)=0
  8. Knuth-Morris-Pratt Knuth Ví d : 1. P=”abc abc” Prefix(6)=3. 2. P=”abcababcabc” Prefix(11)=3 3. P=”abcabcabcaa” Prefix(11)=1 4. P=”abcababcabd” Prefix(11)=0
  9. Knuth-Morris-Pratt Knuth Thu t toán tính Prefix: PI [1]= 0 ; k=0; for (q=2;q0 && P[k+1] P[q]) k=PI[k]; if(P[k+1]==P[q]) k++; PI[q]=k; }
  10. Knuth-Morris-Pratt Knuth Thu t toán tính KMP: – Xác nh dài q c a xâu v a là prefix c a P,v a là suffix c a T[1..i] v i i = 1->n. – N u q=m thì v trí kh p chính là i-m+1. Cách tính q g n như cách tính Prefix. q=0 for (i=1;i0 && P[q+1]T[i]) q=PI[q]; if (P[q+1]==T[i]) q++; if (q==m) {printf(“%d”, i-m+1);q=PI[q]} }
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2