Luận văn Thạc sĩ: Nghiên cứu và Thực nghiệm thuật toán sánh mẫu Wu-Manber

Luận văn thạc sĩ: Nghiên cứu thuật toán Wu Manber, so sánh mẫu hiệu quả. Thực nghiệm đánh giá chi tiết. Tối ưu hóa tìm kiếm văn bản.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Luận văn Thạc sĩ

2012

55
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

MỞ ĐẦU

1. CHƯƠNG 1: BÀI TOÁN VÀ THUẬT TOÁN SÁNH MẪU

1.1. Giới thiệu về bài toán sánh mẫu

1.2. Phát biểu bài toán

1.3. Một số thuật toán sánh mẫu cơ bản

1.3.1. Thuật toán Brute Force

1.3.2. Thuật toán Knuth-Morris-Pratt

1.3.3. Thuật toán automat hữu hạn

1.3.4. Thuật toán Boyer-Moore

1.3.5. Thuật toán Karp-Rabin

1.3.6. Các thuật toán khác

2. CHƯƠNG 2: HỌ THUẬT TOÁN WM

2.1. Thuật toán WM

2.1.1. Tổng quan về thuật toán

2.1.2. Phác thảo của thuật toán

2.1.3. Giai đoạn tiền xử lý

2.1.4. Giai đoạn tìm kiếm mẫu

2.1.5. Phân tích thuật toán

2.2. Một thuật toán WM với bảng băm cô đọng

2.2.1. Phác thảo của thuật toán

2.2.2. Cải tiến của thuật toán

2.3. Thuật toán WM đồng thời cao

2.3.1. Cải tiến của thuật toán

2.3.2. Giai đoạn tiền xử lý và tìm mẫu của HCWM

2.4. Thuật toán WM sử dụng bảng tiền tố

2.4.1. Cải tiến của thuật toán

2.4.2. Giai đoạn tiền xử lý và tìm mẫu trong AFWM

3. CHƯƠNG 3: THỰC NGHIỆM

3.1. Giới thiệu về agrep

3.2. Các thuật toán sử dụng trong agrep

3.3. Thuật toán WM trong AGREP

3.4. Thuật toán sánh mẫu xấp xỉ

3.5. Cách sử dụng Agrep

3.6. Kết quả thực nghiệm

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Luận Văn Thạc Sĩ Thuật Toán Sánh Mẫu Wu Manber

Luận văn thạc sĩ này tập trung nghiên cứu về thuật toán Wu-Manber, một kỹ thuật sánh mẫu chuỗi hiệu quả, đặc biệt hữu dụng trong bối cảnh bùng nổ thông tin hiện nay. Bài toán sánh mẫu, hay còn gọi là so mẫu, đóng vai trò then chốt trong nhiều ứng dụng, từ các công cụ tìm kiếm đến các hệ thống phát hiện xâm nhập và quét virus. Luận văn đi sâu vào phân tích các biến thể của thuật toán Wu-Manber, đánh giá ưu nhược điểm thuật toán Wu-Manber và thực nghiệm để chứng minh hiệu quả của nó. Trong thời đại mà lượng thông tin tăng gấp đôi sau mỗi 18 tháng, việc nghiên cứu và phát triển các thuật toán sánh mẫu hiệu quả cao như Wu-Manber trở nên vô cùng quan trọng. Luận văn này hướng đến việc khám phá các khía cạnh khác nhau của thuật toán Wu-Manber, từ lý thuyết đến ứng dụng thực tiễn, góp phần vào sự phát triển của lĩnh vực xử lý văn bảnkhai phá dữ liệu văn bản. Luận văn sử dụng các nguồn tài liệu tham khảo uy tín để đảm bảo tính chính xác và độ tin cậy của thông tin. Cụ thể, luận văn tham khảo công trình của Sun Wu và Udi Manber vào năm 1994 [WM94] và nhiều phiên bản nâng cấp gần đây [SWG06, DX08, ZCP09, ZCP09a]. Luận văn cũng sử dụng công cụ Agrep để thi hành thực nghiệm thuật toán sánh mẫu Wu-Manber.

1.1. Giới Thiệu Bài Toán Sánh Mẫu và Ứng Dụng Thực Tiễn

