Bài giảng Cấu trúc dữ liệu và giải thuật: Đối sánh chuỗi
lượt xem 5
download
Bài giảng "Cấu trúc dữ liệu và giải thuật: Đối sánh chuỗi" được biên soạn với các nội dung chính sau đây: Đố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 bài giảng!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Đối sánh chuỗi
- Cấu trúc dữ liệu và giải thuật ĐỐI SÁNH CHUỖI Giảng viên: Văn Chí Nam
- Nội dung trình bày 2 Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Giới thiệu 3 Đối sánh chuỗi Từ khóa: String matching, String searching, Pattern searching, Text Searching Một trong những thuật toán quan trọng và có ứng dụng rộng rãi. Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Giới thiệu 4 Ứng dụng của đối sánh chuỗi: Máy tìm kiếm Trình soạn thảo văn bản Trình duyệt web Sinh học phân tử (Tìm mẫu trong dãy DNA). .. Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Giới thiệu 5 Mục tiêu: Kiểm tra sự tồn tại của một chuỗi ký tự (mẫu, pattern) trong một chuỗi ký tự có kích thước lớn hơn nhiều (văn bản, text). Nếu tồn tại, trả về một (hoặc nhiều) vị trí xuất hiện. Quy ước: Mẫu cần tìm: P (chiều dài m). Văn bản: T (chiều dài n). Cấu trúc d ữ liệu và giải thuật HCMUS 2010 P và T có cùng tập hữu hạn ký tự ∑. (∑ = {0, 1};
- Giới thiệu 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 => C i = 5ữ liệu và giải thuật HCMUS 2010 ấu trúc d
- Giới thiệu 7 Các thuật toán tiêu biểu: Brute Force Karp-Rabin Morris-Pratt Knuth-Morris-Pratt Boyer-Moore … Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Thuật toán Brute-Force Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Ý tưởng 9 Lần lượt kiểm tra điều kiện P[0…m1] = T[i… i+m1] tại mọi vị trí có thể của i. Ví dụ Tìm kiếm P = aab trong T = acaabc Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Cài đặt 10 bruteForceMatcher(T, P) n ← length[T] m ← length[P] for i ← 0 to n - m if P[0..m-1] = T[i…i+m-1] return i Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đánh giá 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). Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đặc điểm chính 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 một vị trí. Thao tác so sánh có thể thực hiện theo bất kỳ chiều nào. Trườững h ấu trúc d C ợp x liệu và gi ấậu nh ải thu ất: O((nm+1)*m). t HCMUS 2010
- Thuật toán Morris-Pratt Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đặt vấn đề 14 Điểm hạn chế của thuật toán BruteForce: 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 Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đặt vấn đề 15 Ví dụ: T: 10101011101001; P: 10100 Brute Force: s = 0, j = 4, T[s+j] != P[j] => s = 1, j = 0 T : 10101011101001 P: 10100 Cách khác? s = 0, j = 4, T[s+j] != P[j] => s = 2, j = 2 Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đề xuất của thuật toán 16 Ghi nhận lại những phần của T đã trùng với P trước đó. Cố gắng tăng số bước dịch chuyển P trên T (thay vì 01 đơn vị). Cố gắng bỏ qua một số bước so sánh giữa P và T tại vị trí mới (thay vì j=0, gán j bằng một số thích hợp). Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đề xuất của thuật toán 17 Giả sử: i là vị trí bắt đầu sự đối sánh (trên T). j là vị trí đang so sánh (trên P). (Ký tự tương ứng trên T tại vị trí i+j). T[i+j] != P[j] => không so khớp Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đề xuất của thuật toán 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. Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Đề xuất của thuật toán 19 Vấn đề: Tìm giá trị j1 dựa trên j. Cách thức: Tính sẵn các giá trị của j1 ứng với mỗi giá trị j (dựa trên P). Câu hỏi: Có thể làm được không? Tại sao? Cấu trúc dữ liệu và giải thuật HCMUS 2010
- Xây dựng bảng NEXT 20 Bảng NEXT: Bảng chứa các giá trị j1 ứng với các giá trị j. Ví dụ: j 0 1 2 3 4 5 6 j1 -1 0 1 1 0 3 2 Cấu trúc dữ liệu và giải thuật HCMUS 2010
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 175 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 81 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 59 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 159 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Chương 1: Tổng quan về giải thuật và cấu trúc dữ liệu
10 p | 66 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn