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 1,6K 13

Đ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,38 MB

Nội dung

- 1 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ ĐẠ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 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ MỤC LỤC MỤC LỤC 1 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 5 DANH MỤC CÁC HÌNH VẼ VÀ CÁC BẢNG 6 MỞ ĐẦU 7 CHƢƠNG 1. 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 của 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 chính xác 16 1.5.5. So khớp xấp xỉ 17 1.5.5.1. Phát biểu bài 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ự giữa 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 2. THUẬT TOÁN SO KHỚP CHUỖI KNUTH-MORRIS-PRATT 41 2.1. Thuật toán KMP 41 - 3 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 2.1.1. Giới thiệu thuật toán 41 2.1.2. Bảng so sánh một phần 45 2.1.3. Độ phức tạp của 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 toán tìm kiếm mẫu dựa vào bảng TFuzz 51 2.2.3. So sánh KMP và thuật toán KMP mờ 52 2.3. Thuật toán KMP - BM mờ 53 2.3.1. Ý tƣởng của 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 của otomat mờ so mẫu 55 2.3.3. Thuật toán tìm kiếm 56 2.4. Kết luận chƣơng 57 CHƢƠNG 3. ỨNG DỤNG THUẬT TOÁ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 trên văn bả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 trên văn bả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 quả thực nghiệm 71 3.4.3.1. Giao diện chính của chƣơng trình 72 3.4.3.2. Kết quả thử nghiệm của chƣơng trình khi tìm kiếm với từ khóa “Văn bản” 72 3.5. Kết luận chƣơng 3 73 - 4 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ KẾT LUẬN 74 TÀI LIỆU THAM KHẢO 76 - 5 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 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 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ DANH MỤC CÁC HÌNH VẼ VÀ CÁC BẢNG Hình 1.1. Sơ đồ chuyển của một DFA 30 Hình 1.2. Mô tả một DFA 31 Bảng 1.1. Ví dụ hàm chuyển δ của DFA 32 Hình 1.3. Sơ đồ của một 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 δ của 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 một phần 46 Bảng 2.2. Thí dụ khác 46 Bảng 2.3. Trƣờng hợp mẫu xấu nhất 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 con trỏ trên mẫu 52 Bảng 2.7. Kết quả tìm sự xuất hiện mẫu P trong tệp S theo KMP và tiếp cận mờ 53 Hình 2.2. Ý tƣởng chung của thuật toán KMP-BM mờ 55 Hình 3.1. Mô hình biểu diễn và 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 chỉ mục của Lucene 65 Hình 3.4. Mô hình ứng dụng tìm kiếm thông tin văn bản 68 Hình 3.5. Giao diện chính của chƣơng trình 72 Hình 3.6. Kết quả tìm kiếm của chƣơng trình 73 - 7 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ MỞ ĐẦU 1. Lý do chọn đề tài Máy tính ngày nay đã đƣợc sử dụng trong hầu hết các lĩnh vực và đã góp phần quan trọng vào việc thúc đẩy sự phát triển kinh tế, xã hội, khoa học kỹ thuật, … Máy tính ra đời nhằm phục vụ cho những mục đích nhất định của con ngƣời. Với tất cả sự xử lý của máy tính để lấy thông tin hữu ích và trong quá trình xử lí đó một vấn đề đặc biệt quan trọng là tìm kiếm thông tin với khối lƣợng lớn, độ chính xác cao, thời gian nhanh nhất. Cùng với sự phổ biến của công nghệ thông tin, số lƣợng các tài liệu điện tử cũng gia tăng từng ngày. Đến nay, số lƣợng các tài liệu đƣợc lƣu trữ lên đến hàng tỷ trang. Trong khi đó, nhu cầu khai thác trong kho tài liệu khổng lồ này để tìm kiếm những thông tin cần thiết đang là nhu cầu thƣờng ngày và thiết thực của ngƣời sử dụng. Tuy nhiên, một trong những khó khăn con ngƣời gặp phải trong việc khai thác thông tin là khả năng tìm chính xác thông tin họ cần trong kho tài liệu. Để trợ giúp công việc này, các 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 của ngƣời sử dụng. Những hệ thống tìm kiếm bắt đầu phát triển và đƣa vào ứng dụng, phổ biến là các hệ thống tìm kiếm theo từ khóa. Nhiều hệ thống hoạt động hiệu quả trên Internet nhƣ Google, Bing, Yahoo!… Tuy nhiên, phần lớn các công cụ tìm kiếm này là những sản phẩm thƣơng mại và mã nguồn đƣợc giữ bí mật. Hoặc các hệ thống tìm kiếm trên máy cá nhân nhƣ Windows Search, Google Desktop… đã đáp ứng phần nào nhu cầu của ngƣời sử dụng, miễn phí cho cá nhân, tuy nhiên cũng chỉ đáp ứng đƣợc trên phạm vi nhỏ và mới chỉ dừng lại ở mức độ tìm kiếm từ khóa theo tiêu đề và phần tóm tắt. Có một cách tiếp cận hiệu quả để giải quyết vấn đề này là thực hiện việc - 8 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ so khớp và tìm kiếm toàn văn. Một trong những thuật toán so khớp chuỗi kinh điển là thuật toán KMP. Có thể nói, KPM là một thuật toán mới mẻ ít đƣợc sử dụng tại Việt Nam trong việc quản lý, lƣu trữ và xử lý lƣợng dữ liệu lớn nhƣng rất hiệu quả và chính xác. Dựa trên hƣớng tiếp cận đó và sự hƣớng dẫn của giáo viên, tôi mạnh dạn nhận đề tài “So khớp chuỗi và thuật toán Knuth-Morris- Pratt”. 2. Đối tƣợng và 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 trong thuật toán KMP. 3. Hƣớng nghiên cứu của đề tài Nghiên cứu tìm kiếm Knuth–Morris–Pratt và ứng dụng trong việc tìm kiếm thông tin trên văn bản. Nghiên cứu giải pháp công nghệ cài đặt chƣơng trình thử nghiệm. 4. Những nội dung chính Luận văn đƣợc trình bày trong 3 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 cơ bản nhƣ sau: Chƣơng 1: Trình bày khái niệm về so khớp chuỗi, các hƣớng tiếp cận, các dạng so khớp và một số thuật toán so mẫu. Chƣơng 2: Trình bày về thuật toán KMP, thuật toán KMP mờ và thuật toán KMP-BM mờ. Chƣơng 3: Trình bày về bài toán tìm kiếm thông tin trên văn bản và tiến hành cài đặt thử nghiệm chƣơng trình. 5. Phƣơng pháp nghiên cứu Tổng hợp các tài liệu đã đƣợc công bố về thuật toán tìm kiếm thông tin, - 9 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ khai phá dữ liệu, đặc biệt các kết quả nghiên cứu liên quan đến thuật toán tìm kiếm thông tin. Thực nghiệm thuật toán tìm kiếm KMP với dữ liệu mẫu. Nhận xét, đánh giá kết quả thử nghiệm. 6. Ý nghĩa khoa học của đề tài Luận văn nghiên cứu kỹ thuật, thuật toán tìm kiếm thông tin là cơ sở hỗ trợ cho công tác dự báo, lập kế hoạch, quy hoạch, phân tích dữ liệu quản lý, chuyên môn, nghiệp vụ. - 10 - Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ CHƢƠNG 1. SO KHỚP CHUỖI 1.1. Khái niệm so khớp chuỗi So khớp chuỗi là một kỹ thuật đóng vai trò nền tảng trong lĩnh vực xử lý văn bản. Hầu nhƣ tất cả các trình soạn thoải và xử lý văn bản đều cần phải có một cơ chế để so khớp các chuỗi trong tài liệu hiện tại. Việc tích hợp các thuật toán so khớp chuỗi là một trong những khâu cơ bản đƣợc sử dụng trong việc triển khai phần mềm và đƣợc thực hiện trên hầu hết các hệ điều hành. Mặc dù hiện nay dữ liệu đƣợc lƣu trữ dƣới nhiều hình thức khác nhau, nhƣng văn bản vẫn là hình thức chủ yếu để lƣu trữ và 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…, một lƣợng lớn dữ liệu thƣờng đƣợc lƣu trữ trong các tập tin tuyến tính. Hơn nữa khối lƣợng dữ liệu thu thập đƣợc tăng lên rất nhanh nên đòi hỏi phải có các thuật toán xử lý và so khớp dữ liệu văn bản hiệu quả So khớp chuỗi là việc so sánh một hoặc nhiều chuỗi (thƣờng đƣợc gọi là mẫu hoặc Pattern) với văn bản để tìm vị trí và số lần xuất hiện của chuỗi đó trong văn bản. Ta hình thức hoá bài toán so khớp chuỗi nhƣ sau: coi văn bản là một mảng T[1 n] có chiều dài n và khuôn mẫu là một mảng P[1 m] có chiều dài m; các thành phần của T và P là các ký tự đƣợc rút từ một bảng chữ cái hữu hạn ∑. Ví dụ, ta có thể có ∑ = {0,1} hoặc ∑ ={a,b, ,z}. Các mảng ký tự P và T thƣờng đƣợc gọi là các chuỗi ký tự. Ta nói rằng một chuỗi w là tiền tố (hậu tố) của một chuỗi x, ký hiệu là w ⊂ x (w ⊃ x), nếu x = wy (x = yw), với y là một chuỗi nào đó. Để ngắn gọn, ta kí hiệu P k để thể hiện tiền tố k - ký tự P[1 k] của khuôn mẫu P[1 m]. Ta nói rằng khuôn mẫu P xảy ra với khoá chuyển s trong văn bản T (hoặc, theo tƣơng đƣơng, nói rằng khuôn mẫu P xảy ra bắt đầu tại vị trí s + i trong văn bản T) nếu 0 ≤ s ≤ n-m và T[s + 1 s + m] = P[1 m] (nghĩa là, nếu T[s+j] = P[j], với 1 ≤ j ≤ m). Bài toán so khớp chuỗi là bài toán tìm tất cả các [...]... tt c cỏc thut toỏn tỡm kim chui hin cú Nhng chỳng ó i din cho a s cỏc t tng dựng gii bi toỏn tỡm kim chui Cỏc thut toỏn so sỏnh mu ln lt t trỏi sang phi thng l cỏc dng ci tin (v ci lựi) ca thut toỏn Knuth-Morris-Pratt v thut toỏn s dng Automat nh: Forward Dawg Matching, Apostolico-Crochemore, Not So Naive, Cỏc thut toỏn so sỏnh mu t phi sang trỏi u l cỏc dng ca thut toỏn Boyer-Moore Thut toỏn BM . tƣợng và 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 trong thuật toán KMP. 3. Hƣớng nghiên cứu của đề tài Nghiên cứu tìm. khớp và một số thuật toán so mẫu. Chƣơng 2: Trình bày về thuật toán KMP, thuật toán KMP mờ và thuật toán KMP-BM mờ. Chƣơng 3: Trình bày về bài toán tìm kiếm thông tin trên văn bản và tiến. chính của các thuật toán so khớp chuỗi: Thuật toán cổ điển: là các thuật toán chủ yếu dựa vào sự so sánh giữa các ký tự. Các thuật toán điển hình bao gồm Brute Force, Naïve,… Thuật toán máy