Bài toán sánh mẫu là một vấn đề cơ bản trong xử lý văn bản, yêu cầu tìm kiếm một hoặc nhiều vị trí xuất hiện của một mẫu (pattern) trong một văn bản lớn hơn. Ứng dụng của bài toán sánh mẫu trải rộng trên nhiều lĩnh vực, bao gồm cơ chế sánh mẫu của hệ điều hành (như lệnh grep trong UNIX), cơ chế kiểm tra virus (sánh mẫu virus với nội dung file), máy tìm kiếm trên Internet và xác định mẫu gene bệnh trong đoạn gene của người. Christian Charras và Thierry Lecroq [CL00] đã nhấn mạnh tầm quan trọng của sánh mẫu trong việc xử lý văn bản. Các ứng dụng thực tiễn bao gồm tìm kiếm đa mẫutìm kiếm xấp xỉ, đáp ứng nhu cầu ngày càng phức tạp của người dùng.

1.2. Tổng Quan Về Thuật Toán Wu Manber và Lịch Sử Phát Triển

Thuật toán Wu-Manber do Sun Wu và Udi Manber công bố năm 1994 [WM94], là một cải tiến đáng kể trong lĩnh vực sánh mẫu chuỗi. Thuật toán Wu-Manber kết hợp ý tưởng nhảy của thuật toán Boyer-Moore và kỹ thuật băm, cho phép tìm kiếm hiệu quả ngay cả với nhiều mẫu cùng lúc. Từ đó, nhiều phiên bản nâng cấp đã được phát triển, chứng minh tính linh hoạt và khả năng thích ứng của thuật toán Wu-Manber với các yêu cầu khác nhau. Luận văn này sẽ đi sâu vào các phiên bản cải tiến đó, phân tích chi tiết cơ chế hoạt động và đánh giá hiệu quả của từng phiên bản.

II. Phân Tích Chi Tiết Thuật Toán Sánh Mẫu Wu Manber Cơ Bản

Thuật toán Wu-Manber cơ bản sử dụng ba bảng chính: SHIFT, HASH và PREFIX. Bảng SHIFT xác định khoảng cách dịch chuyển dựa trên các khối ký tự. Bảng HASH lưu trữ danh sách các mẫu có cùng hậu tố. Bảng PREFIX lưu trữ danh sách các mẫu có cùng tiền tố. Quá trình tìm kiếm bao gồm tính toán giá trị băm, tra bảng SHIFT, và so sánh mẫu nếu cần thiết. Để tăng tốc độ, thuật toán tận dụng cấu trúc dữ liệu thích hợp và sử dụng các phép lọc dựa trên tiền tố và hậu tố. Độ phức tạp thuật toán Wu-Manber phụ thuộc vào nhiều yếu tố, bao gồm kích thước mẫu, số lượng mẫu và đặc điểm của văn bản. Tuy nhiên, trong nhiều trường hợp thực tế, thuật toán Wu-Manber cho hiệu suất vượt trội so với các thuật toán khác.

2.1. Cấu Trúc Dữ Liệu Quan Trọng Trong Thuật Toán Wu Manber

Thuật toán Wu-Manber dựa trên ba bảng dữ liệu then chốt để tối ưu hóa quá trình tìm kiếm. Bảng SHIFT đóng vai trò như một 'bản đồ', hướng dẫn thuật toán 'nhảy' qua các phần không liên quan của văn bản, tiết kiệm thời gian so sánh. Bảng HASH và PREFIX hoạt động như các bộ lọc, giúp thu hẹp phạm vi tìm kiếm và loại bỏ các ứng viên không phù hợp. Việc thiết kế và tổ chức hiệu quả các bảng này là yếu tố then chốt để đạt được hiệu suất cao.

2.2. Quy Trình Hoạt Động Chi Tiết Của Thuật Toán Wu Manber

Quy trình hoạt động của thuật toán Wu-Manber có thể được chia thành hai giai đoạn chính: tiền xử lý và tìm kiếm. Giai đoạn tiền xử lý bao gồm xây dựng các bảng SHIFT, HASH và PREFIX dựa trên tập mẫu. Giai đoạn tìm kiếm sử dụng các bảng này để quét văn bản và tìm kiếm các mẫu phù hợp. Mỗi bước trong quy trình được thiết kế để giảm thiểu số lượng so sánh cần thiết và tăng tốc độ tìm kiếm tổng thể.

