Nghiên cứu thuật toán knuth morris pratt và ứng dụng

76 24 0
Nghiên cứu thuật toán knuth morris pratt và ứng dụng

Đ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

-1- ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỖ QUỲNH ANH NGHIÊN CỨU THUẬT TOÁN KNUTH-MORRIS-PRATT VÀ ỨNG DỤNG Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS: ĐỖ TRUNG TUẤN Thái Nguyên – 2014 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -2- MỤC LỤC MỤC LỤC .1 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT DANH MỤC CÁC HÌNH VẼ VÀ CÁC BẢNG MỞ ĐẦU CHƢƠNG SO KHỚP CHUỖI 10 1.1 Khái niệm so khớp chuỗi 10 1.2 Lịch sử phát triển 11 1.3 Các cách tiếp cận 12 1.4 Ứng dụng so khớp chuỗi 12 1.5 Các dạng so khớp chuỗi .13 1.5.1 So khớp đơn mẫu 13 1.5.2 So khớp đa mẫu 14 1.5.3 So mẫu mở rộng 15 1.5.4 So khớp xác 16 1.5.5 So khớp xấp xỉ 17 1.5.5.1 Phát biểu toán 17 1.5.5.2 Các tiếp cận so khớp xấp xỉ 18 1.5.5.3 Độ tƣơng tự hai xâu .19 1.5 Một số thuật toán so mẫu 20 1.5.1 Thuật toán Brute Force .20 1.5.2 Thuật toán Karp-Rabin .21 1.5.3 Thuật toán BM ( Boyer- Moor) 24 1.5.4 Các thuật toán khác .27 1.6 Khớp chuỗi với otomat hữu hạn 28 1.6.1 Otomat hữu hạn 28 1.6.1.1 Ơtơmát hữu hạn đơn định DFA 29 1.6.1.2 Ơtơmát hữu hạn khơng đơn định NFA 33 1.6.2 Otomat khớp chuỗi 36 1.6.2.1 Giới thiệu 36 1.6.2.2 Thuật toán xây dựng Otomat so khớp chuỗi .38 1.7 Kết luận chƣơng 40 CHƢƠNG THUẬT TOÁN SO KHỚP CHUỖI KNUTH-MORRIS-PRATT 41 2.1 Thuật toán KMP 41 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -32.1.1 Giới thiệu thuật toán 41 2.1.2 Bảng so sánh phần .45 2.1.3 Độ phức tạp thuật toán KMP 47 2.2 Thuật toán KMP mờ 48 2.2.1 Otomat so mẫu 48 2.2.2 Thuật toán 49 2.2.2.1 Thuật toán tạo lập TFuzz 49 2.2.2.2 Thuật tốn tìm kiếm mẫu dựa vào bảng TFuzz 51 2.2.3 So sánh KMP thuật toán KMP mờ 52 2.3 Thuật toán KMP - BM mờ 53 2.3.1 Ý tƣởng thuật toán 53 2.4.2 Otomat mờ so mẫu 55 2.3.2.1 Giới thiệu 55 2.3.2.2 Hoạt động otomat mờ so mẫu 55 2.3.3 Thuật tốn tìm kiếm 56 2.4 Kết luận chƣơng 57 CHƢƠNG ỨNG DỤNG THUẬT TỐN KMP TRONG TÌM KIẾM THƠNG TIN TRÊN VĂN BẢN 58 3.1 Bài tốn tìm kiếm mẫu văn 58 3.1.1 Tìm kiếm mẫu 58 3.1.2 Tìm kiếm thơng tin 59 3.1.2.1 Giới thiệu 59 3.1.2.2 Các mơ hình tìm kiếm thơng tin thƣờng sử dụng 61 3.2 Mã nguồn mở Lucene 64 3.2.1 Giới thiệu 64 3.2.2 Các bƣớc sử dụng Lucene 66 3.3 Ứng dụng tìm kiếm thơng tin văn 67 3.4 Cài đặt chƣơng trình thử nghiệm .68 3.4.1 Giải pháp, công nghệ sử dụng 68 3.4.2 Nội dung chƣơng trình 68 3.4.3 Kết thực nghiệm 71 3.4.3.1 Giao diện chƣơng trình 72 3.4.3.2 Kết thử nghiệm chƣơng trình tìm kiếm với từ khóa “Văn bản” 72 3.5 Kết luận chƣơng 73 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -4KẾT LUẬN 74 TÀI LIỆU THAM KHẢO 76 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -5- DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT BM Thuật toán Boyer - Moore DFA Deterministic Finite Automata - Ơtơmát hữu hạn đơn định DOC Document FA Finite Automata - Ơtơmát hữu hạn HTML HyperText Markup Language IDF Inverse document frequency - Tần suất tài liệu ngƣợc KMP KNUTH-MORRIS-PRATT LAN Local area network NFA Nondeterministic Finite Automata - Ơtơmát hữu hạn khơng đơn định TF Term frequency - Tần suất từ Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -6- DANH MỤC CÁC HÌNH VẼ VÀ CÁC BẢNG Hình 1.1 Sơ đồ chuyển DFA 30 Hình 1.2 Mơ tả DFA 31 Bảng 1.1 Ví dụ hàm chuyển δ DFA 32 Hình 1.3 Sơ đồ NFA 34 Hình 1.4 Di chuyển chuỗi 35 Bảng 1.2 Ví dụ hàm chuyển trạng thái δ NFA 35 Hình1.5 Ví dụ so khớp chuỗi 37 Hình 1.6 Ví dụ otomat so khớp chuỗi 38 Bảng 2.1 Bảng so sánh phần 46 Bảng 2.2 Thí dụ khác 46 Bảng 2.3 Trƣờng hợp mẫu xấu với thuật toán KMP 47 Bảng 2.4 Bảng next 51 Bảng 2.5 Bảng TFuzz 51 Bảng 2.6 Minh họa thí dụ 52 Hình 2.1 Dịch chuyển trỏ mẫu 52 Bảng 2.7 Kết tìm xuất mẫu P tệp S theo KMP tiếp cận mờ 53 Hình 2.2 Ý tƣởng chung thuật toán KMP-BM mờ 55 Hình 3.1 Mơ hình biểu diễn so sánh thông tin 60 Hình 3.2 Mơ hình khơng gian vec tơ 62 Bảng 3.1 Tính điểm số 64 Hình 3.3 Mơ hình đánh mục Lucene 65 Hình 3.4 Mơ hình ứng dụng tìm kiếm thơng tin văn 68 Hình 3.5 Giao diện chƣơng trình 72 Hình 3.6 Kết tìm kiếm chƣơng trình 73 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -7- MỞ ĐẦU Lý chọn đề tài Máy tính ngày đƣợc sử dụng hầu hết lĩnh vực góp phần quan trọng vào việc thúc đẩy phát triển kinh tế, xã hội, khoa học kỹ thuật, … Máy tính đời nhằm phục vụ cho mục đích định ngƣời Với tất xử lý máy tính để lấy thơng tin hữu ích q trình xử lí vấn đề đặc biệt quan trọng tìm kiếm thơng tin với khối lƣợng lớn, độ xác cao, thời gian nhanh Cùng với phổ biến công nghệ thông tin, số lƣợng tài liệu điện tử gia tăng ngày Đến nay, số lƣợng tài liệu đƣợc lƣu trữ lên đến hàng tỷ trang Trong đó, nhu cầu khai thác kho tài liệu khổng lồ để tìm kiếm thông tin cần thiết nhu cầu thƣờng ngày thiết thực ngƣời sử dụng Tuy nhiên, khó khăn ngƣời gặp phải việc khai thác thơng tin khả tìm xác thơng tin họ cần kho tài liệu Để trợ giúp cơng việc này, hệ thống tìm kiếm lần lƣợt đƣợc phát triển nhằm phục vụ cho nhu cầu tìm kiếm ngƣời sử dụng Những hệ thống tìm kiếm bắt đầu phát triển đƣa vào ứng dụng, phổ biến hệ thống tìm kiếm theo từ khóa Nhiều hệ thống hoạt động hiệu Internet nhƣ Google, Bing, Yahoo!… Tuy nhiên, phần lớn cơng cụ tìm kiếm sản phẩm thƣơng mại mã nguồn đƣợc giữ bí mật Hoặc hệ thống tìm kiếm máy cá nhân nhƣ Windows Search, Google Desktop… đáp ứng phần nhu cầu ngƣời sử dụng, miễn phí cho cá nhân, nhiên đáp ứng đƣợc phạm vi nhỏ dừng lại mức độ tìm kiếm từ khóa theo tiêu đề phần tóm tắt Có cách tiếp cận hiệu để giải vấn đề thực việc Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -8- so khớp tìm kiếm tồn văn Một thuật tốn so khớp chuỗi kinh điển thuật tốn KMP Có thể nói, KPM thuật tốn mẻ đƣợc sử dụng Việt Nam việc quản lý, lƣu trữ xử lý lƣợng liệu lớn nhƣng hiệu xác Dựa hƣớng tiếp cận hƣớng dẫn giáo viên, tơi mạnh dạn nhận đề tài “So khớp chuỗi thuật toán Knuth-MorrisPratt” Đối tƣợng phạm vi nghiên cứu Các khái niệm so khớp chuỗi Các khái niệm thuật toán so khớp chuỗi KMP Một số ứng dụng thuật toán KMP Hƣớng nghiên cứu đề tài Nghiên cứu tìm kiếm Knuth–Morris–Pratt ứng dụng việc tìm kiếm thông tin văn Nghiên cứu giải pháp cơng nghệ cài đặt chƣơng trình thử nghiệm Những nội dung Luận văn đƣợc trình bày chƣơng, có phần mở đầu, phần kết luận, phần mục lục, phần tài liệu tham khảo Luận văn đƣợc chia làm ba chƣơng với nội dung nhƣ sau: Chƣơng 1: Trình bày khái niệm so khớp chuỗi, hƣớng tiếp cận, dạng so khớp số thuật tốn so mẫu Chƣơng 2: Trình bày thuật toán KMP, thuật toán KMP mờ thuật toán KMP-BM mờ Chƣơng 3: Trình bày tốn tìm kiếm thông tin văn tiến hành cài đặt thử nghiệm chƣơng trình Phƣơng pháp nghiên cứu Tổng hợp tài liệu đƣợc công bố thuật tốn tìm kiếm thơng tin, Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ -9- khai phá liệu, đặc biệt kết nghiên cứu liên quan đến thuật tốn tìm kiếm thơng tin Thực nghiệm thuật tốn tìm kiếm KMP với liệu mẫu Nhận xét, đánh giá kết thử nghiệm Ý nghĩa khoa học đề tài Luận văn nghiên cứu kỹ thuật, thuật toán tìm kiếm thơng tin sở hỗ trợ cho công tác dự báo, lập kế hoạch, quy hoạch, phân tích liệu quản lý, chun mơn, nghiệp vụ Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 10 - CHƢƠNG SO KHỚP CHUỖI 1.1 Khái niệm so khớp chuỗi So khớp chuỗi kỹ thuật đóng vai trò tảng lĩnh vực xử lý văn Hầu nhƣ tất trình soạn thoải xử lý văn cần phải có chế để so khớp chuỗi tài liệu Việc tích hợp thuật tốn so khớp chuỗi khâu đƣợc sử dụng việc triển khai phần mềm đƣợc thực hầu hết hệ điều hành Mặc dù liệu đƣợc lƣu trữ dƣới nhiều hình thức khác nhau, nhƣng văn hình thức chủ yếu để lƣu trữ trao đổi thông tin Trong nhiều lĩnh vực nhƣ so khớp, trích chọn thơng tin, tin sinh học…, lƣợng lớn liệu thƣờng đƣợc lƣu trữ tập tin tuyến tính Hơn khối lƣợng liệu thu thập đƣợc tăng lên nhanh nên địi hỏi phải có thuật tốn xử lý so khớp liệu văn hiệu So khớp chuỗi việc so sánh nhiều chuỗi (thƣờng đƣợc gọi mẫu Pattern) với văn để tìm vị trí số lần xuất chuỗi văn Ta hình thức hố toán so khớp chuỗi nhƣ sau: coi văn mảng T[1 n] có chiều dài n khn mẫu mảng P[1 m] có chiều dài m; thành phần T P ký tự đƣợc rút từ bảng chữ hữu hạn ∑ Ví dụ, ta có ∑ = {0,1} ∑ ={a,b, ,z} Các mảng ký tự P T thƣờng đƣợc gọi chuỗi ký tự Ta nói chuỗi w tiền tố (hậu tố) chuỗi x, ký hiệu w ⊂ x (w ⊃ x), x = wy (x = yw), với y chuỗi Để ngắn gọn, ta kí hiệu Pk để thể tiền tố k - ký tự P[1 k] khuôn mẫu P[1 m] Ta nói khn mẫu P xảy với khố chuyển s văn T (hoặc, theo tƣơng đƣơng, nói khn mẫu P xảy bắt đầu vị trí s + i văn T) ≤ s ≤ n-m T[s + s + m] = P[1 m] (nghĩa là, T[s+j] = P[j], với ≤ j ≤ m) Bài toán so khớp chuỗi tốn tìm tất Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 70 } - Hàm tạo bảng so sánh: public static int[] BuildTable(string p) { int[] result = new int[p.Length]; result[0] = 0; for (int i = 1; i < p.Length - 1; i++) { // The substring from p[1] to p[i] string s = p.Substring(0, i + 1); var prefixes = Enumerable.Range(1, s.Length - 1) Select(a => s.Substring(0, a)).ToList(); var suffixes = Enumerable.Range(1, s.Length - 1) Select(a => s.Substring(a, s.Length - a)).ToList(); var common = prefixes.Intersect(suffixes).FirstOrDefault(); result[i] = (common == null) ? : common.Length; } return result; } } - Hàm tìm kiếm private static int SearchKMP(int[] x, string s) { int n = s.Length; int l = x.Length; int find = 0; Char[] charPattern = pattern.ToCharArray(); for (int i = 0; i < n; ) { Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 71 string a = s.Substring(i, l); if (a.CompareTo(pattern).Equals(0)) { return i; // Found match, return match position of the first letter } // move position by BuildTable Char[] charSubstring = a.ToCharArray(); int count = 0; for (int j = 0; j < l; j++) { if (charPattern[j] == charSubstring[j]) { count++;// count of matched chars continue; } else { i += count - x[j]; // move forward steps = matched count - table value break; } } } return -999; // not found } 3.4.3 Kết thực nghiệm Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 72 - 3.4.3.1 Giao diện chương trình Hình 3.5 Giao diện chƣơng trình Lựa chọn thƣ mục có chứa file (doc, xls, ppt, html, txt) cần tìm kiếm Nhất nút “Tải liệu” để thực việc lập mục cho file văn thƣ mục Nhập từ khóa cần tìm kiếm văn Chƣơng trình thực đọc nội dung file văn có thƣ mục Sau thực so khớp từ khóa cần tìm nội dung văn (Tìm kiếm tồn văn) theo thuật tốn KMP Chƣơng trình đƣa danh sách file mà nội dung có chứa từ khóa tìm kiếm Khi chọn vào file kết chƣơng trình thực mở file lên để xem nội dung 3.4.3.2 Kết thử nghiệm chương trình tìm kiếm với từ khóa “Văn bản” Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 73 - Hình 3.6 Kết tìm kiếm chƣơng trình 3.5 Kết luận chƣơng Chƣơng trình bày tốn tìm kiếm mẫu, tìm kiếm thơng tin văn Áp dụng thuật tốn KMP để xây dựng chƣơng trình thử nghiệm đơn giản dựa ngơn ngữ lập trình C# hệ điều hành Window tiến hành chạy thử nghiệm chƣơng trình với số cụm từ khóa tìm kiếm file văn lƣu trữ Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 74 - KẾT LUẬN Đánh giá kết đề tài: Trong trình nghiên cứu thực hiện, luận văn đạt đƣợc nhƣng kết nhƣ sau: Giới thiệu số khái niệm so khớp chuỗi, hƣớng tiếp cận, dạng so khớp số thuật toán so mẫu Trình bày thuật tốn KMP, thuật tốn KMP mờ thuật toán KMP-BM mờ Cài đặt thuật toán KMP ngơn ngữ lập trình C# chạy hệ điều hành Window sau thử nghiệm tìm kiếm với số cụm từ khóa file văn đƣợc lƣu trữ Hạn chế: Chƣơng trình thử nghiệm cịn đơn giản Chƣơng trình thực đƣợc thuật tốn tìm kiếm số định dạng bản: doc, ppt, xls, html, txt Chƣa hỗ trợ tìm kiếm số định dạng: pdf, docx, xlsx, ppts Chƣơng trình dừng lại tìm kiếm máy cục bộ, chƣa hỗ trợ tìm kiếm thơng qua mạng LAN Internet Hƣớng phát triển tƣơng lai: Với kết đạt đƣợc, tác giả đề xuất số công việc thời gian tới nhƣ sau: Tiếp tục xử lý vấn đề tồn chƣơng trình thử nghiệm cài đặt nhƣ: Vấn đề liệu vào, xây dựng giao diện chƣơng trình thân thiện dễ sử dụng Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 75 - Tiếp tục nghiên cứu để ứng dụng, phát triển chƣơng trình hỗ trợ tìm kiếm qua mạng Lan tìm kiếm Internet thơng qua Website Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 76 - TÀI LIỆU THAM KHẢO Tiếng Việt [1] Đặng Huy Ruận (2011), Lý thuyết thuật toán, NXB Đại học Quốc gia Hà Nội [2] Robert Sedgewick (1994), Cẩm nang thuật toán, Tập 1: Các thuật tốn thơng dụng, NXB Khoa học Kỹ thuật [3] Nguyễn Hữu Điển (2006), Một số vấn đề thuật toán, NXB Giáo dục [4] Vũ Thành Nam, Phan Trung Huy, Nguyễn Thị Thanh Huyền (2005), “Mã tích đàn hồi tìm kiếm văn mã hố sử dụng thuật toán so mẫu theo tiếp cận mờ”, Báo cáo khoa học Hội nghị Ứng dụng tốn học tồn quốc lần 2, Hà Nội, 12/2005 [5] Phan Thị Tƣơi (1986), Trình biên dịch 1986 (Chƣơng : Bộ phân tích từ vựng), Nhà xuất Giáo dục Tiếng Anh [6] Thomas H Cormen (2009), Introduction to Algorithms, MIT Press [7] Christian Charras, Thierry Lecroq (2000), Handbook of Exact Stringmatching Algorithms [8] Donald Knuth, James H Morris, Jr, Vaughan Pratt (1977), “Fast pattern matching in strings”, Siam J.Comput, Vol 6, No 2, Nune 1977 [9] Aho A.V.(1992), Algorithms for finding patterns in strings, Chapter of Jan Van Leeuwen (ed.), Handbook of Theoretical Computer Science "Algorithms and Complexity", The MIT Press, pp 255-300 [10] Erik Hatcher, Michael McCandless (2008), Otis Gospodnetic: “Lucene in Action”, Apache Jakarta Project Management Committee Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ ... chuỗi thuật toán Knuth- MorrisPratt” Đối tƣợng phạm vi nghiên cứu Các khái niệm so khớp chuỗi Các khái niệm thuật toán so khớp chuỗi KMP Một số ứng dụng thuật toán KMP Hƣớng nghiên cứu đề tài Nghiên. .. cận thuật tốn so khớp chuỗi: Thuật toán cổ điển: thuật toán chủ yếu dựa vào so sánh ký tự Các thuật tốn điển hình bao gồm Brute Force, Nạve,… Thuật toán máy tự động hậu tố: thuật toán sử dụng. .. nhận đƣợc thuật toán tƣơng đối đơn giản Đồng thời J.H .Morris khám phá thuật toán Knuth, Morris, Pratt không giới thiệu thuật họ năm 1976, thời gian R.S.Boyer J.S.Moore khám phá thuật toán nhanh

Ngày đăng: 24/02/2021, 21:55

Tài liệu cùng người dùng

Tài liệu liên quan