Ngày đăng: 18/12/2014, 00:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Đặng Huy Ruận (2011), Lý thuyết thuật toán, NXB. Đại học Quốc gia Hà Nội Sách, tạp chí
Tiêu đề: Lý thuyết thuật toán
Tác giả: Đặng Huy Ruận
Nhà XB: NXB. Đại học Quốc gia Hà Nội
Năm: 2011
[2] Robert Sedgewick (1994), Cẩm nang thuật toán, Tập 1: Các thuật toán thông dụng, NXB Khoa học và Kỹ thuật Sách, tạp chí
Tiêu đề: Cẩm nang thuật toán, Tập 1: Các thuật toán thông dụng
Tác giả: Robert Sedgewick
Nhà XB: NXB Khoa học và Kỹ thuật
Năm: 1994
[3] Nguyễn Hữu Điển (2006), Một số vấn đề về thuật toán, NXB. Giáo dục Sách, tạp chí
Tiêu đề: Một số vấn đề về thuật toán
Tác giả: Nguyễn Hữu Điển
Nhà XB: NXB. Giáo dục
Năm: 2006
[4] Vũ Thành Nam, Phan Trung Huy, Nguyễn Thị Thanh Huyền (2005), “Mã tích đàn hồi và tìm kiếm trên văn bả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 tại Hội nghị Ứng dụng toán học toàn quốc lần 2, Hà Nội, 12/2005 Sách, tạp chí
Tiêu đề: Mã tích đàn hồi và tìm kiếm trên văn bản mã hoá sử dụng thuật toán so mẫu theo tiếp cận mờ”
Tác giả: Vũ Thành Nam, Phan Trung Huy, Nguyễn Thị Thanh Huyền
Năm: 2005
[5] Phan Thị Tươi (1986), Trình biên dịch 1986 (Chương 3 : Bộ phân tích từ vựng), Nhà xuất bản Giáo dục.Tiếng Anh Sách, tạp chí
Tiêu đề: Trình biên dịch 1986
Tác giả: Phan Thị Tươi
Nhà XB: Nhà xuất bản Giáo dục. Tiếng Anh
Năm: 1986
[6] Thomas H. Cormen (2009), Introduction to Algorithms, MIT Press Sách, tạp chí
Tiêu đề: Introduction to Algorithms
Tác giả: Thomas H. Cormen
Năm: 2009
[8] Donald Knuth, James H. Morris, Jr, Vaughan Pratt (1977), “Fast pattern matching in strings”, Siam J.Comput, Vol 6, No. 2, Nune 1977 Sách, tạp chí
Tiêu đề: “Fast pattern matching in strings”
Tác giả: Donald Knuth, James H. Morris, Jr, Vaughan Pratt
Năm: 1977
[9] Aho A.V.(1992), Algorithms for finding patterns in strings, Chapter 5 of Jan Van Leeuwen (ed.), Handbook of Theoretical Computer Science "Algorithms and Complexity", The MIT Press, pp. 255-300 Sách, tạp chí
Tiêu đề: Algorithms and Complexity
Tác giả: Aho A.V
Năm: 1992
[10] Erik Hatcher, Michael McCandless (2008), Otis Gospodnetic: “Lucene in Action”, Apache Jakarta Project Management Committee Sách, tạp chí
Tiêu đề: Otis Gospodnetic: "“Lucene in Action”
Tác giả: Erik Hatcher, Michael McCandless
Năm: 2008
[7] Christian Charras, Thierry Lecroq (2000), Handbook of Exact Stringmatching Algorithms Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w