1. Trang chủ
  2. » Công Nghệ Thông Tin

Thuật toán Boyer Moore

12 488 1

Đ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 12
Dung lượng 410,4 KB

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

Nội dung

Trình bày về giải thuật Boyer Moore trong Cấu trúc dữ liệu giải thuật, Phân tích đánh giá thuật toán và một số lĩnh vực tương tự. Xử lý bài toán tìm chuỗi con chung lớn nhất. Trình bày về giải thuật Boyer Moore trong Cấu trúc dữ liệu giải thuật, Phân tích đánh giá thuật toán và một số lĩnh vực tương tự. Xử lý bài toán tìm chuỗi con chung lớn nhất.

Trang 1

String matching

Boyer Moore Algorithm

Trang 2

Exact matching: slightly

less naive algorithm

P: word

T: There wo u ld have been a time for such a 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 wo u ld have been a time for such a word

wo r d

wo r d

word word

skip!

skip!

Trang 3

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

Trang 4

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

Trang 5

Boyer-Moore: Bad

character rule

Trang 6

Boyer-Moore: Bad

character rule

preprocessing

• Khi đã biết P, ta xây dựng một |Σ|x n bảng Đặt b là Σ|Σ|x n bảng Đặt b là 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

Trang 7

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

Boyer-Moore: Good suffix

rule

7

Trang 8

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

Trang 9

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 khớp

trong T Bỏ qua các sắp xếp cho đến

khi b khớp ngược với nó trong P (a),

hoặc P dịch chuyển qua b (b)

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 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ố 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.

Trang 10

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ự

Trang 11

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

• Xấu nhất: O(m)

• 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)

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

Trang 12

So sánh Boyer-Moore

Ngày đăng: 20/12/2017, 11:19

TỪ KHÓA LIÊN QUAN

w