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

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

83 159 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

Nội dung

-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 -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 -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 -4KẾT LUẬN 74 TÀI LIỆU THAM KHẢO .76 -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ừ -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 -7- MỞ ĐẦU Lý chọn đề tài Máy tính ngày 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 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 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 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 giữ bí mật Hoặc hệ thống tìm kiếm máy cá nhân 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 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 -8- so khớp tìm kiếm tồn văn Một thuật toán so khớp chuỗi kinh điển thuật toán KMP Có thể nói, KPM thuật tốn mẻ sử dụng Việt Nam việc quản lý, lưu trữ xử lý lượng liệu lớn hiệu xác Dựa hướng tiếp cận hướng dẫn giáo viên, 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 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 chia làm ba chương với nội dung 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 toán so mẫu Chương 2: Trình bày thuật tốn KMP, thuật tốn KMP mờ thuật tố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ơng bố thuật tốn tìm kiếm thơng tin, -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 tố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 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 toán so khớp chuỗi khâu sử dụng việc triển khai phần mềm thực hầu hết hệ điều hành Mặc dù liệu lưu trữ nhiều hình thức khác nhau, văn hình thức chủ yếu để lưu trữ trao đổi thông tin Trong nhiều lĩnh vực so khớp, trích chọn thơng tin, tin sinh học…, lượng lớn liệu thường lưu trữ tập tin tuyến tính Hơn khối lượng liệu thu thập tăng lên nhanh nên đòi hỏi phải có thuật toá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 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ố tốn so khớp chuỗi sau: coi văn mảng T[1 n] có chiều dài n khuôn mẫu mảng P[1 m] có chiều dài m; thành phần T P ký tự 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 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] khn mẫu P[1 m] Ta nói khn mẫu P xảy với khoá 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 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ lần xuất mục từ “học”, điểm số câu truy vấn q=”tin học” tài liệu d là: Score(q,d) = tftin,d - idftin + tfhọc,d - idfhọc = tftin,d × log (N/dftin) + tfhọc,d × log(N/dfhọc) = × log (1000/100) + × log (1000/150) ~ 6.23 Mơ hình khơng gian vec-tơ: Mơ hình so khớp phương pháp tính điểm số chưa xét vai trò mục từ câu truy vấn Ví dụ hai tài liệu chứa câu “Mary is quicker than John” “John is quicker than Mary”, số lượng mục từ vai trò khác hoàn toàn Để giải vấn đề người ta đưa mơ hình khơng gian vec-tơ, mơ hình biểu diễn tài liệu d vec-tơ tần suất mục từ V(d) Với hai tài liệu có mục từ giống nhau, biểu diễn vec-tơ chúng lại khác nhau, tính mức tương quan hai tài liệu: Đối với truy vấn q xem vec-tơ V(q) biểu diễn tần suất mục từ truy vấn Mức độ tương quan hai vector tính theo hàm cosin góc chúng: Hình 3.2 Mơ hình khơng gian vec tơ Ví dụ, với truy vấn best car insurance tập liệu với N=1.000.000 tài liệu với tần số xuất mục từ auto, best, car, insurance 5.000, Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 50.000, 10.000, 1.000 Chúng ta có bảng tính điểm số sau: Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Bảng 3.1 Tính điểm số Như vậy, điểm số Score (q,d) = + + 0.82 + 2.46 = 3.28 3.2 Mã nguồn mở Lucene 3.2.1 Giới thiệu Năm 1998, Doug Cutting – nhân viên Excite, Yahoo, làm việc Apache Software Foundation - bắt đầu tiến hành xây dựng thư viện tìm kiếm thông tin mã nguồn mở Lucene với mục tiêu phát triển thành thư viện tìm kiếm tài liệu hoàn chỉnh, cho phép nhà phát triển ứng dụng dễ dàng tích hợp chức tìm kiếm vào hệ thống [10] Lucene thư viện tìm kiếm thơng tin có khả xử lý khả mở rộng mức cao, cho phép tích hợp vào ứng dụng Lucene dự án mã nguồn mở nguyên thuỷ phát triển ngôn ngữ Java, ngày Lucene phát triển nhiều ngôn ngữ khác Delphi, Perl, C#, C++, Python, Ruby PHP… Thư viện cung cấp hàm hỗ trợ cho việc đánh mục tìm kiếm Để sử dụng Lucene, cần phải có sẵn liệu Dữ liệu tập hợp tập tin dạng PDF, Word trang web HTML; liệu lưu hệ quản trị CSDL MS SQL Server hay MySQL Dùng Lucene, tiến hành đánh mục liệu có để sau thực thao tác tìm kiếm tồn văn liệu Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Hình 3.3 Mơ hình đánh mục Lucene Thành phần Tạo mục: bao gồm phần chức xử lý tạo mục, từ văn đầu vào kết tập mục Lucene hỗ trợ văn sau tách nội dung dạng ký tự thuần, cho phép lập mục trường thông tin văn cho phép thiết lập hệ số cho trường thông tin để nâng cao vai trò lúc tìm kiếm Directory: cho phép định nghĩa vùng nhớ, xác định nơi lưu trữ nhớ ngồi nhớ RAM q trình tạo mục Document Field: định nghĩa tài liệu trường thông tin tài liệu sử dụng cho lập mục, sử dụng cho việc lấy kết trả cho thành phần Tìm kiếm Analyzer: thực chức xử lý tách văn để lấy nội dung, chuẩn hóa, loại bỏ mục từ không cần thiết,… để chuẩn bị cho việc lập mục IndexWriter: phần thành phần Tạo mục, thực việc tạo mở mục, sau thực thêm cập nhật nội dung mục Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 3.2.2 Các bước sử dụng Lucene Mô tả đối tượng cần đánh mục: Lucene coi đối tượng cần đánh mục Document Mỗi Document có nhiều Field, Field tương ứng thuộc tính đối tượng cần đánh mục Ví dụ, muốn tìm kiếm trang web dạng HTML Như đối tượng cần đánh mục trang HTML; thuộc tính nơi lưu trữ (host), đường dẫn, tiêu đề, metadata nội dung trang web Với Field, bạn chọn đánh mục hay không đánh mục Nếu chọn đánh mục, bạn tìm kiếm Field Các Field khơng đánh mục thường Field khơng quan trọng q trình tìm kiếm phục vụ chủ yếu cho nhu cầu trình bày kết trả Đánh mục: Thực xây dựng hàm công cụ để chuyển đổi liệu ban đầu thành liệu mô tả Document Ví dụ, liệu ban đầu tập tin PDF hay Word, phải có hàm để đọc hiểu định dạng chuyển dạng chuỗi văn tương ứng Thao tác đánh mục phức tạp Trước hết liệu văn phân tích thành từ khóa, đồng thời loại bỏ từ không dùng đến (stop words, tiếng Anh từ a, an, the stop words), sau từ khóa dùng để tạo inverted index (chỉ mục nghịch đảo) lưu thành phân đoạn dạng thuận tiện cho việc tìm kiếm sau Chỉ mục nghịch đảo dùng để cách lưu trữ danh sách tài liệu mà có chứa từ cho trước Gọi nghịch đảo thơng thường, với tài liệu cho trước, người ta lưu trữ danh sách từ có tài liệu Ví dụ, với từ khóa Lucene, ta lưu trữ danh sách trang web A, B, C có chứa từ khóa Sau người dùng gõ vào từ khóa Lucene, danh Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ sách giúp định vị nhanh chóng trang web có chứa Nếu dùng mục thông thường, phải quét qua hết trang web có sở liệu tìm Cách tốn thời gian số lượng liệu lớn Tìm kiếm: Sau liệu đánh mục, thực tìm kiếm chúng Tìm kiếm tồn vẹn cho phép bạn tìm kiếm theo danh sách từ khóa với tốn tử luận lí Lucene khơng phải ứng dụng hay máy tìm kiếm hồn chỉnh để người dùng sử dụng ngay, thư viện, cung cấp thành phần quan trọng máy tìm kiếm tạo mục truy vấn Chính cung cấp thành phần quan trọng việc tạo mục nên người dùng linh hoạt việc ứng dụng vào sản phẩm mình, có số cải tiến cho phù hợp 3.3 Ứng dụng tìm kiếm thơng tin văn Ứng dụng bao gồm hai thành phần: Thành phần tạo mục: Bao gồm chức định liệu để lập mục, thực phân tích tài liệu, tạo mục lưu trữ xuống tập mục, cập nhập mục trường hợp bổ sung hay thay đổi nội dung mục Thành phần tìm kiếm: Áp dụng thuật tốn KMP để thực tìm kiếm, hiển thị danh sách kết có liên kết đến tài liệu gốc Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Hình 3.4 Mơ hình ứng dụng tìm kiếm thơng tin văn 3.4 Cài đặt chương trình thử nghiệm 3.4.1 Giải pháp, cơng nghệ sử dụng Công nghệ, công cụ: Ứng dụng xây dựng công cụ Microsoft Visual Studio 2010, tảng Net Framework 4.0 Sử dụng thư viện mã nguồn mở Lucene để thực đọc, phân tích lập mục tài liệu lưu trữ Thuật toán sử dụng: Sử dụng thuật toán KMP để thực việc so mẫu 3.4.2 Nội dung chương trình Chương trình sử dụng thư viện IFilter để đọc phân tích file Microsoft Office trích xuất văn từ file IFilter thư viện có sẵn window (từ window 2000 trở lên) Hàm thực đọc, phân tích lập mục cho file văn public static string Parse(string filename) { IFilter filter = null; try { StringBuilder plainTextResult = new StringBuilder(); filter = loadIFilter(filename); Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ STAT_CHUNK ps = new STAT_CHUNK(); IFILTER_INIT mFlags = 0; uint i = 0; filter.Init( mFlags, 0, null, ref i); int resultChunk = 0; resultChunk = filter.GetChunk(out ps); while (resultChunk == 0) { if (ps.flags == CHUNKSTATE.CHUNK_TEXT) { uint sizeBuffer = 60000; int resultText = 0; while (resultText == Constants.FILTER_S_LAST_TEXT || resultText == 0) { sizeBuffer = 60000; System.Text.StringBuilder sbBuffer = new System.Text.StringBuilder((int)sizeBuffer); resultText = filter.GetText(ref sizeBuffer, sbBuffer); if (sizeBuffer > && sbBuffer.Length > 0) { string chunk = sbBuffer.ToString(0, (int)sizeBuffer); plainTextResult.Append(chunk); } } } resultChunk = filter.GetChunk(out ps); } return plainTextResult.ToString(); } finally { if (filter != null) Marshal.ReleaseComObject(filter); Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ } - 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/ 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/ 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/ 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/ 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 kết 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 tốn so mẫu Trình bày thuật toán KMP, thuật toán KMP mờ thuật tốn KMP-BM mờ Cài đặt thuật tố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 lưu trữ Hạn chế: Chương trình thử nghiệm đơn giản Chương trình thự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 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/ 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/ 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 toán học toà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 toá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 tốn máy tự động hậu tố: thuật toán sử dụng. .. ông nhận 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: 12/02/2019, 22:17

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w