2.3. Phân Tích Độ Phức Tạp Thuật Toán Wu Manber và Các Yếu Tố Ảnh Hưởng

Độ phức tạp thời gian của thuật toán Wu-Manber phụ thuộc vào nhiều yếu tố, bao gồm kích thước của tập mẫu, độ dài trung bình của các mẫu và đặc điểm thống kê của văn bản. Trong trường hợp tốt nhất, thuật toán có thể đạt được độ phức tạp gần như tuyến tính. Tuy nhiên, trong trường hợp xấu nhất, độ phức tạp có thể tăng lên. Việc hiểu rõ các yếu tố ảnh hưởng đến độ phức tạp là rất quan trọng để tối ưu hóa hiệu suất của thuật toán.

III. Các Cải Tiến Vượt Trội Của Thuật Toán Wu Manber Cách Tối Ưu

Để khắc phục các hạn chế của thuật toán Wu-Manber cơ bản, nhiều phiên bản cải tiến đã được phát triển. Một số cải tiến tập trung vào việc giảm kích thước bảng băm, trong khi những cải tiến khác tập trung vào việc tăng cường khả năng tìm kiếm xấp xỉ. Các thuật toán MWM, QS, HCWM và AFWM là những ví dụ điển hình cho các cải tiến này. Luận văn sẽ đi sâu vào phân tích các kỹ thuật cải tiến này, đánh giá ưu nhược điểm thuật toán Wu-Manber của từng phương pháp.

3.1. Thuật Toán WM với Bảng Băm Cô Đọng Tiết Kiệm Bộ Nhớ

Một trong những cải tiến quan trọng của thuật toán Wu-Manber là việc sử dụng bảng băm cô đọng để giảm thiểu yêu cầu bộ nhớ. Kỹ thuật này đặc biệt hữu ích khi làm việc với các tập mẫu lớn. Tuy nhiên, việc sử dụng bảng băm cô đọng có thể làm tăng số lượng va chạm và ảnh hưởng đến hiệu suất tìm kiếm.

3.2. Thuật Toán HCWM Xử Lý Hiệu Quả Các Mẫu Ngắn và Dài

Thuật toán HCWM (High Concurrence WM) là một cải tiến nhằm tối ưu hóa hiệu suất khi làm việc với cả mẫu ngắn và mẫu dài. HCWM chia tập mẫu thành nhiều nhóm dựa trên độ dài và áp dụng các chiến lược tìm kiếm khác nhau cho từng nhóm. Cách tiếp cận này cho phép HCWM đạt được hiệu suất cao hơn so với thuật toán Wu-Manber cơ bản trong nhiều tình huống thực tế.

3.3. Thuật Toán AFWM Sử Dụng Bảng Tiền Tố Để Tăng Tốc Độ Sánh Mẫu

Thuật toán AFWM (Address Filtering Based WM) sử dụng bảng tiền tố để tăng tốc độ sánh mẫu. Bằng cách lọc các ứng viên dựa trên tiền tố, AFWM giảm thiểu số lượng so sánh cần thiết và cải thiện hiệu suất tổng thể. Kỹ thuật này đặc biệt hiệu quả khi làm việc với các tập mẫu có nhiều tiền tố trùng lặp.

IV. Thực Nghiệm Đánh Giá Hiệu Năng Thuật Toán Wu Manber và Cải Tiến

Luận văn sử dụng công cụ Agrep để thực nghiệm đánh giá hiệu năng thuật toán Wu-Manber và các phiên bản cải tiến. Các thực nghiệm được thực hiện trên các bộ dữ liệu khác nhau để đánh giá khả năng thích ứng của thuật toán. Kết quả thực nghiệm cho thấy rằng các phiên bản cải tiến của thuật toán Wu-Manber có thể cải thiện đáng kể hiệu suất trong một số tình huống nhất định. Ngoài ra, các thực nghiệm cũng cho thấy tầm quan trọng của việc lựa chọn tham số phù hợp để tối ưu hóa hiệu suất của thuật toán.

4.1. Thiết Lập Thực Nghiệm Bộ Dữ Liệu Môi Trường và Phương Pháp Đánh Giá

