1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Cấu trúc dữ liệu và giải thuật: Đối sánh chuỗi - Đậu Ngọc Hà Dương

41 51 0

Đ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

Tiêu đề Đối sánh chuỗi
Người hướng dẫn Đậu Ngọc Hà Dương
Trường học Hcmus
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại bài giảng
Năm xuất bản 2010
Định dạng
Số trang 41
Dung lượng 834,09 KB

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

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật: Đối sánh chuỗi - Đậu Ngọc Hà Dương có nội dung trình bày về đối sánh chuỗi, thuật toán Brute-Force, thuật toán Morris-Pratt, cải tiến với Knuth-Morris-Pratt,... Mời các bạn cùng tham khảo!

Trang 1

C u trúc d  li u và gi i thu t ấ ữ ệ ả ậ

ĐỐI SÁNH CHUỖI

Giảng viên:

Đậu Ngọc Hà Dương

Trang 2

Nội dung trình bày

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ2

Trang 5

Mẫu cần tìm: P (chiều dài m).

Văn bản: T (chiều dài n).

 P và T có cùng tập hữu hạn ký tự ∑ (∑ = {0, 1};

∑={A, ,Z},…)

 m ≤ n

Trang 6

Giới thiệu

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

6

 Đ i sánh chu i: ố ỗ

 Bằng cách lần lượt dịch chuyển (cửa sổ) P trên T.

P tồn tại trên T tại vị trí bắt đầu là i (0 ≤ i ≤ n – m) nếu

T[i + j] = P[j] với mọi 0 ≤ j ≤ m - 1

 Ví d : ụ

P = abbaba

T = ababaabbabaa

=> i = 5

Trang 8

Thuật toán Brute-Force

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 9

Ý tưởng

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

 L n l ầ ượ t ki m tra đi u ki n P[0… ể ề ệ m­1] = T[i… i+m­1] t i m i v  trí có th  c a  ạ ọ ị ể ủ i.

 Ví d   ụ

Tìm kiếm P = aab trong T = acaabc

9

Trang 11

Đánh giá

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

11

 Tr ườ ng h p t t nh t – không tìm th y: O(n) ợ ố ấ ấ

 Tr ườ ng h p x u nh t – không tìm th y: O(n*m) ợ ấ ấ ấ

 Tr ườ ng h p trung bình: O(n+m) ợ

Trang 12

Đặc điểm chính

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

12

 Không c n thao tác ti n x  lý trên P ầ ề ử

 Luôn luôn d ch chuy n m u (c a s ) sang ph i  ị ể ẫ ử ổ ả

Trang 13

Thuật toán Morris-Pratt

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 14

Đặt vấn đề

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

14

 Đi m h n ch  c a thu t toán Brute­Force: ể ạ ế ủ ậ

 Không ghi nhớ được thông tin đã trùng khớp (trước) khi xảy ra tình trạng không so khớp

 Phải so sánh lại từ đầu (trên P) trong tất cả trường hợp

Trang 16

Đề xuất của thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 17

Đề xuất của thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

17

 Gi  s : ả ử

T tại vị trí i+j).

 T[i+j] != P[j] => không so khớp

Trang 18

Đề xuất của thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

18

 Tìm:

Vị trí mới i1 (trên T) và j1 (trên P) sao cho

i+j = i1+j1 (vị trí đang xem xét)

v =T[i1 … i1+j1–1] là đoạn so khớp mới giữa P và T.

 Khi đó:

Đoạn dịch chuyển cửa sổ: j – j1.(do j1 < j)

Có thể tìm i1 dựa trên j1.

Trang 19

Đề xuất của thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 30

Sử dụng NEXT trong thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

30

 M c tiêu : ụ

Xác định vị trí mới i1 (trên T) và j1 (trên P) sao cho

i+j = i1+j1 (vị trí đang xem xét)

v =T[i1 … i1+j1–1] là đoạn so khớp mới giữa P và T.

Đã có j1 = NEXT[j]

 V y,  ậ i1 = i + j – NEXT[j]

Trang 31

Sử dụng NEXT trong thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 32

Sử dụng NEXT trong thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 33

Sử dụng NEXT trong thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 34

Sử dụng NEXT trong thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 35

Sử dụng NEXT trong thuật toán

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Trang 37

Thuật toán Knuth-Morris-Pratt

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

37

Trang 38

Ý tưởng

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

 Thu t toán Knuth­Morris­Pratt c i ti n Morris­ ậ ả ế

Pratt b ng cách ằ

 bổ sung thêm điều kiện a ≠ c (vì nếu a =c sẽ không so khớp ngay sau khi dịch chuyển).

38

Trang 39

Ý tưởng

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

39

 Thay đ i cách tính b ng NEXT: ổ ả

 Nếu p[i]p[j] thì NEXT[i] = j

 Ngược lại NEXT[i] = NEXT[j]

 Thao tác tìm ki m v n không thay đ i ế ẫ ổ

Trang 41

Hỏi và Đáp

C u trúc d  li u và gi i thu t ­ HCMUS 2010ấ ữ ệ ả ậ

Ngày đăng: 11/09/2021, 13:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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