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

76 24 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

Thông tin cơ bản

Định dạng
Số trang 76
Dung lượng 1,39 MB

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 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 toá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 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 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 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 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 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 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/ - 62 - 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ừ nhƣ nhƣng vai trị khác hồn tồ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 nhƣ 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, nhƣng 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 đƣợc 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 lần lƣợt 5.000, Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - 63 - 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/ - 64 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 hồ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ỷ đƣợc phát triển ngôn ngữ Java, ngày Lucene đƣợc phát triển nhiều ngôn ngữ khác nhƣ 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 nhƣ 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/ - 65 - 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 đƣợc 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/ - 66 - 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 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 đƣợc 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ừ nhƣ a, an, the stop words), sau từ khóa đƣợc 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/ - 67 - 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 qt 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 đƣợc đá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, 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ƣ đị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/ - 68 - 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 đƣợc 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 đƣợc 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/ - 69 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/ - 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 tốn so mẫu Trình bày thuật tốn KMP, thuật toán KMP mờ thuật toá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 đƣợ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 đề cị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ã hoá 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: 25/02/2021, 09:06

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

TÀI LIỆU LIÊN QUAN

w