Để đảm bảo tính khách quan và độ tin cậy, các thực nghiệm được thực hiện trên một tập hợp đa dạng các bộ dữ liệu, bao gồm văn bản tiếng Anh, văn bản tiếng Việt và dữ liệu sinh học. Môi trường thực nghiệm được cấu hình để mô phỏng các điều kiện sử dụng thực tế. Hiệu suất của thuật toán được đánh giá dựa trên các chỉ số như thời gian thực hiện, mức tiêu thụ bộ nhớ và độ chính xác.

4.2. Kết Quả Thực Nghiệm So Sánh Hiệu Năng Các Phiên Bản Wu Manber

Kết quả thực nghiệm cho thấy rằng các phiên bản cải tiến của thuật toán Wu-Manber có thể cải thiện đáng kể hiệu suất trong một số tình huống nhất định. Ví dụ, thuật toán HCWM cho hiệu suất tốt hơn khi làm việc với cả mẫu ngắn và mẫu dài. Thuật toán AFWM cho hiệu suất tốt hơn khi làm việc với các tập mẫu có nhiều tiền tố trùng lặp.

4.3. Phân Tích Kết Quả và Thảo Luận Về Ưu Nhược Điểm Của Từng Phiên Bản

Phân tích chi tiết kết quả thực nghiệm cho thấy rằng mỗi phiên bản của thuật toán Wu-Manber có những ưu điểm và nhược điểm riêng. Việc lựa chọn phiên bản phù hợp phụ thuộc vào các yêu cầu cụ thể của ứng dụng. Ví dụ, nếu yêu cầu bộ nhớ là một yếu tố quan trọng, thì thuật toán WM với bảng băm cô đọng có thể là lựa chọn tốt nhất. Nếu hiệu suất là ưu tiên hàng đầu, thì thuật toán HCWM hoặc AFWM có thể là lựa chọn tốt hơn.

V. Ứng Dụng Thực Tế Thuật Toán Wu Manber Trong Xử Lý Văn Bản

Thuật toán Wu-Manber có nhiều ứng dụng thuật toán Wu-Manber trong các lĩnh vực khác nhau. Trong xử lý văn bản, thuật toán được sử dụng để tìm kiếm và thay thế các chuỗi ký tự, phân tích văn bản và lọc nội dung. Trong bảo mật, thuật toán được sử dụng để phát hiện xâm nhập và quét virus. Trong khai phá dữ liệu văn bản, thuật toán được sử dụng để tìm kiếm các mẫu và xu hướng trong dữ liệu văn bản.

5.1. Ứng Dụng Thuật Toán Wu Manber Trong Tìm Kiếm Thông Tin và So Sánh Văn Bản

Thuật toán Wu-Manber đóng vai trò quan trọng trong các hệ thống tìm kiếm thông tin, cho phép người dùng nhanh chóng tìm thấy các tài liệu liên quan đến truy vấn của họ. Thuật toán cũng được sử dụng để so sánh văn bản, phát hiện đạo văn và xác định các tài liệu tương tự.

5.2. Thuật Toán Wu Manber Trong Bảo Mật Mạng Phát Hiện Xâm Nhập và Quét Virus

Trong lĩnh vực bảo mật mạng, thuật toán Wu-Manber được sử dụng để phát hiện các mẫu độc hại trong lưu lượng mạng và quét các tệp để tìm virus. Khả năng tìm kiếm hiệu quả của thuật toán cho phép các hệ thống bảo mật nhanh chóng xác định và ngăn chặn các mối đe dọa.

VI. Kết Luận và Hướng Nghiên Cứu Tương Lai Thuật Toán Wu Manber

Luận văn đã trình bày một nghiên cứu toàn diện về thuật toán Wu-Manber và các phiên bản cải tiến của nó. Kết quả nghiên cứu cho thấy rằng thuật toán Wu-Manber là một công cụ mạnh mẽ để giải quyết bài toán sánh mẫu chuỗi trong nhiều ứng dụng khác nhau. Hướng nghiên cứu tương lai có thể tập trung vào việc phát triển các thuật toán Wu-Manber song song, khám phá các ứng dụng mới của thuật toán và tích hợp thuật toán với các kỹ thuật khai phá dữ liệu văn bản khác.

6.1. Tóm Tắt Các Kết Quả Nghiên Cứu Chính và Đóng Góp Của Luận Văn

