Tải bản đầy đủ (.pptx) (12 trang)

Thuật toán Boyer Moore

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (411.33 KB, 12 trang )

String matching
Boyer Moore Algorithm


Exact matching: slightly less naive algorithm

P: word
T: There would have been a time for such a word
word
w, o trùng lặp, sau đấy không trùng (r ≠ u)
Khi u không tìm được trong P thì ta có thể bỏ qua 2 lần dịch chuyển
T: There would have been a time for such a word
word
word

skip!

word
word

skip!
2


Boyer-Moore

Sử dụng kiến thức có được từ so sánh các ký tự để bỏ qua việc sắp xếp về sau mà chắc chắn
sẽ không phù hợp dựa trên các luật:

1.


“Bad character rule”: Nếu không trùng lặp, sử dụng kiến thức về ký tự văn bản không
phù hợp để bỏ qua các sắp xếp

2.

“Good suffix rule”: Nếu một số ký tự trùng lặp, sử dụng kiến thức về các ký tự được
khớp để bỏ qua các sắp xếp

3.

For longer skips: Thử căn chỉnh theo một hướng, sau đó thử so sánh các ký tự theo
hướng đối diện

3


Boyer-Moore: Bad character rule

Khi không phù hợp, đặt b là các ký tự không khớp trong T. Bỏ qua các sắp xếp cho đến khi
(a) b khớp ngược với nó trong P, hoặc (b) P di chuyển qua b

4


Boyer-Moore: Bad character rule

5


Boyer-Moore: Bad character rule preprocessing


• Khi đã biết P, ta xây dựng một |Σ|x n bảng. Đặt b là ký tự trong T không khớp nhau và i là
sai lệch của việc không khớp trong P. Số lần bỏ qua được cho bởi phần tử trong hàng thứ
b và cột thứ i

6


Boyer-Moore: Good suffix rule
Cho t là chuỗi con của T kết hợp với một hậu tố của P. Trường hợp (a): bỏ qua các dịch chuyển cho đến khi t
khớp với các ký tự đối diện trong P, hoặc trường hợp (b) tiền tố của P khớp với một hậu tố của t, hoặc
trường hợp (c) P di chuyển qua t, tùy điều nào xảy ra trước tiên

7

Case (c)


Boyer-Moore: Good suffix rule


Giống như Bad suffix rule, số lần bỏ qua có thể sử dụng Good suffix rule có thể được tính toán trước vào
một vài bảng.



Quy tắc ở trang trước đó là yếu tố hậu tố tốt; cũng có một nguyên tắc hậu tố mạnh mẽ tốt




Với Good suffix rule (và những sửa đổi nhỏ khác), Boyer-Moore cho độ phức tạp là O (m) trong trường
hợp xấu nhất.

8


Boyer-Moore: Kết hợp lại


Sau mỗi lần dịch chuyển, sử dụng Bad character rule hay good suffix rule tuỳ trường hợp nào bỏ qua được
nhiều ký tự hơn.

Bad character rule: Khi không khớp, đặt b là các ký tự không

Good suffix rule: Cho t là chuỗi con của T kết hợp với một hậu tố của P. Bỏ qua

khớp trong T. Bỏ qua các sắp xếp cho đến khi b khớp ngược

các liên kết cho đến khi (a) t phù hợp với các ký tự đối diện trong P, hoặc (b) tiền tố

với nó trong P (a), hoặc P dịch chuyển qua b (b)

của P khớp với một hậu tố của t, hoặc (c) P di chuyển qua t, tùy điều kiện nào xảy
ra trước.

9


Boyer-Moore: Kết hợp lại




Ở đây, T có 29 ký tự, ta đã dịch chuyển qua 15 ký tự, 11 ký tự không cần duyệt
10


Boyer-Moore: Trường hợp xấu nhất và tốt nhất



Xấu nhất: O(m)



Khi đó, thời gian là floor(m/n)

Tốt nhất: Khi mọi so sánh đều không khớp và mọi trường hợp đều là trong trường hợp Bad character
Rule và đều bỏ qua toàn bộ P (giống step 1 ở slide trước)

11


So sánh Boyer-Moore

12



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×