Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
428,45 KB
Nội dung
StringsandStringsandPatternMatchingPatternMatching Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 2 2 StringsandStringsandPatternMatchingPatternMatching ̈ ̈ Brute Force, Brute Force, Rabin Rabin - - Karp, Karp, Knuth Knuth - - Morris Morris - - Pratt Pratt ̈ ̈ Regular Expressions Regular Expressions Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 3 3 Bài toán tìm kiếm chuỗi ký tự Bài toán tìm kiếm chuỗi ký tự ̈ ̈ Đ Đ o o á á i t i t ư ư ơ ơ ï ï ng cu ng cu û û a ba a ba ø ø i toa i toa ù ù n n string searching string searching la la ø ø t t ì ì m m kie kie á á m vò tr m vò tr í í cu cu û û a mo a mo ä ä t t mẫu văn ba mẫu văn ba û û n n (text pattern) (text pattern) trong no trong no ä ä i i dung dung mo mo ä ä t văn ba t văn ba û û n lơ n lơ ù ù n hơn n hơn ( ( mo mo ä ä t câu t câu , , mo mo ä ä t t đ đ oa oa ï ï n n hay hay mo mo ä ä t quye t quye å å n sa n sa ù ù ch ch , , … … ) ) ̈ ̈ Cũng nh Cũng nh ư ư pha pha à à n lơ n lơ ù ù n ca n ca ù ù c thua c thua ä ä t toa t toa ù ù n kha n kha ù ù c c , , quan quan tâm ch tâm ch í í nh cu nh cu û û a a string searching string searching la la ø ø to to á á c c đ đ o o ä ä va va ø ø hie hie ä ä u u qua qua û û . . ̈ ̈ Co Co ù ù nhie nhie à à u thua u thua ä ä t toa t toa ù ù n t n t ì ì m kiễm chuỗi ky m kiễm chuỗi ky ù ù t t ự ự kha kha ù ù c c nhau nhau . . Tuy nhiên Tuy nhiên , , chu chu ù ù ng ta sẽ ch ng ta sẽ ch ỉ ỉ kha kha û û o sa o sa ù ù t ba t ba thua thua ä ä t toa t toa ù ù n la n la ø ø : : Brute Force Brute Force , , Rabin Rabin - - Karp Karp va va ø ø Knuth Knuth - - Morris Morris - - Pratt. Pratt. Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 4 4 Thuật toán Thuật toán Brute Force Brute Force ̈ ̈ Thua Thua ä ä t toa t toa ù ù n n Brute Force Brute Force so so sa sa ù ù nh mẫu t nh mẫu t ì ì m kie m kie á á m m vơ vơ ù ù i văn ba i văn ba û û n n , , mỗi la mỗi la à à n n 1 1 ky ky ù ù t t ự ự , , cho cho đ đ e e á á n khi ca n khi ca ù ù c ky c ky ù ù t t ự ự không khơ không khơ ù ù p p đư đư ơ ơ ï ï c t c t ì ì m tha m tha á á y y : : ̈ ̈ Thua Thua ä ä t toa t toa ù ù n co n co ù ù the the å å đư đư ơ ơ ï ï c thie c thie á á t ke t ke á á sao cho no sao cho no ù ù sẽ sẽ d d ừ ừ ng khi ga ng khi ga ë ë p s p s ự ự xua xua á á t hie t hie ä ä n n đ đ a a à à u tiên cu u tiên cu û û a mẫu a mẫu trong trong text text hoa hoa ë ë c cho c cho đ đ e e á á n khi n khi đ đ ã xe ã xe ù ù t t đ đ e e á á n cuo n cuo á á i i text. text. Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 5 5 Thuật toán Thuật toán Brute Force Brute Force Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 6 6 Thuật toán Thuật toán Brute Force Brute Force Algorithm Algorithm Brute Force Brute Force (P); (P); Input: Input: String String mẫu mẫu P P vơ vơ ù ù i i m m ky ky ù ù t t ự ự Ouput Ouput : : Vò tr Vò tr í í chuỗi mẫu chuỗi mẫu P P trong trong T T hoa hoa ë ë c ba c ba ù ù o không co o không co ù ù do do if (text letter == pattern letter) if (text letter == pattern letter) so so sa sa ù ù nh nh text letter text letter ke ke á á vơ vơ ù ù i i pattern letter pattern letter ke ke á á else else chuye chuye å å n n patternpattern dòch dòch sang sang pha pha û û i i 1 letter 1 letter until ( until ( t t ì ì m tha m tha á á y toa y toa ø ø n bo n bo ä ä patternpattern hoa hoa ë ë c c đ đ e e á á n cuo n cuo á á i i text) text) Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 7 7 Thuật toán Thuật toán Brute Force Brute Force Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 8 8 Thuật toán Thuật toán Brute Force Brute Force ̈ ̈ Đ Đ o o ä ä ph ph ứ ứ c ta c ta ï ï p cu p cu û û a thua a thua ä ä t toa t toa ù ù n n Brute Force: Brute Force: Gia Gia û û s s ử ử k k í í ch th ch th ư ư ơ ơ ù ù c cu c cu û û a mẫu la a mẫu la ø ø M M ky ky ù ù t t ự ự va va ø ø text text co co ù ù N N ky ky ù ù t t ự ự ̊ ̊ Tr Tr ư ư ơ ơ ø ø ng hơ ng hơ ï ï p xa p xa á á u nha u nha á á t t : so : so sa sa ù ù nh mẫu vơ nh mẫu vơ ù ù i mo i mo ï ï i chuỗi i chuỗi con con chie chie à à u da u da ø ø i i M M trong trong text text ̊ ̊ To To å å ng so ng so á á phe phe ù ù p p so so sa sa ù ù nh nh : : M (N M (N - - M+1) M+1) ̊ ̊ Đ Đ o o ä ä ph ph ứ ứ c ta c ta ï ï p trong tr p trong tr ư ư ơ ơ ø ø ng hơ ng hơ ï ï p xa p xa á á u nha u nha á á t t : : O(MN) O(MN) Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 9 9 Thuật toán Thuật toán Brute Force Brute Force ̈ ̈ Đ Đ o o ä ä ph ph ứ ứ c ta c ta ï ï p cu p cu û û a thua a thua ä ä t toa t toa ù ù n n Brute Force: Brute Force: Gia Gia û û s s ử ử k k í í ch th ch th ư ư ơ ơ ù ù c cu c cu û û a mẫu la a mẫu la ø ø M M ky ky ù ù t t ự ự va va ø ø text text co co ù ù N N ky ky ù ù t t ự ự ̊ ̊ Tr Tr ư ư ơ ơ ø ø ng hơ ng hơ ï ï p to p to á á t nha t nha á á t t 1: 1: mẫu xua mẫu xua á á t hie t hie ä ä n ngay n ngay đ đ a a à à u u text text ̊ ̊ Đ Đ o o ä ä ph ph ứ ứ c ta c ta ï ï p trong tr p trong tr ư ư ơ ơ ø ø ng hơ ng hơ ï ï p to p to á á t nha t nha á á t t 1: 1: O(M) O(M) ̊ ̊ Tr Tr ư ư ơ ơ ø ø ng hơ ng hơ ï ï p to p to á á t nha t nha á á t t 2: 2: mẫu không xua mẫu không xua á á t hie t hie ä ä n trong n trong text text ̊ ̊ Đ Đ o o ä ä ph ph ứ ứ c ta c ta ï ï p trong tr p trong tr ư ư ơ ơ ø ø ng hơ ng hơ ï ï p to p to á á t nha t nha á á t t 2: 2: O(N) O(N) Dương Anh Đức Dương Anh Đức – – Nhập môn Cấu trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 10 10 V V í í du du ï ï , , vơ vơ ù ù i i M=5 M=5 ta co ta co ù ù v v í í du du ï ï sau sau : : . Strings and Strings and Pattern Matching Pattern Matching Dương Anh Đức Dương Anh. trúc Dữ liệu và Giải thuật Nhập môn Cấu trúc Dữ liệu và Giải thuật 2 2 Strings and Strings and Pattern Matching Pattern Matching ̈ ̈ Brute Force, Brute Force,