Luận văn đã đóng góp vào sự hiểu biết sâu sắc hơn về thuật toán Wu-Manber và các phiên bản cải tiến của nó. Luận văn đã trình bày một phân tích chi tiết về cơ chế hoạt động, độ phức tạp và hiệu năng của thuật toán. Luận văn cũng đã thực hiện các thực nghiệm để so sánh hiệu năng của các phiên bản khác nhau và xác định các yếu tố ảnh hưởng đến hiệu suất.

6.2. Đề Xuất Các Hướng Nghiên Cứu Tiếp Theo Để Cải Tiến Thuật Toán Wu Manber

Các hướng nghiên cứu tiếp theo có thể tập trung vào việc phát triển các thuật toán Wu-Manber song song để tận dụng sức mạnh của các hệ thống đa lõi. Ngoài ra, việc khám phá các ứng dụng mới của thuật toán và tích hợp thuật toán với các kỹ thuật khai phá dữ liệu văn bản khác có thể mở ra nhiều cơ hội mới.

24/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: BÀI TOÁN VÀ THUẬT TOÁN SÁNH MẪU 1. Giới thiệu về bài toán sánh mẫu Kiểu dữ liệu văn bản (Text) là dạng trình bày thông tin gần gũi nhất với con người, vì vậy, đây cũng là dạng trình bày thông tin số rất phổ biến. Chính vì lẽ đó, bài toán tìm kiếm văn bản (text searching) là một trong những bài toán quan trọng nhất trong hoạt động tìm kiếm thông tin của con người. Trong thời đại ngày nay, văn bản số hóa đang tăng trưởng "bùng nổ" trong các cơ sở dữ liệu trên Internet, dung lượng tăng gấp đôi sau mỗi chu kỳ 18 tháng [CL00].

Trong bối cảnh đó, vấn đề tìm kiếm văn bản một cách tự động đã rất quan trọng thì lại ngày càng quan trọng hơn. Dạng phổ biến nhất của bài toán tìm kiếm văn bản là: Cho trước nguồn tìm kiếm là một tập D các văn bản (hoặc là cơ sở dữ liệu văn bản, hoặc là tập các văn bản trên Internet). Cho một câu hỏi dạng văn bản q (thường là một từ, một xâu văn bản ngắn), hãy tìm tất cả các văn bản thuộc D mà có chứa q. Trong nhiều trường hợp (chẳng hạn, tìm kiếm thông qua máy tìm kiếm) thì q còn được gọi là "truy vấn" và bài toán còn có tên gọi là "tìm kiếm theo truy vấn".

Để tìm được các văn bản có chứa văn bản truy vấn q, hệ thống tìm kiếm cần phải kiểm tra văn bản truy vấn q có là một xâu con của các văn bản thuộc tập D hay không (sánh mẫu) và đưa ra các văn bản đáp ứng. Trong nhiều trường hợp, bài toán còn đòi hỏi tìm tất cả các vị trí của các xâu con trong văn bản trùng với q. Đồng thời, điều kiện tìm kiếm có thể được làm "xấp xỉ" theo nghĩa văn bản kết quả có thể không cần chứa q (không cần có một xâu con của văn bản trùng một cách hoàn toàn chính xác với q) mà chỉ cần "liên quan" tới q (có xâu con trong văn bản "xấp xỉ" q). Có thể thấy, các máy tìm kiếm sử dụng cả cơ chế tìm kiếm xấp xỉ khi mà văn bản kết quả tìm kiếm không chứa hoàn toàn chính xác văn bản truy vấn.

Thời gian gần đây, bài toán sánh mẫu càng trở nên quan trọng và được quan tâm nhiều do sự tăng trưởng nhanh chóng của các hệ thống tìm kiếm thông tin và các hệ thống sinh- tin học. Một lý do nữa, con người ngày nay không chỉ đối mặt với một lượng thông tin khổng lồ mà còn đòi hỏi những yêu cầu tìm kiếm ngày càng phức tạp. Các mẫu đưa vào không chỉ đơn thuần là một xâu ký tự mà còn có thể chứa các ký tự thay thế, các khoảng trống và các biểu thức chính quy. Sự “tìm thấy” không đơn giản là xuất hiện chính xác mẫu trong văn TIEU LUAN MOI download : skknchat@gmail.com 4 bản mà còn cho phép “một xấp xỉ” giữa mẫu và xuất hiện của nó trong văn bản.

