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
lượt xem 3
download
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!
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 - Đậu Ngọc Hà Dương
- 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
- 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 và giải thuật: Chương 3 - ĐH Công nghệ Đồng Nai
171 p | 158 | 32
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Thị Kim Chi
180 p | 142 | 19
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Các khái niệm cơ bản về Cấu trúc dữ liệu và giải thuật
20 p | 44 | 8
-
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 4 - ThS. Phạn Nguyệt Thuần
76 p | 76 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Ôn tập - ĐHKHTN
22 p | 123 | 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: Danh sách liên kết - TS. Ngô Hữu Dũng
50 p | 114 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 6 - Trường ĐH Văn Lang
39 p | 22 | 6
-
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 1 - ThS. Phạn Nguyệt Thuần
31 p | 83 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 1: Giới thiệu chung
40 p | 55 | 4
-
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: Chương 6 - Ngô Quang Thạch
41 p | 105 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các khái niệm cơ bản
23 p | 46 | 3
-
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 cơ bản - ĐHKHTN
38 p | 86 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật - ĐH Thương Mại
0 p | 68 | 2
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7
26 p | 11 | 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