Tìm kiếm mờ và ứng dụng tìm kiếm thông tin trong các văn bản nén
Trang 1Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN
ĐỖ THỊ HẠNH
TÌM KIẾM MỜ VÀ ỨNG DỤNG TÌM KIẾM THÔNG
TIN TRONG CÁC VĂN BẢN NÉN
Chuyên ngành: Khoa học máy tính
LUẬN VĂN THẠC SĨ
Người hướng dẫn: PGS.TS ĐOÀN VĂN BAN
Thái Nguyên - 2009
Trang 2Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Trang 3Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN
ĐỖ THỊ HẠNH
TÌM KIẾM MỜ VÀ ỨNG DỤNG TÌM KIẾM THÔNG TIN TRONG CÁC VĂN BẢN NÉN
Chuyên ngành: Khoa học máy tính
LUẬN VĂN THẠC SĨ
Người hướng dẫn: PGS.TS ĐOÀN VĂN BAN
Thái Nguyên - 2009
Trang 4Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy, cô khoa Công nghệ thông tin trường Đại học Thái Nguyên đã tạo điều kiện giúp đỡ và truyền đạt cho em những kiến thức về chuyên ngành và những kiến thức xã hội
Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến PGS.TS Đoàn Văn Ban - Viện Khoa học Công nghệ Việt Nam Thầy đã trực tiếp hướng dẫn và giúp đỡ em hoàn thành luận văn Mặc dù, trong quá trình làm luận văn em đã gặp nhiều khó khăn nhưng thầy luôn động viên, chia sẻ, đó là nguồn động lực lớn giúp em vượt qua Thầy chính
là tấm gương cho em trong công tác giảng dạy, nghiên cứu khoa học, cũng như trong cuộc sống Em xin cảm ơn thầy
Em không quên sự động viên, khích lệ của gia đình, bạn bè và những người thân đã giúp đỡ em vượt qua mọi khó khăn để em hoàn thành khoá học
Em xin chân thành cảm ơn!
Thái Nguyên, tháng 11 năm 2009
Trang 5Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
MỤC LỤC
MỞ ĐẦU 1
Chương 1 TÌM KIẾM MẪU TRONG VĂN BẢN THEO CÁCH TIẾP CẬN OTOMAT MỜ 5
1.1 Tổng quan về tìm kiếm mẫu trên văn bản 5
1.1.1 Giới thiệu chung về vấn đề tìm kiếm văn bản 5
1.1.2 Các dạng tìm kiếm và các kết quả nghiên cứu 7
1.1.2.1 Tìm đơn mẫu 7
1.1.2.2 Tìm đa mẫu 8
1.1.2.3 Tìm mẫu mở rộng 9
1.1.2.4 Tìm kiếm xấp xỉ 10
1.1.2.4.1 Phát biểu bài toán 10
1.1.2.4.2 Các tiếp cận tìm kiếm xấp xỉ 11
1.1.2.4.3 Độ tương tự giữa hai xâu 12
1.1.3 Tìm kiếm trong văn bản nén và mã hoá 14
1.2 Hệ mờ 15
1.3 Ý tưởng chung của tiếp cận otomat mờ 15
1.4 Khái niệm otomat mờ 17
1.5 Một số thuật toán so mẫu 18
1.5.1 Thuật toán KMP ( Knuth- Morris- Pratt) 18
1.5.2 Thuật toán BM ( Boyer- Moor) 22
1.6 Kết luận chương 1 26
Chương 2 BÀI TOÁN SO MẪU THEO CÁCH TIẾP CẬN OTOMAT MỜ 27
2.1 Bài toán so mẫu chính xác 27
2.1.1 Phát biểu bài toán 27
2.1.2 Độ mờ của mô hình 27
Trang 6Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
4
2.1.3 Thuật toán KMP mờ 28
2.1.3.1 Otomat so mẫu 28
2.1.3.2 Tính đúng đắn của thuật toán 29
2.1.3.3 Thuật toán 29
2.1.3.4 So sánh KM P và thuật toán KMP mờ 32
2.1.4 Thuật toán KMP - BM mờ 33
2.1.4.1 Ý tưởng của thuật toán 33
2.1.4.2 Otomat mờ so mẫu 35
2.1.4.3 Thuật toán 2.4 37
2.2 Bài toán so mẫu xấp xỉ 38
2.2.1 Đặt vấn đề 38
2.2.2 Bài toán 39
2.2.3 Độ tương tự dựa trên độ dài khúc con chung của hai xâu 40
2.2.3.1 Phát biểu bài toán 40
2.2.3.2 Otomat so mẫu 42
2.2.4 Độ gần tựa ngữ nghĩa 43
2.2.4.1 Ý tưởng về độ gần 43
2.2.4.2 Thuật toán sơ bộ tính độ gần 44
2.2.4.2.1 Ý tưởng 44
2.2.4.2.2 Thuật toán chi tiết 44
2.2.4.3 Giải thích độ mờ của mô hình 45
2.3 Kết luận chương 2 46
Chương 3 TÌM KIẾM MẪU TRONG VĂN BẢN NÉN VÀ MÃ HOÁ 47
3.1 Tiếp cận tìm kiếm tổng quát trên văn bản nén và mã hoá 47
3.2 Tìm kiếm trên văn bản nén 50
3.2.1 Các mô hình nén văn bản 50
Trang 7Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
5
3.2.2 Thuật toán tìm kiếm trên dữ liệu nén dạng text 50
3.3 Tìm kiếm trên văn bản mã hóa 55
3.3.1 Tìm kiếm trên văn bản mã hóa dạng khối kí tự 55
3.3.2 Mã đàn hồi 55
3.3.3 Tìm kiếm trên văn bản mã hóa bởi mã đàn hồi 58
3.3.3.1 Ý tưởng chung 58
3.3.3.2 Phương pháp đánh giá độ mờ xuất hiện mẫu trên văn bản mã hóa 59
3.3.3.2.1 Bài toán 59
3.3.3.2.2 Mô tả phương pháp 59
3.3.3.2.3 Chi tiết hóa các otomat trong thuật toán 60
3.3.3.2.4 Thuật toán tìm kiếm mẫu dựa trên otomat 61
3.3.4 Tìm kiếm trên văn bản mã hóa hai tầng 63
3.4 Kết luận chương 3 64
KẾT LUẬN 65
TÀI LIỆU THAM KHẢO 67
Trang 8Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Các chữ viết tắt
Trang 9Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Ý nghĩa của mảng next 19
Hình 1.2 Ý nghĩa của mảng next tại vị trí m + 1 19
Hình 2.1 Dịch chuyển con trỏ trên mẫu 32
Hình 2.2 Ý tưởng chung của thuật toán KMP-BM mờ 35
Hình 2.3 Một ví dụ với các khối độ dài t = 3 44
Hình 2.4 Tập mờ mô tả độ gần tựa ngữ nghĩa của mẫu P so với xâu đích S 45
Hình 3.1 Phương pháp so mẫu trên miền nén có sử dụng otomat mờ 48
Hình 3.2 Phương pháp so mẫu không giải mã 49
Hình 3.3 Queue trước (a) và sau (b) khi thực hiện thủ tục Decompress 52 Hình 3.4 Queue trước (a) và sau (b) bước nhảy n2‟ 53
Hình 3.5 Đồ thị xây dựng khái niệm tích đàn hồi 56
Hình 3.6 Đồ thị xác định mã đàn hồi 58
Hình 2.7 Quá trình mã hóa hai tầng 64
Hình 2.8 Quá trình giải mã hai tầng 64
Hình 2.9 Quá trình tìm kiếm mẫu trên văn bản mã hóa hai tầng 64
Trang 10Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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
Tìm kiếm thông tin thì bài toán đóng vai trò quan trọng là bài toán
so mẫu, với mẫu có thể ở bất kỳ kiểu dữ liệu nào, từ văn bản đến các loại
dữ liệu đa phương tiện khác (ảnh, video, âm thanh, …) Trên thực tế có rất nhiều ứng dụng tìm kiếm thông tin như: công cụ tìm kiếm của các hệ điều hành, khai phá web trên Internet,
Để tìm kiếm thông tin thì cần phải xem thông tin đó lưu trữ dưới dạng dữ liệu nào? Dữ liệu được lưu trữ dưới nhiều dạng, song phổ biến nhất vẫn là dạng text nên chúng tôi chọn đề tài này cụ thể là tìm kiếm văn bản text Tìm kiếm văn bản text nếu như những văn bản có khối lượng lớn thì có thể mất nhiều thời gian với những thuật toán kinh điển Vậy đặt ra vấn đề tìm kiếm văn bản nhưng ở dạng nén sẽ nhanh hơn
Trang 11Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
2
Nên chúng tôi đi vào làm cụ thể là tìm kiếm mẫu trong văn bản nén Ngoài ra, văn bản nén cũng là văn bản mã hoá nhưng dung lượng giảm nhiều so với văn bản nguồn nên chúng tôi đi nghiên cứu mở rộng thêm văn bản mã hoá
Trong các bài toán tìm kiếm, để tìm kiếm nhanh đáp ứng được nhu cầu và không chỉ tìm kiếm cứng nhắc trong với từ khoá đưa ra Người dùng mong muốn có thể tìm được cả những thông tin liên quan gợi ý cho người dùng Vậy bài toán đó thì việc tìm kiếm theo hệ mờ là rất cần thiết Vì vậy cần phải xây dựng các thuật toán mềm dẻo cho phép phát huy được sức mạnh của tìm kiếm mờ và đặc biệt cho phép sử dụng được nguồn tri thức giàu tính chuyên gia trong những tính huống tìm kiếm phức tạp
- Tìm hiểu về văn bản nén và mã hoá
- Cách so mẫu theo hướng tiếp cận otomát mờ
4 Giả thuyết khoa học
Nếu chúng ta sử dụng tiếp cận otomát mờ thì chúng ta không những tìm kiếm được những thông tin chính xác mong muốn mà còn tìm kiếm được những thông tin liên quan trong thời gian nhanh nhất, đáp ứng nhu cầu người dùng
5 Nhiệm vụ nghiên cứu
- Nghiên cứu về otomat mờ
- Nghiên cứu về nén và mã hoá
Trang 12Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
3
- Đưa ra các thuật toán tìm kiếm, các kết quả nghiên cứu trên
- Luận văn cũng mong muốn nêu ra được một số hướng nghiên cứu mở rộng về tìm kiếm mẫu theo hướng tiếp cận otomat mờ
6 Phạm vi nghiên cứu
Luận văn tập trung nghiên cứu các kiến thức có liên quan, các cơ
sở lý thuyết: Hệ mờ, otomat mờ, các thuật toán tìm kiếm mẫu, các thuật toán tìm kiếm mẫu theo cách tiếp cận otomat mờ
7 Phương pháp nghiên cứu
Otomat mờ được xem là sự tổng quát hoá của otomat hữu hạn Trong đó tập trạng thái là các tập mờ, hàm chuyển trạng thái và trạng thái kết thúc được biểu diễn qua các quan hệ mờ Theo đánh giá của các chuyên gia, các hệ hình thức otomat mờ là mô hình toán học thích hợp với một số hệ thống quyết định, điều khiển, nhận dạng và đặc biệt được dùng trong đoán nhận mẫu Tận dụng những ưu điểm trên và sự kết hợp với lý thuyết mờ, sử dụng một số hệ hình thức otomat mờ để giải bài toán so xâu mẫu Để thấy rõ được tiếp cận otomat mờ chúng tôi chọn một bài toán cụ thể là tìm kiếm mẫu trong văn bản nén và mã hoá
Trong phạm vi luận văn, bài toán có thể làm với các tệp dữ liệu nén mà không cần giải nén toàn bộ Ý tưởng cơ bản là đọc tuần tự trên tệp nén và mở nén một số mã nén, lưu kết quả giải nén cục bộ vào vùng đệm và áp dụng thuật toán theo tiếp cận mờ trên vùng đệm này
Nội dung luận văn gồm có phần mở đầu, 3 chương, phần kết luận, tài liệu tham khảo và phụ lục
Chương 1- Giới thiệu chung về vấn đề tìm kiếm văn bản, trọng tâm
là bài toán so xâu mẫu Hướng tiếp cận của luận văn cho bài toán so mẫu, chính xác và xấp xỉ, trên môi trường nén và mã hoá hoặc không sử dụng một số hệ hình thức otomat mờ
Trang 13Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Trang 14Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
5
Chương 1 TÌM KIẾM MẪU TRONG VĂN BẢN THEO
CÁCH TIẾP CẬN OTOMAT MỜ
1.1 Tổng quan về tìm kiếm mẫu trên văn bản
1.1.1 Giới thiệu chung về vấn đề tìm kiếm văn bản
Kiểu văn bản (Text) là dạng biểu diễn dữ liệu hay gặp nhất trong các hệ thống thông tin Tìm kiếm văn bản (text searching) là vấn đề chủ yếu thuộc lĩnh vực quản lý văn bản Một dạng cơ bản và tổng quát hơn là tìm kiếm chuỗi (hay xâu) (String searching) hay đối sánh chuỗi (string matching) Khái niệm “chuỗi” ở đây khá rộng, có thể là chuỗi văn bản gồm một dãy các chữ, số và ký tự đặc biệt, có thể là chuỗi nhị phân hay chuỗi gene,… Tìm kiếm chuỗi là bài toán tìm ra một mẫu (pattern) với một số đặc tính nào đó trong chuỗi các ký hiệu cho trước, vì thế bài toán này còn được gọi là so xâu mẫu hay có thể gọi ngắn gọn là so mẫu (string pattren matching) Dạng đơn giản nhất là tìm sự xuất hiện một xâu cho trước trong một chuỗi (còn gọi là xâu đích)
Thực ra, đây là một trong những bài toán kinh điển nhất và phổ dụng nhất của khoa học máy tính, bởi hầu hết các ứng dụng đều có sự đối sánh chuỗi ở một dạng nào đó Các phương pháp tìm kiếm văn bản
và tìm kiếm chuỗi chính là cốt lõi trong rất nhiều loại phần mềm khác nhau như: các tiện ích của hệ điều hành, các hệ thống trích rút dữ liệu (data retrieval system), trình soạn thảo văn bản (text editors), máy tìm kiếm (search engine) trên internet, phân tích và tìm kiếm chuỗi gene trong sinh vật học, xử lý ngôn ngữ tự nhiên, tìm kiếm text trong các hệ
cơ sở dữ liệu,…
Thời gian gần đây, vấn đề đối sánh chuỗi 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
Trang 15Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
6
trích rút thông tin và các hệ thống sinh- tin học Một lý do nữa, bởi 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ế (wild card), các khoảng trống (gaps) và các biểu thức chính quy (regular expresions) Sự “tìm thấy” không đơn giản là xuất hiện chính xác mẫu mà còn cho phép có “một ít sai khác” 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 hết sức thú vị đó là “tìm kiếm xấp xỉ” (approximate matching, approximate searching)
Cho đến nay, đã có nhiều hướng tiếp cận giải các bài toán so mẫu được đưa ra, từ những phương án rất lý thuyết đến các phương án rất thực dụng Hướng nghiên cứu lý thuyết đã nêu ra nhiều thuật toán quan trọng, song lại chưa đạt hiệu quả cao trong thực hành, nếu không tận dụng được những khả năng trong đặc điểm của kiến trúc máy tính Hiện nay, tiêu biểu cho những thuật toán mang tính chất thực hành theo hướng nâng cao khả năng tận dụng kiến trúc máy tính là tiếp cận song song bit (bit- parallelism) 1, 2, 3
Có thể phân các loại thuật toán so mẫu theo 2 hướng Thứ nhất là các thuật toán trực tuyến (on-line), trong đó chỉ mẫu được tiền xử lý (thường sử dụng otomat hoặc dựa trên các đặc tính kết hợp trên xâu), còn văn bản thì không Thứ hai là giải pháp tiền xử lý văn bản theo cách xây dựng một cấu trúc dữ liệu trên văn bản (lập chỉ mục) Nhiều ứng dụng cần sử dụng giải pháp này mặc dù đã có những thuật toán trực tuyến nhanh bởi chúng cần phải điều khiển một lượng văn bản quá lớn nên không có thuật toán trực tuyến nào có thể thực hiện một cách hiệu quả Tìm kiếm trên chỉ mục thực ra cũng dựa trên tìm kiếm on-line
Trang 16Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
7
1.1.2 Các dạng tìm kiếm và các kết quả nghiên cứu
Phân loại các thuật toán tìm kiếm dựa trên các đặc tính của mẫu ta
có các dạng: tìm đơn mẫu, tìm đa mẫu (mẫu là tập các xâu), tìm mẫu mở rộng (extended strings), tìm biểu thức chính qui (regular expressions) với hai hướng tiếp cận là tìm kiếm chính xác và xấp xỉ
Nội dung của luận văn chỉ tập trung giải quyết vấn đề để tìm đơn mẫu, chính xác và xấp xỉ
1.1.2.1 Tìm đơn mẫu
Bài toán 1.1:
Cho xâu mẫu P dộ dài m, P = P1P2… Pm , và xâu độ dài n, S = S1 S
2… Sn (S thường dài, là một văn bản) trên cùng một bảng chữ A Tìm tất
cả các xuất hiện của xâu P trong S
Trong các thuật toán so mẫu thường sử dụng các khái niệm: Khúc đầu, khúc cuối, khúc con hay xâu con của một xâu, được định nghĩa như sau: Cho 3 xâu x, y, z Ta nói x là khúc đầu (prefix) của xâu xy, là khúc cuối (suffix) của xâu yx và là khúc con hay xâu con (factor) của xâu yxz Thuật toán “thô” nhất và đã được sử dụng rộng rãi là Brute- Force Phương pháp này đơn giản chỉ là lần lượt bắt đầu từ vị trí trong S để đối sánh với mẫu P Mặc dù có tốc độ chậm, thời gian xấu nhất tỉ lệ với tích m.n, song trong nhiều ứng dụng thực tế các chuỗi phát sinh ra thường có thời gian xử lý thực sự luôn tỷ lệ với m + n Ngoài ra, một ưu điểm khác
là nó thích hợp với cấu trúc của hầu hết các hệ máy tính
Cho đến nay, rất nhiều thuật toán so đơn mẫu được đưa ra 4 5,
2, trong đó kinh điển nhất là KMP
Có thể xem như có ba tiếp cận chung cho các thuật toán so mẫu, phụ thuộc vào cách duyệt tìm mẫu trong văn bản Việc đánh giá tốc độ của các thuật toán dựa trên kích cỡ của mẫu P và bảng chữ A
Trang 17Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
8
Trong tiếp cận thứ nhất, lần lượt từng ký tự của văn bản S được đọc
và tại mỗi vị trí, sau khi đối sánh với một ký tự của mẫu sẽ cập nhật sự thay đổi để nhận ra một khả năng xuất hiện mẫu Hai thuật toán điển hình theo tiếp cận này là KMP và Shift - Or
Tiếp cận thứ hai sử dụng một “cửa sổ trượt” trên xâu S và tìm kiếm mẫu trong cửa sổ này Tại mỗi vị trí trong cửa sổ, cần tìm một khúc cuối của cửa sổ mà là khúc cuối của xâu mẫu P Thuật toán BM là một điển hình cho tiếp cận này và một biến thể đơn giản hoá của nó là Horspool Tiếp cận thứ ba mới xuất hiện gần đây cho ra đời các thuật toán hiệu quả về thực hành đối với mẫu P đủ dài Cũng tương tự như tiếp cận thứ hai, song tại mỗi thời điểm sẽ tìm khúc cuối dài nhất của cửa sổ mà
là khúc con của mẫu Thuật toán đầu tiên theo tiếp cận này là BDM và khi P đủ ngắn, một phiên bản đơn giản hơn, hiệu quả hơn là BNDM Với những mẫu dài, thuật toán BOM được đánh giá là nhanh nhất 2
Cả ba tiếp cận tìm đơn mẫu ở trên đều được mở rộng cho tìm đa mẫu Hai điển hình theo tiếp cận thứ nhất là thuật toán nổi tiếng Aho- Corasisk 4, có tốc độ cải thiện đáng kể khi số từ khoá nhiều và thuật
Trang 18Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
9
toán Multiple Shift- And, được sử dụng hiệu quả khi tổng độ dài của mẫu P rất nhỏ 2
Theo tiếp cận thứ hai có thuật toán nổi tiếng Commentz - Walter
4, trong đó kết hợp ý tưởng của Boyer - Moore và Aho- Corasisk , nhanh về lý thuyết, song lại không hiệu quả trong thực hành [2] Một mở rộng của thuật toán Horspool là Set Horspool Cuối cùng là thuật toán Wu-Manber, một phương pháp pha trộn giữa tiếp cận tìm kiếm hậu tố (suffix search approach) và một kiểu hàm băm, được đánh giá là nhanh trong thực hành
Trong tiếp cận thứ ba đã có những mở rộng từ thuật toán BOM và
1.1.2.3 Tìm mẫu mở rộng
Trong nhiều ứng dụng, tìm kiếm mẫu không chỉ đơn giản là dãy các
ký tự Sau đây là một số mở rộng thường thấy trong các ứng dụng:
Mở rộng đơn giản nhất cho phép mẫu là một dãy các lớp hay các tập ký tự, giả sử được đánh số thứ tự là 1,2,…,m Bất kỳ ký tự nào trong lớp thứ i cũng có thể được xem là ký tự thứ i của mẫu
Mở rộng thứ hai là giới hạn khoảng trên độ dài: Một số vị trí trên mẫu được ấn định để khớp với một dãy văn bản nào đó có độ dài nằm trong một khoảng xác định trước Điều này thường được sử dụng trong các ứng dụng sinh- tin học, chẳng hạn tìm mẫu PROSITE
Mở rộng thứ ba sử dụng các ký tự tùy chọn và ký tự lặp Trong xuất hiện của mẫu trên văn bản, các ký tự tuỳ chọn có thể có hoặc không có, còn các ký tự lặp có thể có một hoặc lặp nhiều lần
Các vấn đề nảy sinh từ ba hướng mở rộng trên và những kết hợp từ
ba hướng này được giải quyết bằng cách điều chỉnh lại thuật toán Shift -
Trang 19Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
10
Or và BNDM, trong đó có sử dụng cơ chế song song bit để mô phỏng otomat đa định, cho phép tìm tất cả các xuất hiện của mẫu
1.1.2.4 Tìm kiếm xấp xỉ
1.1.2.4.1 Phát biểu bài toán
Tìm kiếm xấp xỉ là bài toán tìm sự xuất hiện của một mẫu trong văn bản, trong đó sự “khớp” giữa mẫu và xuất hiện của nó có thể chấp nhận
k “lỗi” (k là một giới hạn cho trước) Có thể kể ra một vài kiểu “lỗi”, như những lỗi đánh máy hay lỗi chính tả trong hệ thống trích rút thông tin, những sự biến đổi chuỗi gen hay các lỗi đo đạc trong sinh- tin học và những lỗi truyền dữ liệu trong các hệ thống xử lý tín hiệu,… Vì trong các hệ thống tin học khó có thể tránh được các “lỗi” nên vấn đề tìm kiếm xấp xỉ càng trở nên quan trọng
Đặc biệt, khi sử dụng các hệ thống trích rút thông tin, người dùng ngày nay còn đòi hỏi cả những kết quả gần giống hoặc có được kết quả phù hợp trả về nếu có sự sai sót trong mẫu hay văn bản Trong trường hợp này “lỗi”
có thể do nhiều nguyên nhân khác nhau, có thể kể ra như sau:
- Câu truy vấn sai chính tả, xâu tìm kiếm không đúng cú pháp so với văn bản
- Lỗi in ấn, sai lỗi chính tả, sử dụng dấu chấm sai,…
- Do sự biến đổi hình thái từ trong một số ngôn ngữ
- Dữ liệu đưa vào cơ sở dữ liệu không chính xác, thường xảy ra với tên người, địa chỉ…
- Thông tin người tìm đưa vào không chính xác, chỉ “đại loại”
Vì vậy, một vấn đề đặt ra cho các hệ thống trích rút thông tin ngày nay
là đáp ứng được nhu cầu tìm kiếm “mềm dẻo” này của người sử dụng
Trang 20Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
2) Các thuật toán sử dụng otomat tìm kiếm: Trước tiên xây dựng một hàm của mẫu P và số lỗi k, sau đó tạo otomat đa định hữu hạn (như trong 9, 1) Đây là hướng tiếp cận được quan tâm nhiều vì có độ phức tạp thời gian trong trường hợp xấu nhất là O(n) (tuy nhiên đòi hỏi độ phức tạp không gian lớn hơn)
3) Các thuật toán sử dụng cơ chế song song bit (bit- parallelism): cách tiếp cận này cho ra rất nhiều thuật toán hiệu quả nhờ khai thác bản chất song song của các phép toán bit trên một từ máy trong bộ vi xử lý Nói chung song song bit được dùng để song song hoá các kỹ thuật khác, như tạo otomat đa định, lập ma trận quy hoạch động Nói chung kỹ thuật này làm việc khá tốt với mẫu ngắn và tăng tốc đáng kể so với những cài đặt không tận dụng khả năng song song của thanh ghi Trong 2 các tác giả cũng chỉ ra một số thuật toán dùng cơ chế song song bit là BPR và BPD để tái tạo một otomat đa định hữu hạn và BDM để tái tạo các thuật toán quy hoạch động
Trang 21Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
12
4) Các thuật toán sử dụng cơ chế lọc: Cố gắng thu hẹp không gian tìm kiếm của bài toán bằng cách loại đi các văn bản mà chắc chắn không chứa một đoạn nào “khớp” với mẫu Nói chung, phương pháp này đạt được bằng cách áp dụng kỹ thuật so mẫu chính xác cho các mẫu nhỏ của mẫu Hai thuật toán hiệu quả nhất theo tiếp cận này là PEX và ABNDM
2 Trong PEX, mẫu được chia thành k + 1 đoạn và sắp xếp để tìm kiếm
đa mẫu trên các đoạn này, vì ít nhất một đoạn phải có mặt trong một xuất hiện bất kỳ Thuật toán ABNDM là một mở rộng của thuật toán BNDM, trong đó tái tạo otomat đa định hữu hạn cho tìm kiếm xấp xỉ Nói chung, các thuật toán sử dụng cơ chế lọc làm việc tốt hơn tỷ lệ k/m nhỏ Đối với trường hợp tỷ lệ k/m lớn, các thuật toán sử dụng cơ chế song song bit được đánh giá tốt hơn
Đối với bài toán tìm kiếm đa mẫu cũng đã có một số phát triển theo hướng xấp xỉ Thuật toán MultiHash chỉ làm việc với k = 1 song rất hiệu quả khi số lượng mẫu lớn; MultiPEX là thuật toán hiệu quả nhất khi tỷ lệ k/m nhỏ; Multi BP xây dựng các NFA của tất cả các mẫu và sử dụng kết quả này làm bộ lọc, đây là lựa chọn tốt nhất cho tỷ lệ k/m cỡ trung bình Một vài tiếp cận xấp xỉ cho bài toán tìm mẫu mở rộng và tìm biểu thức chính qui có thể kể ra như: thuật toán dựa trên quy hoạch động cho biểu thức chính qui; thuật toán sử dụng một otomat đa định hữu hạn cho phép có “lỗi”, thuật toán song song bit dựa trên phương pháp của BPR, …
1.1.2.4.3 Độ tương tự giữa hai xâu
Để tìm kiếm xấp xỉ, cần sử dụng một hàm khoảng cách (distance function) đo độ tương tự giữa hai xâu Tương tự ở đây được hiểu là giữa hai xâu ký tự có một vài sai khác ở những lỗi có thể nhận ra bằng mắt thường, không xét về khía cạnh ngữ nghĩa (OCR- optical character recognition errors), chẳng hạn “Việt Nam” và “Việt Nan” hay “Việtt
Trang 22Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
13
Nan”,… Có thể kể ra một số kỹ thuật phổ biến đo độ tương tự giữa hai xâu: Xâu con chung dài nhất, dãy con chung dài nhất, khoảng cách soạn thảo (Edit distance) Nhiều ứng dụng sử dụng các biến thể của các hàm khoảng cách này
1) Khoảng cách soạn thảo (Edit distance): 4, 7 Đối với hai xâu x,
y khoảng cách soạn thảo Edit distance (x,y) là số nhỏ nhất các phép sửa đổi về mặt soạn thảo (editing transformations) để biến đổi xâu x thành xâu y (việc tính toán khá phức tạp) Khoảng cách soạn thảo càng lớn thì
sự khác nhau giữa hai xâu càng nhiều (hay độ tương tự càng nhỏ) và ngược lại Khoảng cách soạn thảo thường để kiểm tra chính tả hay tiếng nói Tuỳ thuộc vào quy ước về các phép sửa đổi mà ta nhận được các loại khoảng cách soạn thảo khác nhau, chẳng hạn như:
+ Khoảng cách Hamming: Phép sửa đổi chỉ là phép thay thế ký tự + Khoảng cách Levenshtein: Phép sửa đổi bao gồm: Chèn, xoá, và thay thế ký tự
+ Khoảng cách Damerau 3: Phép sửa đổi bao gồm: Chèn, xoá, thay thế và hoán vị liền kề của các ký tự
2) Xâu con chung dài nhất (hay khúc con chung dài nhất): Một xâu
w là xâu con hay khúc con (substring or factor) của xâu x nếu x = uwv (u, v có thê rỗng) Xâu w là khúc con chung của hai xâu x, y nếu w đồng thời là khúc con của x và y Khúc con chung dài nhất của hai xâu x và y,
ký hiệu LCF (x,y), là một khúc con có độ dài lớn nhất
3) Dãy con chung dài nhất 4, 6: Một dãy con của xâu x là một dãy các ký tự có được bằng cách xoá đi không, một hoặc nhiều ký tự từ
x Dãy con chung của hai xâu x, y là một dãy con của cả hai xâu x và y Dãy con chung của x và y có độ dài lớn nhất được gọi là dãy con chung
Trang 23Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
14
dài nhất LCS (x,y) Có thể dùng độ dài dãy con chung của hai xâu x, y
để tính khoảng cách Levenstein giữa x và y theo công thức:
LevDistance (x,y) = m + n - 2 length(LCS( x,y))
1.1.3 Tìm kiếm trong văn bản nén và mã hoá
Để giảm sự dư thừa trong lưu trữ và truyền dữ liệu, một giải pháp được sử dụng là nén dữ liệu Quá trình nén làm cho các tệp chiếm ít không gian lưu trữ hơn, giảm được thời gian và chi phí truyền thông nhưng lại làm mất đi phần lớn cấu trúc của dữ liệu, dẫn đến khó khăn trong việc tìm kiếm và trích rút thông tin Cách đơn giản nhất song rất tốn thời gian (và khó khả thi với những văn bản quá lớn) là giải nén toàn
bộ rồi tiến hành tìm kiếm bằng một thuật toán so mẫu kinh điển Hiện nay, đã có nhiều giải pháp tốt hơn theo hai hướng chính là: so mẫu nén (full- compressed pattern matching hay còn gọi là compressed pattern matching) và so mẫu trên miền nén (compressed- domain pattern matching) 9 So mẫu nén thực hiện nén mẫu trước rồi đem đi tìm kiếm trên văn bản nén (compressed text representation), còn so mẫu trên miền nén sử dụng giải pháp nén từng phần của văn bản
Nén dữ liệu text thực chất là một quá trình mã hoá, chuyển các thông báo nguồn (trong bảng chữ nguồn A) thành các bản mã (trong bản chữ mã B) và ngược lại là quá trình giải mã Vì vậy thuật toán tìm kiếm trên văn bản nén có thể áp dụng đối với văn bản mã hoá dạng khối ký tự Tuy nhiên, do yêu cầu bảo mật, đối với những văn bản mã hoá, cần có những giải thuật tìm kiếm đảm bảo không bị rò rỉ thông tin ngay trong quá trình tìm kiếm
Trang 24Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
15
1.2 Hệ mờ
Vấn đề cốt lõi quyết định khả năng xử lý thông tin là vấn đề của logic mềm dẻo, trong đó logic đa trị là một ví dụ Có thể nói rằng logic 2 trị: đúng - sai (1 - 0) là logic hết sức cứng nhắc, không thể lý giải cho nhiều
sự việc của đời sống nói chung và của khoa học công nghệ nói riêng
Định nghĩa 1.1:
Mọi sự vật, hiện tượng đều có tính đa cấu trúc đan xen, do đó tất yếu có tính không rõ ràng, mập mờ, không chính xác , bất định Viên gạch lý thuyết cơ sở để xây dựng nên thế giới không chính xác này có thể chọn là tập mờ và được xác định như sau:
Giả sử X là tập nền (vũ trụ) và là tập rõ; A là tập con trên X;
µA()là hàm của x biểu thị mức độ thuộc về tập A, thì A được gọi là tập
Trong đó µA() được gọi là hàm thuộc của tập mờ
1.3 Ý tưởng chung của tiếp cận otomat mờ
Khi tìm kiếm chính xác sự xuất hiện của mẫu P trong văn bản T, câu trả lời sẽ là “có” hoặc “không” Cách nhìn mờ cho phép trả về kết quả là "độ mờ xuất hiện mẫu" (một cách hiểu nôm na là “mức độ xuất hiện” hay “mức độ khớp” của mẫu P trong T) Tuỳ thuộc vào nhu cầu hay quan niệm trong hệ thống tìm kiếm mà có thể đưa ra định nghĩa chính xác về “độ mờ xuất hiện mẫu” cho từng trường hợp cụ thể Một cách tự nhiên, cách nhìn theo quan điểm hệ mờ về sự xuất hiện mẫu cũng đáp ứng được nhu cầu tìm kiếm mẫu xấp xỉ
Trang 25Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
16
Để giải bài toán so mẫu theo tiếp cận mờ, ta duyệt xâu đích S từ trái sang phải và tại mỗi vị trí j, cần tính được ngay độ mờ xuất hiện mẫu P Một câu hỏi đặt ra: Giả sử đã biết độ mờ của mẫu P tại vị trí j trên S, làm cách nào để xác định được độ mờ ‟ tại vị trí tiếp theo? Ý tưởng để trả lời câu hỏi này là: Bằng cách tiền xử lý mẫu P, ta hy vọng có thể tính được ‟ theo công thức ‟= ( , Sj+1 ) Điều này gợi ý cho ta việc sử dụng một số hệ hình thức otomat mờ để tính độ mờ xuất hiện thông qua hàm chuyển trạng thái của otomat
Ý tưởng chung của các thuật toán so mẫu theo tiếp cận otomat mờ [11] như sau:
- Giai đoạn tiền xử lý mẫu P: Dựa vào thông tin trên mẫu P, xây dựng otomat mờ so mẫu
- Giai đoạn sánh mẫu: Duyệt xâu đích S từ trái sang phải, mỗi lần một ký tự Khởi đầu độ mờ là 0 Giả sử đã biết độ mờ tại vị trí j (j = 0,…, n- 1) trên S là Khi đọc được ký tự Sj+1, tính ngay được độ mờ tại
vị trí j + 1 trên S là ‟= ( , Sj+1), trong đó là hàm chuyển của otomat
mờ được xác định trong giai đoạn tiền xử lý mẫu
Ưu điểm quan trọng nhất của thuật toán so mẫu theo tiếp cận otomat
mờ là:
- Không đòi hỏi lưu trữ toàn bộ S rồi mới so mẫu, do bản chất tuần
tự đọc từng ký tự trên S, nên có thể áp dụng trong các thuật toán hướng online, đặc biệt là trên môi trường mạng, với không gian lưu trữ bộ đệm cho S không lớn, tuỳ từng ứng dụng
- Thông tin về mẫu được tiền xử lý và bao hàm trong cấu trúc của otomat mờ tương ứng nên:
+ Luôn phản ánh được thông tin về sự xuất hiện mẫu mỗi khi duyệt đến một vị trí bất kỳ trên xâu đích S
Trang 26Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
17
+ Khi cần tìm kiếm mẫu P trong nhiều xâu S, chỉ cần dùng chung một otomat mờ so mẫu được xây dựng từ mẫu P Điều này đặc biệt hữư ích khi tìm kiếm trong cơ sở dữ liệu
1.4 Khái niệm otomat mờ
Một số nghiên cứu về otomat mờ có thể xem trong 9, …
Mô hình otomat mờ dạng tổng quát có mỗi trạng thái mờ là một tập con mờ trên tập nền X = 1, …, n (X hữu hạn), có hàm thuộc mở rộng là f: X R Ta có thể biểu diễn f dưới dạng vector rõ (f(1), f(2),…,f(n)) Như vậy, trạng thái mờ được xem như là một véctor n
0,1 hay f(i) N hay f(i) R,…
Định nghĩa 1.2 Một otomat mờ tổng quát là bộ A(P) = (A, Q, q o , , F), trong đó:
+ Bảng chữ vào A = A 0 t , trong đó mỗi chữ là một xâu gồm t ký tự trên bảng chữ cơ sở A 0
+ Q là tập hữu hạn các trạng thái mờ có dạng q = (v1, v2,….vk) trên tập nền X = 1,…, k với giá trị mờ nguyên
+ q 0 Q là trạng thái khởi đầu
+ F là tập các trạng thái kết thúc
+ Hàm chuyển : Q × A Q
Hàm chuyển có thể được mở rộng trong đó tín hiệu tác động là một xâu thuộc A*:
(q, wa) = ((q, w),a), w A*, a A
Số thành phần trong trạng thái mờ và tập giá trị mờ phụ thuộc vào quan điểm về “độ mờ xuất hiện mẫu” và nhu cầu tìm kiếm trong từng bài toán cụ thể
Trang 27Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
+ w1 s w2 nếu w1 là khúc đuôi của w2
+ w1 ls w2 nếu w1 là khúc đuôi dài nhất của w2
+ Với w = w1, w2….wm, 0 t m
w(t) hoặc preft(w) là khúc đầu độ dài t của w, w(t) = w1 w2….wt
Suft(w) là khúc cuối độ dài t cuả w, Suft(w) = wm - t+1 w m-t+2 wm
Quy ước pref0(w) = suf0(w) = ( là xâu rỗng)
+ Với a là một ký tự, w = w1w2…wm, ký hiệu wa = w1w2…wma
1.5 Một số thuật toán so mẫu
1.5.1 Thuật toán KMP ( Knuth- Morris- Pratt)
Thuật toán KMP được trình bày chi tiết trong 4, 5, 14 nội dung như sau:
Duyệt từ trái sang phải trên S và P, mỗi lần một ký tự Gọi con trỏ trên P là i, con trỏ trên S là j Giả sử đã xuất hiện khúc đầu độ dài i - 1 của mẫu P và việc khớp mẫu thất bại tại vị trí j trên S, có nghĩa:
P1P2…Pi -1 Sj - i + 1Sj - i + 2…S j - 1 và Pi Sj
Khi đó cần phải bắt đầu đối sánh mẫu từ vị trí j - h +1 trên S (trường hợp xấu nhất h = i - 1 trong thuật toán Brute - Force) Nếu tồn tại h > 0 sao cho h - 1 ký tự đầu của mẫu khớp với h - 1 ký tự cuối của đoạn S(j - 1) hay có nghĩa đã khớp với h - 1 ký tự cuối của P(i - 1) thì ta có thể bỏ
Trang 28Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Trong KMP, khi i > m ta được một xuất hiện của mẫu bắt đầu từ
vị trí j - m trên S Để tìm xuất hiện tiếp theo, nếu bắt đầu đối sánh từ P1
và Sj thì có thể bỏ sót mẫu khi có mẫu xuất hiện lồng nhau Vì vậy, khi con trỏ trên S dừng ở vị trí j, cần trượt mẫu đi một số vị trí sao cho h - 1
ký tự đầu của mẫu khớp với h - 1 ký tự cuối của S(j - 1) hay chính là khớp với h - 1 ký tự cuối của P(m) Do đó cần mở rộng mảng next với i
= m + 1 (Hình 1.2)
Hình 1.2 Ý nghĩa của mảng next tại vị trí m + 1
Trang 29Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Trang 30Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Độ phức tạp của thuật toán 4, 5
- Pha tiền xử lý mẫu: Độ phức tạp thời gian và không gian để xây dựng bảng next là O(m)
- Pha tìm kiếm: Thời gian xấu nhất là O(m+n)
Trang 31Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
22
1.5.2 Thuật toán BM ( Boyer- Moor)
Một tiếp cận phổ biến trong các thuật toán so đơn mẫu là duyệt tuần
tự qua tất cả các ký tự trên xâu vào S, mỗi lần một ký tự Nhưng trong thuật toán BM, có thể có những bước nhẩy xa trên S được thực hiện, nhờ vậy BM được đánh giá là thuật toán nhanh nhất về thực hành, đây là lựa chọn hiệu quả cho những ứng dụng thông thường như các trình soạn thảo văn bản
Ý tưởng cơ bản của thuật toán là sử dụng một “Cửa sổ trượt” như sau: “Cửa sổ” thực ra là một khúc độ dài m trên xâu vào S (m là độ dài của mẫu P) được đối sánh với mẫu tại một thời điểm nào đó Mỗi lần đối sánh mẫu P với một cửa sổ trên S bằng cách so sánh từng ký tự từ phải sang trái Khi gặp ký tự không khớp, cửa sổ trượt sang phải qua một đoạn trên S (tương ứng với việc dịch mẫu P sang phải) Trường hợp tốt nhất khi sự không khớp xảy ra tại vị trí Pm và ký tự không khớp là Sk lại không phải là một ký tự trong mẫu P, lúc đó có thể an toàn trượt cửa sổ sang phải qua m vị trí trên S và bắt đầu quá trình tìm kiếm mới bởi việc
so sánh Pm và Sk+ m
Giả sử tại một thời điểm đang xét cửa sổ Sk - m+ 1Sk - m + 2 Sk và bắt đầu so sánh Pmvới Sk
(1) Giả sử Pm Sk có hai khả năng:
a) Nếu vị trí xuất hiện phải nhất của ký tự Sk trong P là m - g, ta có thể dịch mẫu P sang phải g vị trí sao cho Pm-g dóng thẳng với Sk
rồi bắt đầu lại quá trình đối sánh bởi phép so sánh Pm và S k+ g
b) Nếu ký tự Sk không có mặt trong P, ta có thể dịch mẫu P sang phải m vị trí Đây là bước dịch chuyển xa nhất có thể mà vẫn không bỏ sót sự xuất hiện nào của mẫu
(2) Giả sử m - i ký tự cuối của mẫu P đã khớp với m - i ký tự cuối của S(k)
Trang 32Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
23
Nếu i = 0, ta đã tìm được một xuất hiện của mẫu P
Ngược lại, nếu i > 0 và Pi Sk -m+i, xét hai khả năng:
a) Nếu vị trí xuất hiện trái nhất của ký tự Sk -m+i trong P là i - g, khi đó mẫu P được dịch sang phải g vị trí sao cho Pi-g dóng thẳng với Sk-m+i và sẽ bắt đầu quá trình đối sánh mới, bắt đầu
từ Pm so với Sk+g Nếu Pi-g nằm bên phải của Pi (khi g < 0) thì mẫu P chỉ dịch sang phải 1 vị trí
b) Giả sử sufi(P) là một xâu con của Pi+1-gPi+2-g Pm-gvà Pi-g Pi
(nếu có nhiều xuất hiện như vậy của sufi(P) thì chọn vị trí phải nhất) Khi đó sẽ dịch mẫu P sang phải một đoạn dài hơn so với trường hợp (2a) sao cho khúc Pi+1-gPi+2-g Pm-g dóng thẳng với khúc Sk-m+i+1Sk-m+i+2 Sk và bắt đầu quá trình đối sánh mới từ Pm
và ((g k hoặc Pk-g = Pk) với i k m)
Có nhiều cách tính toán bảng d2 được đưa ra Thuật toán 1.3 tính bảng dịch chuyển d2 là của Knuth, có sự sửa đổi của Mehlhorn
Trong thuật toán 1.3 sử dụng hàm f có tính chất f[m] = m+1 và với 1
j < m, fj = mini j < i < m và Pi+1Pi+2 Pm = Pj+1Pj+2 Pm+j-i
Thuật toán 1.3 Tính bảng dịch chuyển d 2
procedure computed 2();
Trang 33Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Trang 34Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Độ phức tạp của thuật toán 4, 5
Độ phức tạp thời gian là O(m + n) và độ phức tạp không gian là O(m)
Trang 35Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
26
1.6 Kết luận chương 1
Chương này đã trình bày tổng quan về vấn đề tìm kíêm văn bản, phát biểu và tổng kết các hướng nghiên cứu cho các dạng bài toán tìm kiếm Nội dung của luận văn tập trung giải quyết bài toán so đơn mẫu, chính xác, xấp xỉ theo hướng tiếp cận sử dụng một số hệ hình thức otomat mờ Ý nghĩa của tiếp cận này cũng như mô hình otomat mờ tổng quát được giới thiệu ở mục 1.2 Cuối cùng là hai thuật toán kinh điển nổi tiềng cho bài toán so đơn mẫu chính xác là KMP và BM được trình bày Việc tính toán bảng next trong KMP và ý tưởng về bước dịch chuyển xa trong BM là nguồn gốc cho 2 thuật toán so đơn mẫu chính xác, xấp xỉ theo tiếp cận mờ sẽ được đưa ra ở chương 2
Trang 36Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
27
Chương 2 BÀI TOÁN SO MẪU THEO CÁCH TIẾP CẬN
OTOMAT MỜ 2.1 Bài toán so mẫu chính xác
2.1.1 Phát biểu bài toán
Cho xâu mẫu P độ dài m (P = P1P2 Pm) và xâu đích S độ dài n (S
= S1S2 Sn) trên cùng bảng chữ A Tìm tất cả các vị trí xuất hiện của mẫu P trong xâu S
Từ việc giải bài toán trên dễ dàng thống kê được tần suất xuất hiện mẫu P trong một văn bản
2.1.2 Độ mờ của mô hình
Bài toán đặt ra ở đây là tìm kiếm chính xác mẫu, nhiều lần lặp mẫu Độ mờ là một giá trị nguyên thuộc khoảng [0, ,m] cho biết độ dài của khúc đầu dài nhất của mẫu P đã xuất hiện trên S Đây cũng có thể xem như một mô hình “lỗi”, rất phù hợp với tìm kiếm xấp xỉ khúc đầu trong các từ điển lớn
Định nghĩa 2.1 Cho xâu mẫu P độ dài m và xâu đích S độ dài n Độ mờ
xuất hiện mẫu P trên S tại vị trí j là giá trị nguyên 0 thoả mãn:
Trang 37Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
28
TFuzz: {0,1, ,m} × (AP #) {0,1, ,m}
(,a) ‟ = TFuzz (,a)
gọi là độ mờ cũ, ‟ gọi là độ mờ mới khi gặp kí tự a
Hàm TFuzz được xây dựng dựa vào bảng next như trong thuật toán KMP tìm nhiều lần lặp mẫu đã trình bày ở Mục 1.5.1 Dựa vào Định nghĩa 1.3, bằng phương pháp quy nạp, ta nhận được ngay kết quả sau:
Bổ đề 2.1 Giả sử độ mờ xuất hiện mẫu P tại vị trí S j là , khi đó
độ mờ mới ’ tại S j+1 được xác định bởi một hàm ’ = TFuzz (, S j+1 ), với TFuzz được xác định như sau:
1
,1
,0
P x
P x
- Khởi đầu con trỏ trên S là j = 0 Tại đó chưa xuất hiện khúc đầu nào của mẫu nên trạng thái khởi đầu của otomat là q0 = 0
Trang 38Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
29
- Duyệt S, mỗi lần một kí tự, bắt đầu từ S1 Giả sử trạng thái của otomat là q thì khi đọc được kí tự Sj, trạng thái mới (ứng với vị trí j trên S) sẽ là q‟ = (q,Sj) ( là hàm chuyển của otomat)
- Tại vị trí j trên S, nếu trạng thái của otomat là q, có nghĩa khúc đầu dài nhất xuất hiện trên S của P có độ dài q Nếu q = m, báo hiệu một lần xuất hiện mẫu, bắt đầu từ vị trí j -m+1
Mô hình otomat mờ cần được xây dựng một cách thích hợp để đáp ứng được yêu cầu sánh mẫu như trên
Định nghĩa 2.2 Otomat mờ so mẫu là bộ A(P) = (A, Q, q 0 , , F) trong đó:
(q,a) = TFuzz (q,a), với hàm TFuzz được xác định như trong Bổ đề 2.1
2.1.3.2 Tính đúng đắn của thuật toán
Định lý 1.1 Cho xâu mẫu P độ dài m A(P) là otomat mờ được xác định theo định nghĩa 2.2 Giả sử q = (q 0 , w), w A * Nếu q = F thì P là khúc cuối của w
Chứng minh Dựa vào Bổ đề 2.1 và định nghĩa 2.2., tiến hành quy
nạp theo độ dài của từ w, dễ dàng nhận được điều phải chứng minh
2.1.3.3 Thuật toán
Khi cài đặt thuật toán cần lưu ý lựa chọn cấu trúc dữ liệu phù hợp
để có thể truy nhập nhanh chóng trong bảng TFuzz
Gọi A[0 k] là mảng lưu giữ bảng chữ A của otomat, trong đó k là
số kí tự phân biệt trong mẫu P Màng được sắp theo chiều tăng của các kí