Từ đó, bên cạnh vấn đề kinh điển là “tìm kiếm chính xác”, nảy sinh một hướng nghiên cứu là "sánh mẫu xấp xỉ / tìm kiếm xấp xỉ” (approximate matching / approximate searching). Phát biểu bài toán Như đã giới thiệu, đối sánh mẫu là một bài toán cơ bản trong xử lý văn bản; bài toán yêu cầu tìm ra một hoặc nhiều vị trí xuất hiện của mẫu P trên một văn bản S. Mẫu P và văn bản S là các chuỗi có độ dài M và N (M ≤ N); P và S là các xâu ký trên cùng một bảng chữ cái Σ có δ ký tự. Bài toán sánh mẫu (chính xác) tổng quát được phát biểu như sau [CL00]: "Cho mẫu P độ dài M và văn bản S độ dài N trên cùng bảng chữ A.

Tìm một (hoặc tất cả) các lần xuất hiện của mẫu P trong S". Sánh mẫu để tìm tất cả các lần xuất hiện của các chuỗi mẫu có thể được thi hành bằng một lần quét duy nhất, diễn ra với nhiều lần thử trên các đoạn khác nhau của văn bản. Mỗi lần thử chương trình sẽ kiểm tra sự giống nhau giữa mẫu với cửa sổ hiện thời. Theo Christian Charras và Thierry Lecroq [CL00], độ phức tạp của thuật toán tìm tất cả các lần xuất hiện của x trong y trong thời gian O (M×N).

Trong bài toán tìm kiếm văn bản trên tập văn bản D, bài toán sánh mẫu được thực hiện đối với mọi cặp gồm mẫu (truy vấn) q và mọi văn bản d ∈ D. Trong trường hợp độ dài N của d rất lớn và số lượng văn bản trong D rất nhiều (|D|>>1) thì thời gian tìm kiếm văn bản phù hợp với câu hỏi q sẽ là rất tốn kém. Chính vì lý do đó, nghiên cứu đề xuất các thuật toán sánh mẫu mới, cải tiến các thuật toán sánh mẫu sẵn có luôn là một chủ đề nghiên cứu được hết sức quan tâm. Thực tiễn cũng tồn tại nhiều tình huống tìm kiếm xấp xỉ trong đó cho phép có sự "sai khác không đáng kể" giữa mẫu P và xâu con S' của xâu S.

Cũng chính vì lý do đó, bài toán sánh mẫu xấp xỉ được đặt ra, trong đó, tìm một (hay tất cả) các xâu con S' của xâu S mà S' "sai khác không đáng kể" với mẫu P [WM92]. Tồn tại một số tiêu chí cho độ đo "sai khác không đáng kể", chẳng hạn như số lượng ký tự cùng vị trí trong hai xâu S' và P là khác nhau chiếm tỷ lệ rất nhỏ so với độ dài M của xâu P. Thông thường, các thuật toán sánh mẫu làm việc với mẫu có độ dài ngắn (M≤30), tuy nhiên trong thực tiễn, bài toán sánh mẫu có độ dài mẫu lên tới con TIEU LUAN MOI download : skknchat@gmail.com 5 số hàng chục ngàn. Người ta gọi các bài toán sánh mẫu với mẫu dài như vậy là bài toán sánh mẫu "nặng" để phân biệt với bài toán sánh mẫu "nhẹ" mà độ dài mẫu không quá 30.

Thực tiễn cũng chỉ ra rằng hầu hết các ứng dụng của sánh mẫu là sánh mẫu nhẹ. Luận văn này đề cập tới bài toán sánh mẫu chính xác và tập trung vào sánh mẫu nhẹ. Một số thuật toán sánh mẫu cơ bản Theo Christian Charras và Thierry Lecroq [CL00], bốn cách tiếp cận chủ yếu của các thuật toán sánh mẫu được phân loại theo thứ tự đối sánh các ký tự của mẫu với văn bản: (1) tuần tự từ trái sang phải; (2) tuần tự từ phải sang trái; (3) xác định giới hạn lý thuyết để đưa ra thứ tự đối sánh ký tự; (4) xác định thứ tự theo quá trình thực hiện. Các tác giả cũng cho nhận định rằng nhóm thuật toán sánh mẫu tiến hành theo thứ tự tuần tự từ phải sang trái thường cho hiệu quả sánh mẫu tốt nhất trong thực tế.

Trong thập niên 1970, thuật toán sánh mẫu của A. Corasick, 1975 [AC75] và thuật toán sánh mẫu của R. Moore, 1977 [AC77] là hai trong số thuật toán điển hình nhất mà nhiều phiên bản thuật toán sánh mẫu được phát triển dựa trên ý tưởng của các thuật toán này. Đặc biệt, thuật toán Boyer-Moore vẫn còn thường xuyên áp dụng hiện nay.

Dưới đây là một số giới thiệu về một số thuật toán sánh mẫu cơ bản nhất. Trong [CL00], Christian Charras và Thierry Lecroq giới thiệu khá cụ thể về các thuật toán này. Thuật toán Brute Force Đặc điểm chính thuật toán Brute Force là: không có giai đoạn tiền xử lý, liên tục thêm không gian cần thiết, dịch chuyển cửa sổ sánh mẫu sang bên phải 1 vị trí, so sánh được thực hiện theo thứ tự bất kỳ, giai đoạn tìm kiếm có độ phức tạp thời gian là O(M*N), số ký tự dự kiến cần so sánh là 2N. Thuật toán Brute Force kiểm tra tất cả các vị trí trên văn bản từ 0 cho đến N-M.

Sau mỗi lần thử thuật toán Brute Force dịch mẫu sang phải một ký tự cho đến khi kiểm tra hết văn bản. Thuật toán Brute Force không cần giai đoạn tiền xử lý cũng như các mảng phụ cho quá trình tìm kiếm. Độ phức tạp tính toán của thuật toán này là O(N*M). Cụ thể quá trình sánh mẫu diễn ra như sau: TIEU LUAN MOI download : skknchat@gmail.com 6 Lần kiểm tra thứ nhất y G C A T C G C A G A G T A T A C A G T A C G 1 2 3 4 x G C A G A G A G Dịch 1 Lần kiểm tra thứ hai y G C A T C G C A G A G T A T A C A G T A C G 1 x G C A G A G A G Dịch 1 Lần kiểm tra thứ ba y G C A T C G C A G A G T A T A C A G T A C G 1 x G C A G A G A G Dịch 1 Thuật toán Brute Force sẽ thực hiện 30 so sánh như vậy cho đến hết văn bản Ví dụ: TWO ROADS DIVERGED IN A YELLOW WOOD ROADS TWO ROADS DIVERGED IN A YELLOW WOOD ROADS TWO ROADS DIVERGED IN A YELLOW WOOD ROADS TWO ROADS DIVERGED IN A YELLOW WOOD ROADS TWO ROADS DIVERGED IN A YELLOW WOOD ROADS TIEU LUAN MOI download : skknchat@gmail.com 7 Việc tìm kiếm bằng Brute-Force có thể là rất chậm đối với một số mẫu nào đó, ví dụ nếu xâu cần xét là một xâu nhị phân chỉ gồm hai ký tự thường xuất hiện trong các ứng dụng xử lý ảnh và lập trình hệ thống.

Thuật toán Knuth-Morris-Pratt Thuật toán Knuth-Morris-Pratt [CL00] có những đặc điểm chính sau: thuật toán thực hiện so sánh từ trái qua phải, độ phức tạp về thời gian trong giai đoạn tiền xử lý là O(M), độ phức tạp thời gian trong giai đoạn tìm mẫu là O(M+N), trong quá trình sánh mẫu thuật toán thực hiện nhiều nhất 2N-1 lần so 1+ 5 sánh, giới hạn trì hoãn là logφ(M) với φ= 2 Thuật toán Knuth-Morris-Pratt là thuật toán có độ phức tạp tuyến tính đầu tiên được phát hiện ra, dựa trên thuật toán Brute Force với ý tưởng lợi dụng lại những thông tin của lần thử trước cho lần sau. Trong thuật toán brute force vì chỉ dịch cửa sổ đi một ký tự lên có đến M-1 ký tự của cửa sổ mới là những ký tự của cửa sổ vừa xét. Trong đó có thể có rất nhiều ký tự đã được so sánh giống với mẫu và bây giờ lại nằm trên cửa sổ mới nhưng được dịch đi về vị trí so sánh với mẫu. Việc xử lý những ký tự này có thể được tính toán trước rồi lưu lại kết quả.

Nhờ đó lần thử sau có thể dịch đi được nhiều hơn một ký tự, và giảm số ký tự phải so sánh lại.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