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

Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS TVSBS FQS và thực nghiệm

73 430 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 73
Dung lượng 809,51 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỞ ĐẦU Đối sánh xâu chính xác exac string matching, sau đây gọi tắt là “sánh xâu chính xác”, còn được gọi là sánh mẫu chính xác exac pattern matching là bài toán tìm ra tất cả sự xuất hi

Trang 1

LỜI CAM ĐOAN

Tôi xin cam đoan:

Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy giáo hướng dẫn PGS TS Hà Quang Thụy

Mọi tham khảo trong luận văn đều được trích dẫn rõ ràng tác giả, tên công trình, thời gian, địa điểm công bố

Tôi xin cam đoan luận văn không phải là sản phẩm sao chép của bất kỳ tài liệu khoa học nào

Học viên

Nguyễn Thị Phương Thảo

Trang 2

LỜI CẢM ƠN

Đầu tiên tôi xin gửi lời cảm ơn sâu sắc nhất tới PGS TS Hà Quang Thụy người hướng dẫn khoa học, đã tận tình chỉ bảo, giúp đỡ tôi thực hiện luận văn Tôi cũng xin lời lời cám ơn trân thành tới PGS TS Nguyễn Trí Thành và các anh chị

em Phòng Thí nghiệm Khoa học dữ liệu và Công nghệ Tri thức, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã giúp đỡ và tạo điều kiện hỗ trợ tôi

Tôi xin cảm ơn các thầy cô trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên đã giảng dạy và truyền đạt kiến thức cho tôi

Tôi xin trân thành cảm ơn Ban giám hiệu trường Cao đẳng nghề Phú Thọ và các đồng nghiệp trong khoa Công nghệ thông tin đã tạo mọi điều kiện giúp đỡ tôi hoàn thành nhiệm vụ học tập

Cuối cùng, tôi xin cảm ơn những người thân và các bạn bè chia sẻ, giúp đỡ tôi hoàn thành luận văn này

Mặc dù đã hết sức cố gắng hoàn thành luận văn với tất cả sự nỗ lực của bản thân, nhưng luận văn vẫn còn những thiếu sót Kính mong nhận được những ý kiến đóng góp của quý Thầy, Cô và bạn bè đồng nghiệp

Tôi xin chân thành cảm ơn!

Trang 3

MỤC LỤC

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

MỤC LỤC iii

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT v

DANH MỤC CÁC BẢNG vi

DANH MỤC CÁC HÌNH VẼ vii

MỞ ĐẦU 1

CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ THUẬT TOÁN SÁNH MẪU 3

1.1 Bài toán sánh mẫu và phân loại 3

1.1.1 Bài toán sánh mẫu 3

1.1.2 Phân loại bài toán sánh mẫu 3

1.2 Một số ứng dụng của bài toán sánh mẫu 5

1.3 Một số thuật toán sánh mẫu truyền thống 5

1.3.1 Thuật toán Boyer–Moore 6

1.3.2 Thuật toán Quick Search 9

1.4 Khái quát về các thuật toán sánh mẫu chính xác 10

1.5 Kết luận chương 1 11

CHƯƠNG 2: HỌ THUẬT TOÁN SÁNH MẪU CHÍNH XÁC NHANH SSABS - TVSBS – FQS 13

2.1 Giới thiệu về các biến thể của thuật toán Quick Search 13

2.2 Thuật toán đối sánh mẫu nhanh SSABS 13

2.2.1 Giới thiệu 13

2.2.2 Thuật toán 14

2.3 Thuật toán TVSBS 19

2.3.1 Giới thiệu 19

2.3.2 Thuật toán 19

2.3.3 Ví dụ 21

2.4 Thuật toán Faster Quick Search 24

2.4.1 Giới thiệu 24

2.4.2 Thuật toán 24

2.4.3 Ví dụ 29

2.5 Kết luận chương 2 32

Trang 4

CHƯƠNG 3: CHƯƠNG TRÌNH THỰC NGHIỆM HỌ THUẬT TOÁN ĐỐI

SÁNH MẪU CHÍNH XÁC NHANH VỚI BỘ CÔNG CỤ SMART 33

3.1 Giới thiệu 33

3.2 Bộ công cụ Smart 33

3.2.1 Các thành phần chính trong bộ công cụ SMART 33

3.2.2 Sử dụng bộ công cụ Smart 43

3.3 Bộ trung gian PUTTY 44

3.4 Kết quả thực nghiệm và nhận xét 45

3.4.1 Thực nghiệm đánh giá hiệu năng hai thuật toán SSABS và TVSBS 45

3.4.2 Thực nghiệm về kết quả sánh mẫu của hai thuật toán SSABS và TVSBS 49

3.5 Kết luận chương 3 51

KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO 53

TÀI LIỆU THAM KHẢO 54 PHỤ LỤC

Trang 5

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

Trang 6

DANH MỤC CÁC BẢNG

Bảng 2.1 Các giá trị dịch chuyển cho = 4 được đưa ra bởi hàm brBc 22

Bảng 2.2 Các hàng ES, next và shift cho một mẫu ví dụ 30 Bảng 3.1 Danh sách tất cả các thuật toán sánh xâu từ năm 1970 trên SMART 34 Bảng 3.2 Bộ các kho ngữ liệu thử nghiệm 38 Bảng 3.3 Bảng kết quả thử nghiệm 1 46

Trang 7

DANH MỤC CÁC HÌNH VẼ

Hình 3.1 Đăng nhập bằng bộ trung gian PUTTY 45

Hình 3.2 Kết quả thực nghiệm 1 46

Hình 3.3 Kết quả thực nghiệm 2 tìm mẫu trong chuỗi 50

Hình 3.4 Kết quả thực nghiệm 2 tìm mẫu trong file 51

Trang 8

MỞ ĐẦU

Đối sánh xâu chính xác (exac string matching, sau đây gọi tắt là “sánh xâu chính xác”), còn được gọi là sánh mẫu chính xác (exac pattern matching) là bài toán tìm ra tất cả sự xuất hiện của một xâu p cho trước trong một văn bản t, trong đó p, t đều là các xâu văn bản theo một bảng chữ cái; p được gọi là “mẫu” (pattern) còn t

là được gọi là “văn bản đích” (target text) [3, 8] Một ví dụ gần gũi là cho một truy vấn p và một trang web t, kiểm tra xem p có xuất hiện trong nội dung của t hay

không

Theo Simone Faro và Thierry Lecroq [8], trong 40 năm gần đây, đối sánh xâu là một trong những bài toán được nghiên cứu rộng rãi nhất trong khoa học máy tính, chủ yếu vì các ứng dụng trực tiếp của nó cho rất nhiều lĩnh vực khác nhau như

xử lý văn bản - hình ảnh - tín hiệu (text, image and signal processing), phân tích và nhận dạng giọng nói (speech analysis and recognition), truy hồi thông tin (information retrieval), nén dữ liệu (data compression), sinh học và hóa học tính toán (computational biology and chemistry) Bài toán sánh xâu chính xác trực tuyến (onlineexac string matching) nhận được sự quan tâm rất lớn của cộng đồng nghiên

cứu Trong thập kỷ 2001-2010, hơn 50 thuật toán mới được đưa ra, mở rộng thêm

số lượng khoảng 40 thuật toán đã có từ trước năm 2000 [2] Hệ thống các thuật toán này đã được phân tích, đánh giá công phu [5, 6, 7]

Theo Simone Faro và Thierry Lecroq, nhóm các thuật toán sánh mẫu nhanh

có nguồn gốc từ thuật toán QS [9] đã chứng tỏ được lợi thế, đặc biệt khi mẫu đối sánh có độ dài ngắn Chính vì lý do đó, luận văn này định hướng nghiên cứu một số thuật toán sánh mẫu chính xác nhanh có nguồn gốc từ thuật toán QS, tập trung vào

họ thuật toán SSABS [8] – TVSBS [4] - FQS [3] do các thuật toán này đã tỏ ra ưu việt trong bài toán sánh mẫu ngắn Họ thuật toán này là ở nhánh thuật toán khác với các thuật toán trong [1], hơn nữa, thuật toán FQS là mới được công bố vào năm

2014

Nội dung chủ yếu của luận văn là nghiên cứu, phân tích chi tiết các thuật toán sánh mẫu SSABS – TVSBS - FQS, khai thác công cụ [11] để tiến hành thực nghiệm Nội dung chính của luận văn gồm phần mở đầu, bốn chương nội dung, phần kết luận Nội dung của bốn chương nội dung được giới thiệu sơ bộ như sau:

Chương 1 Giới thiệu chung về thuật toán sánh mẫu trình bày các khái niệm và

đặc trưng của bài toán sánh mẫu, các ứng dụng của sánh mẫu, khái quát về các thuật toán sánh mẫu chính xác nhanh

Trang 9

Chương 2 Họ thuật toán sánh mẫu chính xác nhanh SSABS -TVSBS- FQS giới

thiệu về một lớp thuật toán sánh mẫu chính xác nhanh, trình bày và phân tích họ thuật toán SSABS-TVSBS- FQS Đồng thời, các bước tiến hóa và hiệu suất của ba thuật toán này cũng được giới thiệu

Chương 3 Chương trình thực nghiệm họ thuật toán đối sánh mẫu chính xác nhanh

với bộ công cụ Smart

Phần kết luận tổng kết các kết quả chính cũng như các hạn chế của luận văn, đồng

thời, ý tưởng về các nghiên cứu tiếp theo cũng được giới thiệu

Trang 10

CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ THUẬT TOÁN SÁNH MẪU

1.1 Bài toán sánh mẫu và phân loại

1.1.1 Bài toán sánh mẫu

Theo Simone Faro và Thierry Lecroq [6, 7, 8], bài toán sánh mẫu được phát

biểu như sau “Cho một bảng chữ cái S cỡ s, một văn bản T với độ dài n và một mẫu

p với độ dài m, bài toán sánh mẫu là việc tìm ra tất cả các lần xuất hiện của mẫu p trong văn bản T đã cho’’

Như đã được giới thiệu, do được ứng dụng trực tiếp trong rất nhiều lĩnh vực như xử lý văn bản, hình ảnh và tín hiệu, phân tích giọng nói và nhận dạng, truy hồi thông tin, nén dữ liệu, sinh học tính toán và hóa học tính toán cho nên bài toán sánh mẫu được nghiên cứu rộng rãi trong khoa học máy tính Từ năm 1970 tới nay đã có hơn 80 thuật toán sánh mẫu đã được đề xuất và hơn 50% các thuật toán này đã được đưa ra trong 10 năm qua [6, 7, 8]

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 truy hồi thông tin

(information retrieval) và các hệ thống tin - sinh học (bioinformatics) Một lý do

nữa, con người ngày nay không chỉ đối mặt với một lượng tài nguyên 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à chỉ

ra sự xuất hiện chính xác mẫu trong văn bản mà còn cho phép “một xấp xỉ” giữa mẫu và sự 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 pattern match/search) v.v

1.1.2 Phân loại bài toán sánh mẫu

1.1.2.1 Sánh mẫu chính xác và sánh mẫu xấp xỉ

Phát biểu về bài toán sánh mẫu được trình bày trong mục trên đây [5] thực chất là phát biểu cho bài toán sánh mẫu chính xác Với bài toán sánh mẫu chính xác, việc tìm ra tất cả các lần xuất hiện của 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 đích T Trong 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 Độ 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 P trong T là O (mn)

Trang 11

Trong bài toán tìm kiếm văn bản trên tập văn bản T, 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 tT Trong trường hợp độ dài n của t rất lớn và số lượng văn bản trong T rất nhiều (|T|>>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 đề x`uấ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ó để nâng cao tốc độ sánh mẫu luôn là một chủ đề nghiên cứu được cộng đồng 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ỉ (Approximate Pattern Matching) được đặt ra, trong đó, hãy tìm ra 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 [11] 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

(m30), 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 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ẹ

1.1.2.2 Sánh mẫu trực tuyến và sánh mẫu ngoại tuyến

Sánh mẫu ngoại tuyến (offline pattern matching) là trường hợp bài toán sánh

mẫu khi mà cả mẫu P và văn bản T đã có sẵn Một trường hợp đặc biệt chính là cả mẫu P và văn bản T đã có trong bộ nhớ Trong sánh mẫu ngoại tuyến, việc tiền xử

lý dữ liệu đối với P và T có thể được tiến hành từ trước để tạo điều kiện tạo nên các

cơ chế phù hợp (bao gồm các cấu trúc dữ liệu bổ sung thích hợp) để tăng tốc độ quá

trình sánh mẫu Thông tin cơ bản như độ dài của P và T được coi như một thông tin

tiên liệu về quá trình sánh mẫu

Sánh mẫu trực tuyến (online pattern matching) là trường hợp bài toán sánh

mẫu khi mà văn bản T chưa được biết toàn bộ, chẳng hạn như trường hợp tiến hành sánh một mẫu P đã cho với một văn bản T đang được đọc từ Internet Tiền xử lý dữ

liệu không cho phép tiền xử lý dữ liệu, khi đó nhiều thông tin liên quan chưa thể

biết, chẳng hạn như độ dài của văn bản T

Trang 12

1.2 Một số ứng dụng của bài toán sánh mẫu

Bài toán sánh mẫu không chỉ được ứng dụng trong miền xử lý văn bản (text processing) mà còn được ứng dụng trong nhiều miền ứng dụng khác, chẳng hạn như, xử lý hình ảnh và tín hiệu (image and signal processing), phân tích và tổng hợp tiếng nói (speech analysis and recognition), nén dữ liệu (data compression), truy hồi thông tin (informationretrieval), sinh học và hóa học tính toán (computational biology and chemistry) [5, 6, 7]

Trên thực tế có rất nhiều ứng dụng sánh mẫu như: cơ chế sánh mẫu của hệ

điều hành (chẳng hạn, lệnh grep, fgrep tìm kiếm một file theo tên file trong hệ

điều hành UNIX), cơ chế kiểm tra một file có bị nhiễm virus hay không (sánh mẫu

“xâu đặc tả virus” với nội dung file), máy tìm kiếm (search engine) trên Internet tìm kiếm các trang web có chứa mẫu p là cụm từ khóa tìm kiếm, xác định mẫu gene bệnh xuất hiện trong đoạn gene của người (các xâu văn bản trong bảng chữ cái gồm bốn chữ cái A, C, G, T)

1.3 Một số thuật toán sánh mẫu truyền thống

Tất cả các thuật toán sánh mẫu truyền thống đều quét văn bản T với sự trợ giúp của một cửa sổ có độ dài tương đương với độ dài của mẫu, trong đó, cửa sổ là một chuỗi m ký tự liên tiếp trên văn bản Trong mỗi lần kiểm tra, chương trình sẽ

xem xét sự giống nhau giữa mẫu với cửa sổ hiện thời, nếu kết quả đúng thì ghi nhận một lần xuất hiện của mẫu trong xâu Sau đó, cửa sổ sẽ được dịch sang bên phải trên văn bản cho lần kiểm tra tiếp theo

Trong mỗi lần xem xét, quá trình được bắt đầu từ việc so sánh lần lượt từng phần tử từ trái sang phải của cửa sổ với phần tử tương ứng của mẫu Nếu xuất hiện một sự không phù hợp có thể dừng việc xem xét cửa sổ hiện thời với mẫu, nếu ngược lại thì quá trình được tiếp tục cho tới phần tử cuối cùng trong cửa sổ Các thuật toán sánh mẫu là khác nhau ở trật tự so sánh ký tự trên mẫu và khoảng cách

mà cửa sổ được di chuyển trên văn bản sau mỗi lần kiểm tra

Nhiều thuật toán sánh mẫu đã được đề xuất mà mỗi thuật toán có những ưu, nhược điểm tùy theo độ dài mẫu, sự thiết lập chu kỳ và bảng chữ cái Simone Faro

và Thierry Lecroq [6] đã trình bày một phân tích đánh giá 85 thuật toán sánh mẫu chính xác, đưa ra mười lớp tình huống sánh mẫu chính xác và tương ứng là 10 thuật toán điển hình cho từng tình huống bài toán sánh mẫu

Các thuật toán sánh mẫu chính xác được phát triển dựa trên một số thuật toán sánh mẫu truyền thống mà điển hình là các Boyer–Moore và Quick Search như giới thiệu dưới đây

Trang 13

1.3.1 Thuật toán Boyer–Moore

Boyer–Moore (BM) là một thuật toán tìm kiếm xâu hiệu quả được Boyer và Moore đưa ra vào năm 1977 [6, 8] Thuật toán BM được xếp là loại thuật toán đo lường đạt chuẩn trong tài liệu về sánh xâu chính xác kể từ khi nó được giới thiệu

Thuật toán BM xử lý trước mẫu P và sử dụng thông tin thu thập được trong suốt

bước tiền xử lý để bỏ qua các khối văn bản trong khi đối sánh, kết quả đạt được nhanh hơn rất nhiều thuật toán sánh xâu khác Nhìn chung, thuật toán BM chạy nhanh hơn khi chiều dài của mẫu tăng lên

Đầu tiên, BM xử lý trước mẫu P để xây dựng hàng dịch chuyển xuất hiện (được viết tắt là bad_shift) với độ dài |Σ|, được xác định bằng việc sử dụng công

thức:

bad_shift() = min (m-1-k: {0 k <m-1 p[m 1 k] = σ, σ} {m}) (1.1)

Sau đó, BM sử dụng quy tắc ký tự xuất hiện Quy tắc này quy định rằng một khi xuất hiện lỗi đối sánh, thuật toán nhảy tới vị trí tiếp theo, được xác định bằng

hàng bad_shift mà không cần thực hiện những so sánh theo thuật toán Brute Force

BM cũng sử dụng quy tắc dịch chuyển khớp, BM bắt đầu so sánh giữa văn

bản T và mẫu P từ phải sang trái Khi có một lỗi đối sánh xảy ra trong P [i] ≠ T [j + i] với 0 < i < m và 0 < j < n, dịch chuyển khớp của mẫu P[i+1,…,m-1] đối sánh văn bản T[i+j+1,…,j+m-1]; dịch chuyển khớp của mẫu P[i+1,…,m-1] được gọi là

phép dịch chuyển khớp tốt Thuật toán tính toán hàng dịch chuyển tốt có độ dài

m+1 xác định vị trí nhảy kế tiếp bằng việc sử dụng khoảng cách dịch chuyển tối đa

có thể từ cấu trúc của mẫu Giá trị dịch chuyển tổng thể sau đó được xác định bằng việc lựa chọn khoảng cách dài hơn giữa cả hai hàng dịch chuyển khớp và dịch chuyển xuất hiện Thuật toán cổ điển Quick Search và biến thể cải tiến của các tác giả đều không sử dụng quy tắc dịch chuyển khớp; Do đó, phương trình hàng dịch chuyển khớp tương ứng không hiển thị ở đây Thuật toán gốc BM có thời gian chạy

trong trường hợp xấu nhất là O(mn) và thời gian chạy thực trong trường hợp tốt nhất

là O(n/m) Nhìn chung, nó có hiệu suất rất tốt và có những chỉnh sửa đổi đơn giản

để đạt được thời gian tổng thể trong trường hợp xấu nhất trong giới hạn:

O(n + m + |Σ|)

Trong thuật toán này có hai cách dịch cửa sổ:

Cách thứ 1: Dịch sao cho những phần đã so sánh trong lần trước khớp với những

phần giống nó trong lần sau

Trang 14

Trong lần thử tại vị trí j, khi so sánh đến ký tự i trên mẫu thì phát hiện ra sự khác nhau giữa ký tự x[i]=a của mẫu và ký tự y[i+j]=b của văn bản, lúc đó x[i+1 m-1]=y[i+j+1 j+m-1]=u và y[i+j-1]=b và x[i]y[i+j] khi đó thuật toán sẽ dịch cửa sổ sao cho đoạn u=y[i+j+1 j+m-1] giống với một đoạn mới trên mẫu

u

Dịch để một phần đôi của u xuất hiện lại trên x

Cách thứ 2: Coi ký tự đầu tiên không khớp trên văn bản là b=y[i+j] ta sẽ dịch sao

cho có một ký tự giống b trên xâu mẫu khớp vào vị trí đó (nếu có nhiều vị trí xuất

hiện b trên xâu mẫu ta chọn vị trí phải nhất)

Trang 15

Nếu không có ký tự b nào xuất hiện trên mẫu ta sẽ dịch cửa sổ sao cho ký tự trái nhất của cửa sổ vào vị trí ngay sau ký tự y[i+j-1]=b để đảm bảo sự ăn khớp

shift

Dịch khi b không xuất hiện trong x

Trong hai cách dịch chuyển, thuật toán sẽ chọn cách dịch có lợi nhất

Trong cài đặt ta dùng mảng bmGs để lưu cách dịch 1, mảng bmBc để lưu phép dịch

thứ 2 (ký tự không khớp) Việc tính toán mảng bmBc thực sự không có gì nhiều để bàn

min{

(1.2)

Nhưng việc tính trước mảng bmGs khá phức tạp, ta không tính trực tiếp

mảng này mà tính gián tiếp thông qua mảng suff

suff[i]=max{k | x[i-k+1 i]=x[m-k m-1]}

Các mảng bmGs và bmBc có thể được tính toán trước trong thời gian tỉ lệ

với O(m+) Thời gian tìm kiếm (độ phức tạp tính toán) của thuật toán

Boyer-Moore là O(m*n) Tuy nhiên với những bản chữ cái lớn thuật toán thực hiện rất nhanh Trong trường hợp tốt chi phí thuật toán có thể xuống đến O(n/m) là chi phí thấp nhất của các thuật toán tìm kiếm hiện đại có thể đạt được

Thuật toán Boyer-Moore có thể đạt tới chi phí O(n/m) là nhờ có cách dịch

thứ 2 “ký tự không khớp” Cách chuyển cửa sổ khi gặp “ký tự không khớp” cài đặt vừa đơn giản lại rất hiệu quả trong các bảng chữ cái lớn nên có nhiều thuật toán khác cũng đã lợi dụng các quét mẫu từ phải sang trái để sử dụng cách dịch này

Tuy nhiên chi phí thuật toán của Boyer-Moore là O(m*n) vì cách dịch thứ

nhất của thuật toán này không phân tích triệt để các thông tin của những lần thử trước, những đoạn đã so sánh rồi vẫn có thể bị so sánh lại Có một vài thuật toán đã

Trang 16

cải tiến cách dịch này để đưa đến chi phí tính toán của thuật toán Boyer-Moore là tuyến tính

1.3.2 Thuật toán Quick Search

Thuật toán Quick Search (QS) là một sự đơn giản hóa của thuật toán Moore mà không theo quy tắc dịch chuyển khớp QS xử lý trước mẫu P sử dụng

Boyer-một hàng bad_shift đã qua sửa đổi (được gọi là qbad_shift) của độ dài |Σ| trong độ phức hợp thời gian của Θ(m + |Σ|) Sự sửa đổi hàng bad_shift của QS được xác

định như sau:

qbad_shift(σ) = min (m-k: {0 k m-1 p[m k 1] = σ, σ} {m+1})

Các bước tiền xử lý của thuật toán QS được thể hiện trong Thuật toán 1

Trong Thuật toán 1, hàng qsBc là hàng ký tự dịch chuyển xuất hiện Quick Search, được khởi tạo giá trị m từ Hàng 1 tới Hàng 3 Hàng 4-6 thực hiện Biểu thức (1.2)

Ví dụ, trong trường hợp P = “GCAGTCAG” với m = 8 và Σ = {A, C, G, T} Mỗi yếu tố trong hàng bad_shiftqsBc[A, C, G, T] được khởi tạo đến 8 Sau khi thực hiện lệnh forloop từ Hàng 4 đến Hàng 6, ta có hàng bad_shift là qsBc[A, C, G, T] =

Trong Thuật toán 1, Dòng 1-3 chạy trong |Σ| các bước; Dòng 4-6 chạy trong

m các bước Do vậy, tổng thời gian tiền xử lý là O(m + |Σ|)

Thuật toán 2 thể hiện thuật toán Quick Search Trước tiên, quy trình tiền xử

lý được gọi là preQs, để tính toán hàng dịch chuyển xuất hiện Từ Hàng 3-9 sử dụng whileloop để so sánh văn bản T và mẫu P Hàng 4 so sánh P[0, , m − 1] và T[j, ,

j + m − 1], trong đó 0 ≤ j ≤ n − m Khi lỗi đối sánh xảy ra, thuật toán QS chuyển

sang một vị trí mới được quyết định bởi ký tự xuất hiện trong T, bằng việc sử dụng

giá trị dịch chuyển thích hợp cho biểu tượng, đó là T[j + m]

Thuật toán 2: Thuật toán Quick search

Trang 17

Giai đoạn tìm kiếm của QS có độ phức tạp thời gian trong trường hợp xấu

nhất là O(mn) Trong mỗi thời gian, khoảng cách dịch chuyển được duy trì và ký tự xuất hiện được tìm thấy trong so sánh cuối cùng của P[0] tới văn bản phù hợp (QS

bắt đầu so sánh từ phải sang trái)

Ví dụ: Nếu T = A n và P = BA m-1, trong trường hợp này, khoảng cách dịch

chuyển qsBc[A] = 1 Đó là, khi mỗi ký tự xấu xuất hiện, khoảng cách dịch chuyển

sẽ là 1 Thêm vào đó, ký tự xuất hiện này được tìm thấy trong so sánh cuối cùng của P[0] với vị trí văn bản tương ứng, bởi vì so sánh của QS thực hiện từ phải sang trái

Tuy nhiên, trường hợp cực xấu này hiếm xảy ra Giống như BM, nhìn chung QS có hiệu suất thực tiễn rất tốt

1.4 Khái quát về các thuật toán sánh mẫu chính xác

Theo Simone Faro và Thierry Lecroq [7], bài toán sánh xâu chính xác bao gồm việc tìm ra tất cả những lần xuất hiện của một mẫu đối sánh (p) trong một văn bản (t) Đây là một vấn đề đã được nghiên cứu nhiều trong khoa học máy tính, chủ yếu do nó có những ứng dụng trực tiếp đến nhiều mặt như xử lý văn bản, hình ảnh

và tín hiệu, phân tích giọng nói và nhận dạng, truy vấn thông tin, nén dữ liệu, sinh học tính toán và hóa học tính toán

Trong suốt thập kỷ qua (2001-2010) có hơn 50 thuật toán mới được đưa ra để

áp dụng cho vấn đề này, mở rộng thêm số lượng thuật toán đã có (khoảng 40 thuật toán) được trình bày trước năm 2000 Các tác giả sẽ xem xét những thuật toán đối sánh chuỗi hiệu quả nhất được trình bày trong thập kỷ qua để đưa ra một cách hệ thống trong số hàng chục bài đã xuất bản trong lĩnh vực này

Các tác giả thực hiện so sánh 85 thuật toán đối sánh chuỗi chính xác với 12 văn bản thuộc về những loại khác nhau Các tác giả chia các mẫu đối sánh làm 4 loại theo chiều dài m: rất ngắn (m4), ngắn (4 < m  32), dài (32 < m  256) và rất

Trang 18

dài (m > 256) Các tác giả tiến hành theo cùng một cách như vậy đối với việc chia mẫu đối sánh theo khổ chữ cái s: rất nhỏ (s<4), nhỏ (4 s<32), rộng (32  s < 128)

và rất rộng (s>128) Theo các kết quả thử nghiệm, các tác giả kết luận rằng các thuật toán sau đạt hiệu quả nhất trong các tình huống sau đây:

- SA: các mẫu đối sánh rất ngắn và bảng chữ cái rất nhỏ

- TVSBS: các mẫu đối sánh rất ngắn và bảng chữ cái nhỏ, và các mẫu đối sánh dài và bảng chữ cái rộng

- FJS: các mẫu rất ngắn và bảng chữ cái rộng và rất rộng

- EBOM: các mẫu ngắn và bảng chữ cái rộng và rất rộng

- SBNDM-BMH và BMH-SBNDM: mẫu ngắn và bảng chữ cái rất rộng

- HASHq: các mẫu rộng, ngắn và bảng chữ cái nhỏ

- FSBNDM: các mẫu dài và bảng chữ cái rộng và rất rộng

- SBNDMq : các mẫu dài và bảng chữ cái nhỏ

- LBNDM : các mẫu rất dài và bảng chữ cái rất rộng

- SSEF [7]: các mẫu rất dài

Nhưng trong số các thuật toán này chỉ có một thuật toán là SA được thiết kế trong suốt thập kỷ qua, 4 thuật toán khác được dựa trên sự so sánh các kí tự, một thuật toán dựa trên automata trong khi 6 thuật toán còn lại là những thuật toán bit song song

Để giảm thiểu các công việc phát triển các thuật toán đối sánh chuỗi chính xác, các tác giả phát triển một công cụ thông minh (công cụ nghiên cứu các thuật toán đối sánh chuỗi, tham khảo tại http://www.dmi.unict.it/~faro/smart/) cung cấp khung tiêu chuẩn cho các nhà nghiên cứu trong đối sánh chuỗi Nó giúp cho người

sử dụng kiểm tra, thiết kế, đánh giá và hiểu được các giải pháp hiện có để giải quyết vấn đề đối sánh chuỗi chính xác Hơn nữa nó cung cấp bổ sung hầu hết tất cả các thuật toán đối sánh chuỗi và một dữ liệu vùng đệm văn bản mở rộng

1.5 Kết luận chương 1

Chương 1 trình bày các nghiên cứu về các bài toán sánh mẫu Bài toán sánh mẫu có thể chia làm 2 loại là: sánh mẫu chính xác và sánh mẫu xấp xỉ; hoặc sánh mẫu trực tuyến và sánh mẫu ngoại tuyến Trong đó, bài toán sánh xâu chính xác bao gồm việc tìm ra tất cả những lần xuất hiện của một mẫu đối sánh (p) trong một văn bản (t) Đây là một trong những bài toán được nghiên cứu rộng rãi nhất trong khoa học máy tính, chủ yếu vì các ứng dụng trực tiếp của nó cho rất nhiều lĩnh vực khác

Trang 19

nhau như xử lý văn bản - hình ảnh - tín hiệu (text, image and signal processing), phân tích và nhận dạng giọng nói (speech analysis and recognition), truy hồi thông tin (information retrieval), nén dữ liệu (data compression), sinh học và hóa học tính toán (computational biology and chemistry)

Chương này tập trung nghiên cứu và trình bày các thuật toán sánh mẫu truyền thống là thuật toán Boyer - Moore và thuật toán QuickSearch

Trang 20

CHƯƠNG 2: HỌ THUẬT TOÁN SÁNH MẪU CHÍNH XÁC NHANH

SSABS - TVSBS – FQS

2.1 Giới thiệu về các biến thể của thuật toán Quick Search

Trong [7], Simone Faro và Thierry Lecroq cung cấp một khái quát về các thuật toán sánh mẫu được phát triển dựa trên thuật toán Quick Search Một số thuật toán điển hình như sau:

- Thuật toán SSABS được công bố năm 2004 [8] là một kết hợp chiến lược chuyển dịch của thuật toán QS và chiến lược kiểm thử nghiệm của thuật toán Raita Thuật toán TVSBS được công bố năm 2006 [4] là phiên bản cải tiến của SSABS Hai thuật toán này có độ phức tạp thời gian trong trường hợp xấu nhất là O(nm) với

n, m tương ứng là kích thước của mẫu và xâu văn bản

- Thuật toán Franek-Jennings-Smyth được công bố năm 2007 là một thuật toán kết hợp đơn giản các trường hợp độ phức tạp thời gian tồi nhất của thuật toán Knuth-Morris-Pratt với các hành vi trung bình tốt hơn của thuật toán QS

- Thuật toán Forward BOM (Forward-Backward-Oracle-Matching) được công bố năm 2008 là một thuật toán kết hợp các ý tưởng tiến bộ của thuật toán Extended-BOM và thuật toán QS

Luận văn này tập trung vào một nhóm thuật toán biến thể của thuật toán Quick Search mà được kiểm định là có lợi thế khi mẫu ngắn với bảng chữ nhỏ hoặc mẫu dài với bảng chữ lớn [6] với đại diện là thuật toán TVSBS Các mục dưới đây trình bày lần lượt ba thuật toán thuộc nhóm này là SSABS (Sheik-Sumit-Anindya-Balakrishnan-Seka) [8], TVSBS (Thathoo-Virmani-Sai-Balakrishnan-Sekar) [4] và FQS (faster quick search) [3]

2.2 Thuật toán đối sánh mẫu nhanh SSABS

2.2.1 Giới thiệu

Thuật toán SSABS được S S Sheik và cộng sự công bố vào năm 2004 [8]

và được đặt tên theo tên năm tác giả S S Sheik - Sumit K Aggarwal - Anindya Poddar - N Balakrishnan - K Sekar

Theo S S Sheik và cộng sự, hầu hết các thuật toán sánh mẫu nổi tiếng làm việc theo hai giai đoạn: giai đoạn tiền xử lý và giai đoạn tìm kiếm Trong giai đoạn tiền xử lý, các thuật toán này xử lý mẫu và sử dụng thông tin này trong giai đoạn tìm kiếm để giảm thiểu tổng số lượng so sánh ký tự và do đó giảm thời gian thực hiện tổng thể Hiệu quả của một thuật toán chủ yếu phụ thuộc vào giai đoạn tìm kiếm Mục tiêu chính của các thuật toán đối sánh mẫu là để giảm thiểu số lượng so

Trang 21

sánh ký tự giữa mẫu và văn bản nhằm làm tăng hiệu quả tổng thể Sự cải tiến trong hiệu quả của một tìm kiếm có thể đạt được bằng cách thay đổi trật tự các ký tự được

so sánh mỗi lần thử nghiệm và bằng việc lựa chọn yếu tố dịch chuyển cho phép bước nhảy của một số ký tự được xác định trước trong văn bản sau mỗi lần thử nghiệm

Các thuật toán đối sánh mẫu quét văn bản với sự hỗ trợ của một cửa sổ, có kích thước tương đương với độ dài của mẫu Bước đầu tiên là gắn kết các phần cuối cùng bên trái của cửa sổ và văn bản, sau đó so sánh với các ký tự tương ứng của cửa

sổ và mẫu Sau mỗi một đối sánh hoặc lỗi đối sánh của mẫu, cửa sổ văn bản được dịch chuyển sang bên phải Vấn đề đặt ra ra là có bao nhiêu ký tự được yêu cầu dịch chuyển cửa sổ trên văn bản Các giá trị dịch chuyển này dựa trên phương pháp luận được sử dụng bởi các thuật toán khác nhau Quy trình đó được lặp đi lặp lại cho tới khi phần cuối cùng bên phải của cửa sổ nằm trong phần cuối cùng bên phải của văn bản

2.2.2 Thuật toán

Trật tự các so sánh được thực hiện bằng việc so sánh ký tự cuối cùng của cửa

sổ và mẫu, sau khi đối sánh, thuật toán tiếp tục so sánh ký tự đầu tiên của cửa sổ và mẫu Như vậy, một sự tương đồng ban đầu có thể được thiết lập giữa mẫu và cửa

sổ, các ký tự còn lại được so sánh từ phải qua trái cho tới khi đối sánh hoàn toàn hoặc lỗi đối sánh xảy ra Sau mỗi lần thử nghiệm, bước nhảy của cửa sổ đạt được

bằng giá trị dịch chuyển qsBc đối với ký tự được đặt ở vị trí liền kề với cửa sổ

Do sự phụ thuộc của các ký tự lân cận mạnh hơn so với các ký tự khác nên cần so sánh ký tự cuối cùng trước tiên và ký tự đầu tiên thứ hai sau đó tiếp tục so sánh các ký tự theo trình tự từ phải sang trái của mẫu và cửa sổ Vì vậy, sẽ tốt hơn nếu tạm dừng việc so sánh các ký tự lân cận nhau Xác xuất việc đánh giá một đối sánh chính xác giữa mẫu với cửa sổ được tăng lên với một lượng tối thiểu so sánh bằng cách kết hợp sự tương đồng ban đầu Thêm vào đó, sự tối đa hóa bước nhảy cho cửa sổ giúp giảm thiểu số lượng so sánh ký tự với ký tự và làm tăng hiệu suất

Giai đoạn tiền xử lý:

Giai đoạn này được thực hiện bằng việc sử dụng hàm dịch chuyển qsBc đối

với tất cả các ký tự trong bảng chữ cái được thiết lập Một bảng được hình thành với

cỡ σ, chứa ký tự và giá trị bước nhảy tương ứng của nó Giá trị qsBc cho một bảng

chữ cái cụ thể được xác định như vị trí của ký tự trong mẫu từ phải sang trái, nếu

điều đó không diễn ra trong mẫu thì giá trị sẽ bằng (m+1) Giá trị bước nhảy cho mỗi ký tự được lưu trữ trong bảng qsBc được sử dụng trong giai đoạn tìm kiếm

Trong giai đoạn tìm kiếm, sau mỗi lần thử, bước nhảy của cửa sổ được tính toán

Trang 22

bằng việc đạt được giá trị dịch chuyển của ký tự ngay sau cửa sổ Giá trị bước nhảy tối đa đối với cửa sổ được nhận ra khi ký tự (ký tự ngay sau cửa sổ) không có mặt ở trong mẫu Xác suất của một ký tự xuất hiện trong mẫu ít hơn khi cỡ bảng chữ cái lớn điều đó giúp cho việc đạt được bước nhảy tối đa của cửa sổ Trong thuật toán

này ta xem xét hàm dịch chuyển qsBC của Quick-search vì những lí do sau:

(1) Giá trị qsBc thường được xác định ≥ 1, do đó nó có thể làm việc một cách độc lập và ra một thuật toán nhanh Mặt khác, bmBc đôi khi mang lại giá trị dịch

chuyển ≤ 0 và trong các trường hợp như vậy nó không được sử dụng một cách độc lập Do vậy, nó phải làm việc cùng với bmGs (dịch chuyển khớp của Boyer-Moore)

để tính toán bước nhảy của cửa sổ

(2) qsBC = bmBC, trừ các ký tự cuối cùng trong mẫu Do đó, qsBc luôn luôn

có giá trị dịch chuyển nhiều hơn bmBc trong thực tế

(3) qsBc không phụ thuộc vào trật tự các so sánh giữa mẫu và cửa sổ Vì

qsBc được xác định liên quan tới một ký tự nằm ngoài phạm vi so sánh hiện tại của mẫu

Giai đoạn tìm kiếm:

Bước 1 và bước 2 của giai đoạn này giải quyết trật tự so sánh ký tự với ký tự giữa cửa sổ và mẫu

Bước 1: Để tìm ra sự tương đồng ban đầu giữa mẫu và cửa sổ, trước tiên, ký

tự cuối cùng của mẫu và cửa sổ được so sánh, trong trường hợp có đối sánh, ký tự đầu tiên của mẫu và ký tự tương ứng trong cửa sổ được so sánh Nếu những ký tự này đối sánh, thuật toán đi vào bước tiếp theo, nếu không nó sẽ đi tới bước cuối cùng

Bước 2: Sau khi tạo một sự tương đồng ban đầu giữa cửa sổ và mẫu, các ký

tự còn lại được so sánh theo trật tự từ phải sang trái cho đến khi một lỗi đối sánh

xảy ra hoặc tất cả các ký tự (m – 2) đối sánh Nếu tất cả các ký tự đối sánh, thuật toán hiển thị vị trí tương ứng (j) của cửa sổ trên văn bản Sau đó thuật toán đi vào

bước cuối cùng

Bước 3: Trong bước này, sự tính toán khoảng cách mà cửa sổ được dịch

chuyển được tính toán sử dụng qsBc, đã được tạo ra trong suốt giai đoạn tiền xử lý, đối với ký tự đầu tiên ngay sau cửa sổ

Quy trình này lặp lại cho tới khi cửa sổ đạt được vị trí ngoài (n - m +1)

Phân tích thuật toán:

Trang 23

Trong giai đoạn tiền xử lý: Thời gian tính toán của của thuật toán là O(m + σ) và độ

phức tạp không gian là O(σ)

Trong giai đoạn tìm kiếm: Trong trường hợp tốt nhất độ phức tạp thời gian là O([(n/(m + 1))]) Các ký tự không xảy ra trong mẫu có giá trị dịch chuyển (m+1)

được xác định bởi qsBc được tính toán trong suốt giai đoạn tiền xử lý Việc xem xét trường hợp tốt nhất là các ký tự trong mẫu hoàn toàn khác so với các ký tự trong văn bản, đối sánh m ký tự của mẫu trong văn bản thu được giá trị dịch chuyển

(m+1) tại mỗi lần thử nghiệm và do đó độ phức tạp thời gian là O([(n/(m + 1))])

Trong trường hợp xấu nhất độ phức tạp thời gian là O(m(n-m+1)) Thực tế tất cả các ký tự trong văn bản được đối sánh không hơn m thời gian, tổng số các so sánh ký tự đối với n ký tự của văn bản không thể nhiều hơn m(n+1); Sự dịch chuyển bằng 1 và các ký tự được đối sánh trong mỗi lần thử nghiệm Điều này được nhận ra khi các ký tự trong mẫu tương đồng chính xác với các ký tự trong văn bản

Độ phức tạp thời gian trung bình không thể được xác định một cách chính xác vì nó chủ yếu phụ thuộc vào cỡ bảng chữ cái và xác xuất lần xuất hiện của mỗi

ký tự riêng lẻ trong văn bản

Phần trình tự được xem xét để chạy thử

MARTKQTARKSTGGKAPRKQLATKAARKSAPSTGGVKKPHRYRPGTV

T=MARTKQTARKSTGGKAPRKQLATKAARKSAPSTGGVKKPHRYRPGTV P=KAPRKQL

n=47 m=7

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

Trang 24

A A C D E F G H I K L M N P Q R S T V W Y qsBc[a] 6 8 8 8 8 8 8 8 3 1 8 8 5 2 4 8 8 8 8 8

Một bảng được thành lập với cỡ σ, lưu trữ ký tự và giá trị bước nhảy tương

ứng của nó

Giai đoạn tìm kiếm

Thử nghiệm đầu tiên :

Trang 26

Như đã chỉ ra ở trên, so sánh ký tự với ký tự không thành Giá trị dịch chuyển được tính toán, nhưng cửa sổ không dịch chuyển, vì nó đi ra ngoài điểm cuối cùng bên phải của văn bản

2.3 Thuật toán TVSBS

2.3.1 Giới thiệu

Thuật toán TVSBS được Rahul Thathoo và cộng sự công bố vào năm 2006

[4] và được đặt tên theo tên năm tác giả Rahul Thathoo, Ashish Virmani, S Sai Lakshmi, N Balakrishnan, K Sekar Thuật toán TVSBS là sự kết nối của thuật toán

SSABS và Berry-Ravindran Hiệu suất của thuật toán mới đã được cải thiện bằng việc sử dụng chuyển mạch bảng ký tự Berry-Ravindran, số lượng các so sánh ký tự ít hơn

Hiệu quả của thuật toán nằm trong 2 giai đoạn: giai đoạn tiền xử lý và giai đoạn tìm kiếm Các ký tự trong mẫu được xử lý trước trong giai đoạn tiền xử lý và thông tin này được sử dụng trong giai đoạn tìm kiếm để giảm tổng số lần so sánh ký

tự, từ đó giảm thiểu tổng số thời gian thực hiện Giai đoạn tìm kiếm được thiết lập bằng cách thay đổi trật tự so sánh các ký tự trong mỗi lần thử nghiệm và bằng cách chọn một giá trị dịch chuyển tối ưu cho phép một bước nhảy tối đa trên văn bản

Sự khác nhau giữa các thuật toán chủ yếu do quy trình dịch chuyển và tốc độ dịch chuyển khi một lỗi đối sánh được phát hiện Giai đoạn tiền xử lý sử dụng thuật toán Berry-Ravindran và giai đoạn tìm kiếm sử dụng thuật toán SSABS là tốt nhất

2.3.2 Thuật toán

Hàm dịch chuyển xuất hiện brBc (Berry-Ravindran) hiệu quả trong giai đoạn tiền xử lý Giai đoạn tìm kiếm của thuật toán này tương tự như thuật toán SSABS Trật tự so sánh được thực hiện bằng việc so sánh ký tự cuối cùng của cửa

sổ và mẫu đến khi chúng có sự đối sánh, sau đó thuật toán so sánh ký tự đầu tiên của cửa sổ và mẫu Điều này cũng thiết lập sự tương đồng ban đầu giữa mẫu và cửa sổ Các ký tự còn lại sau đó được so sánh từ phải sang trái cho tới khi đối sánh hoàn tất hoặc một lỗi đối sánh xảy ra Sau mỗi lần như vậy, việc bỏ qua cửa sổ đạt được bằng giá trị dịch chuyển brBc cho 2 ký tự liên tiếp ngay cạnh cửa sổ Hàm brBc được khai thác để đạt được sự dịch chuyển cực đại và giảm thiểu số lượng so sánh ký tự Các yếu tố này được chọn lọc giúp cải thiện đáng kể hiệu suất thuật toán

Giai đoạn tiền xử lý:

Giai đoạn này được thực hiện bằng việc sử dụng hàm brBc, đối với tất cả các ký tự trong bảng chữ cái được thiết lập Thuật toán xem xét 2 ký tự liên tiếp

Trang 27

xuất hiện ngay sau cửa sổ, tại đó qsBc sử dụng 1 ký tự duy nhất ngay sau cửa sổ Giai đoạn tiền xử lý của thuật toán bao gồm trong việc tính toán mỗi cặp ký tự

(a,b) với a, bcũng như với sự xuất hiện ngoài cùng bên phải của ab trong

b ]

0 [ P if

1 m

ab ]

1 i [ P ] i [ P if 1 i m

a ]

1 m [ P if 1

min ]

b , a [

brBc

Giá trị dịch chuyển tính toán bởi hàm brBc được lưu trữ trong mảng một chiều thay vì mảng hai chiều và thời gian thực hiện ít hơn trong suốt giai đoạn tìm kiếm Chỉ số của mảng một chiều được tính toán bằng các phép toán thao tác trên bit Điều này giảm thời gian thực hiện để có giá trị dịch chuyển brBc và thời gian truy cập bộ nhớ

Bước nhảy của cửa sổ được tìm bằng cách lấy giá trị trị dịch chuyển của 2 ký

tự liên tiếp ngay sau cửa sổ Giá trị bước nhảy tối đa của cửa sổ đạt được khi cả hai

ký tự này không xuất hiện trong mẫu Xác xuất của một ký tự trong mẫu xuất hiện trong bảng chữ cái nhỏ hơn khi cỡ bảng chữ cái lớn và nó giúp đạt được bước nhảy cực đại của cửa sổ

Thuật toán TVSBS, sử dụng hàm brBc hiệu quả hơn hàm qsBc và bmBc vì

những lý do sau:

Trong qsBc, giá trị dịch chuyển đi kèm với mỗi ký tự liền kề cửa sổ, được gọi là a, dựa trên sự xuất hiện ngoài cùng bên phải của ký tự này Tuy nhiên, brBc

tính toán giá trị dịch chuyển dựa trên sự xuất hiện của 2 ký tự liên tiếp ngoài cùng

bên phải, được gọi là ab, tại đó b là ký tự kế tiếp a trong mẫu, ngoài cửa sổ Xác xuất xuất hiện của ab ngoài cùng bên phải trong mẫu nhỏ hơn xác xuất xuất hiện của a Do đó, brBc thường cung cấp sự dịch chuyển tốt hơn so với qsBc

Giá trị brBc ≥ 1, do đó nó độc lập thực hiện thuật toán nhanh, trong khi đó một

số trường hợp giá trị bmBc ≤ 0 yêu cầu sử dụng bmGs (phép dịch chuyển khớp

Boyer-Moore) để tính toán bước nhảy của cửa sổ

Giai đoạn tìm kiếm:

Giai đoạn 1 và 2 giải quyết trật tự các so sánh ký tự giữa cửa sổ và mẫu

Trường hợp khác

(2.1)

Trang 28

Giai đoạn 1: Giai đoạn tìm kiếm bắt đầu với việc so sánh ký tự cuối cùng

của mẫu với ký tự cuối cùng của cửa sổ Nếu có đối sánh, ký tự đầu tiên của mẫu sẽ được so sánh với ký tự đầu tiên của cửa sổ Nếu tất cả ký tự này đối sánh, thuật toán

di chuyển tới bước tiếp theo, bỏ qua giai đoạn 2 và đến giai đoạn 3

Giai đoạn 2: Trong bước này, so sánh tuần tự thực hiện từ ký tự thứ nhất đến

thứ hai cho đến khi nào đối sánh hoàn thành hoặc lỗi đối sánh xảy ra Nếu toàn bộ

ký tự đối sánh, vị trí tương ứng của cửa sổ trên văn bản được hiển thị và thuật toán bước vào giai đoạn thứ 3 Trong trường hợp có lỗi đối sánh, thuật toán sẽ chuyển tới bước tiếp theo

Giai đoạn 3: Đây là bước bao gồm việc phục hồi giá trị dịch chuyển tương

ứng với 2 ký tự (đặt ngay sau cửa sổ) từ mảng một chiều đã được tạo ra trong suốt giai đoạn tiền xử lý Cửa sổ được dịch chuyển từ trái sang phải dựa trên giá trị dịch chuyển này

Tất cả 3 bước này trong giai đoạn tìm kiếm được lặp lại cho tới khi cửa sổ

đạt được vị trí ngoài n-m+1

Phân tích thuật toán:

Trong giai đoạn tiền xử lý độ phức tạp thời gian của thuật toán là O(+k*)

và độ phức tạp không gian là O(+k*)

Trường hợp tốt nhất xảy ra khi tất cả các ký tự trong mẫu hoàn toàn khác so

với ký tự trong văn bản, giá trị dịch chuyển brBc là (m+2) Do vậy độ phức tạp thời

gian là O([n/(m+2)])

Trường hợp xấu nhất xảy ra khi tất cả các ký tự được đối sánh trong mỗi lần

thử Tất cả ký tự của văn bản được đối sánh không nhiều hơn m lần, tổng số so sánh

ký tự cho n ký tự của văn bản không vượt quá m(n-m+1) Do đó, độ phức tạp thời

Trang 30

Một lần nữa, so sánh các ký tự cuối cùng của mẫu và mẫu dẫn tới một lỗi đối sánh, do đó cửa sổ được dịch chuyển tới 10

Lần này, lối đối sánh cũng xảy ra giữa các ký tự cuối cùng của mẫu và cửa

sổ Do đó, cửa sổ được dịch chuyển bằng 1

trên giá trị dịch chuyển của (y[j + m], y[j + m + 1]), có giá trị bằng 2

Lần thứ sáu:

2 1

GCAGAGAG

Trang 31

Số lần thử nghiệm và so sánh ký tự tương ứng trong suốt giai đoạn tìm kiếm đối với SSABS Các giá trị được thực hiện bởi thuật toán TVSBS cho thấy hiệu quả của phương pháp luận đã được triển khai

2.4 Thuật toán Faster Quick Search

2.4.1 Giới thiệu

Thuật toán Faster Quick Search (FQS) do Jie Lin và cộng sự công bố vào năm 2014 [3] Thuật toán FQS là một thuật toán cải tiến dựa trên thuật toán đối sánh mẫu chính xác QS FQS tính toán độ dài dịch chuyển dự kiến, cho phép các dịch chuyển tối đa và một số lượng so sánh nhỏ hơn giữa mẫu và văn bản FQS cũng sử dụng bảng dịch chuyển xuất hiện của thuật toán QS trong giai đoạn tiền xử

lý mẫu

2.4.2 Thuật toán

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

Trong giai đoạn tiền xử lý, FQS cần xác định 3 yếu tố:

- Vị trí dịch chuyển tối đa dự kiến (pos) cho mẫu P bằng Biểu thức

- Bảng dịch chuyển cho mẫu P sử dụng thuật toán QS

Trang 32

- Bảng dịch chuyển cho P[0,…,pos – 1], tiền tố của P, sử dụng thuật toán QS Vị trí dịch chuyển dự kiến tối đa pos sử dụng quy tắc dịch chuyển xuất hiện, pos được

tính toán từ mẫu P trong giai đoạn tiền xử lý

Tính toán trong mảng ES:

Trong tính toán đơn giản, ES j = Pc ( j – prepos( c)) cho ký tự c, c ϵ ∑ số phức hợp thời gian cho tính toán tất cả ES j , nơi đó 0 ≤ j ≤ m -1, là O(m││) ESj có thể được tính toán từ ES j-1 khi j > 0 Điều đó có nghĩa rằng, giá trị bước nhảy dự kiến ở vị trí hiện tại có thể được tính toán bằng cách sử dụng giá trị bước nhảy dự

kiến đã biết ở vị trí trước Sự khác nhau giữa ES j và ES j-1 là:

ES j – ES j – 1 = Σ c (j – prepos j (c)) – Σ c ( j – 1–prepos j -1 (c))

=Σ c (j – prepos j (c)) – ( j – 1–prepos j -1 (c))) (2.3)

= Σ c (1 – (prepos j (c) –prepos j -1 (c)))

= Σ c (1) – Σ c (prepos j (c) –prepos j -1 (c))) Since Σ c (1)= |Σ|, then ES j – ES j – 1 = |Σ| - Σ c (prepos j (c) –prepos j -1 (c))

Với mỗi c ∑ và c ≠ P[j], preposj – 1 = preposj (c)) Các ký hiệu trong mẫu P, ES j đều có preposj(c) = preposj-1(c) chỉ trừ một ký hiệu ở vị trí hiện tại là j

Nói cách khác, trừ ký hiệu hiện tại trong mẫu P, tất cả các ký hiệu khác trong Σ sẽ

có preposj(c) = preposj-1(c) Sự khác nhau giữa ES j và Es j - 1 được phân tích như sau:

Giai đoạn tiền xử lý của thuật toán

Sử dụng một hàng Prepos với độ dài |Σ|, để giữ vị trí trước đó cho mỗi ký tự

c, tại đó c  ∑ Theo phân tích ở trên, các tác giả có thể có ES j từ ES j = ES j-1 + |Σ| - (j − preposj− 1(P[j])), tại đó m-1 ≥ j ≥ 1 Phép tính có thể được thực hiện trong thời gian liên tục cho mỗi vị trí được đưa ra j

Trang 33

Từ tính toán về vị trí dịch chuyển tối đa dự kiến (pos), ta biết được độ phức tạp thời gian là Θ(m + |Σ|) Thời gian cần thiết dự kiến là Θ(pos + |Σ|) và độ phức tạp thời gian giai đoạn tiền xử lý tổng thể cho FQS là Θ(m + |Σ|) khi pos < m

2.4.2.2 Giai đoạn tìm kiếm

Trong giai đoạn tìm kiếm, FQS bắt đầu so sánh vị trí trong mẫu P, có giá trị dịch chuyển tối đa dự kiến, chứ không phải vị trí ngoài cùng bên phải trong P như trong QS (và các biến thể BM khác)

Sau bước tiền xử lý, chiến lược tìm kiếm FQS như sau:

Bước 1: Kiểm tra các ký tự ở vị trí dịch chuyển tối đa dự kiến pos, đó là vị trí

so sánh các biểu tượng P[pos] và T[j+pos];

Bước 2: Nếu có một lỗi đối sánh, dịch chuyển mẫu P dựa trên khoảng cách được xác định bằng next[T[j+pos]] Đi tới bước 1 để tiếp tục kiểm tra vị trí pos; Bước 3: Nếu không thì tiến hành so sánh P[0,…,m-1] với T[j,…,j+m-1] theo

cách như trong thuật toán QS Nếu tất cả đều đối sánh, một mẫu đối sánh sẽ được

tìm thấy tại vị trí j trong T;

Bước 4: Dù tất cả đều đối sánh hay không, dịch chuyển mẫu sang bên phải dựa trên giá trị của shift[T[j+m]] bằng việc sử dụng thuật toán QS cổ điển

Bước 5: Lặp lại các bước từ 1-4 ở trên trong vòng lặp cho tới khi văn bản T

bị trống (j>n-m)

2.4.2.3 Phân tích thuật toán

Tính chính xác của thuật toán FQS : Kế thừa chủ yếu từ tính chính xác của

thuật toán QS Trong giai đoạn tìm kiếm, FQS sử dụng 2 hàng dịch chuyển ký tự xuất hiện trong 2 bước, khi so sánh mẫu P với văn bản T, FQS trước tiên kiểm tra vị

trí pos trong P, vị trí dịch chuyển tối đa dự kiến so sánh nó với vị trí j + pos trong T Nếu có một lỗi đối sánh, nó sử dụng hàng dịch chuyển next, để dịch chuyển mẫu tới

vị trí bên phải kế tiếp Giá trị dịch chuyển ở hầu hết pos + 1 Nó sẽ không bỏ qua bất

kỳ vị trí đối sánh quan trọng nào Sau mỗi so sánh biểu tượng đầu tiên (P[pos] vàT[j + pos]), các bước còn lại được thực hiện tương tự như trong thuật toán QS

Độ phức tạp của thuật toán : Trong giai đoạn tìm kiếm, thuật toán FQS tích

hợp một bước tiền xử lý với thuật toán QS Độ phức tạp thời gian của bước này

vẫn liên tục và tổng phức tạp thời gian là O(n) Độ phức tạp thời gian trong trường hợp xấu nhất đối với giai đoạn tìm kiếm trong FQS là O(mn) và độ phức tạp thời gian trung bình là O(n) Không gian mở rộng được yêu cầu bởi FQS là trong O(|Σ|) Thuật toán FQS có yêu cầu thời gian và không gian trong trường hợp xấu

Trang 34

nhất và trung bình tương tự như QS Cũng như với thuật toán BM thông thường,

độ phức tạp trong trường hợp xấu nhất có thể được cải thiện O(n + m + |Σ|) bằng

sử dụng phương pháp thử nghiệm dịch chuyển khớp đã ghi nhớ

Thuật toán 1 cho thấy các bước chi tiết của giai đoạn tiền xử lý để tính toán

vị trí dịch chuyển tối đa (pos) cho mẫu P[0,…, m-1] sử dụng Biểu thức (2.1) Trong

đó, biến ES là giá trị dịch chuyển dự kiến, được khởi tạo bằng 0 Trong bước đầu tiên của vòng lặp trong Dòng 5-12, ES 0 sẽ được thiết lập bằng |Σ| − 1 Biến maxES

là giá trị dịch chuyển tối đa dự kiến Đồng thời, pos, một vị trí trong mẫu P, là vị trí

ở nơi mà giá trị dịch chuyển tối đa dự kiến nằm ở trong mẫu P

Thuật toán 2: Giai đoạn tìm kiếm (Thuật toán FQS(P, m, T, n, |Σ|)

Trang 35

Dòng 1 gọi Thuật toán 1 để có được vị trí pos với giá trị dịch chuyển dự kiến

tối đa Các Dòng 2 và 3 tính toán 2 bảng dịch chuyển (gọi là next và shift) cho tiền

tố P[0,…,pos-1] và toàn bộ mẫu P, trong giai đoạn tiền xử lý FQS còn thêm vào 2

dòng: Dòng 1 và Dòng 2 Tổng phức hợp thời gian của 3 bước vẫn là O(m + |Σ|)

FQS quyết định vị trí dịch chuyển dự kiến tối đa Vị trí này có một khoảng cách dịch chuyển thống kê tối đa Một khi có lỗi đối sánh được tìm thấy, thuật toán nhảy đến vị trí mới, có khoảng cách dịch chuyển dự kiến tối đa Cơ chế này tăng tốc đáng kể cho thuật toán FQS

Dòng 2-4 khởi tạo giá trị của mỗi biểu tượng bằng “-1” cho hàng vị trí mới xuất hiện PrePos bằng biểu thức:

ES j = c (j - prepos j (c)), 0 j m-1, c (2.5) Còn các Dòng từ 5-12 là vòng lặp for tính toán giá trị dịch chuyển dự kiến

của mỗi vị trí là ES và quyết định giá trị dịch chuyển tối đa dự kiến Dòng 6 tính

toán giá trị dịch chuyển dự kiến ES bằng việc sử dụng phương pháp tịnh tiến, như

đã được thảo luận ở trên (Biểu thức (2.3))

Trong Thuật toán 2, các dòng từ 5-17 bắt vào giai đoạn tìm kiếm So với thuật toán QS, FQS thêm các Dòng từ 6-11 trong giai đoạn tìm kiếm Trong giai

đoạn này, ban đầu, văn bản T được sắp xếp với mẫu P, ở các vị trí T[j] và P[0], tại

đó 0 ≤ j ≤ n – m FQS trước tiên sẽ bắt đầu so sánh vị trí giá trị dịch chuyển dự kiến tối đa, pos trong P, với vị trí tương ứng j + pos trong T Nếu lỗi đối sánh xảy ra, mẫu được dịch chuyển tới 1 vị trí được xác định bằng giá trị next[T[j + pos]] Các

bước này được thực hiện trong các Dòng 6-11 Nếu không thì, thuật toán FQS làm

việc tương tự như thuật toán QS bằng việc bắt đầu so sánh mẫu P[0,…,m-1] và T[j,…,j + m-1] từ phải sang trái

Các dòng từ 9-12 tìm kiếm giá trị dịch chuyển tối đa dự kiến maxES Cuối cùng thuật toán trở về vị trí dịch chuyển tối đa dự kiến pos, trong Dòng 13 Quy trình tiền xử lý này chỉ thực hiện một lần cho mẫu P với thời gian O(m + |Σ|)

Trang 36

2.4.3 Ví dụ

Cho văn bản T = “GCATCGCAGTCAG TATACAGTAC” (n = 23) và mẫu

P = “GCAGTCAG” (m = 8) Văn bản và mẫu là các trình tự DNA từ bảng chữ Σ = {A, C, G, T}, do vậy |Σ| = 4

Tính toán vị trí dịch chuyển dự kiến tối đa (pos) cho mẫu P

Để tính toán giá trị dịch chuyển dự kiến tối đa của mẫu P = “GCAGTCAG”,

trong Dòng 3 của Thuật toán 3, vị trí xuất hiện tại hàng PrePos trong Thuật toán 3 cho 4 biểu tượng này được khởi tạo bằng “1” Sau đó, Thuật toán 3 tính toán pos

cho mẫu P, bằng cách quét từ trái sang phải

Khi ký tự đầu tiên P[0] = G được đọc (j = 0), PrePos[G] có giá trị khởi tạo 1” Dòng 6 thiết lập ES = 0 + 4 -(0 -(-1)1) = 3 ES = 3 là khoảng cách dịch chuyển

“-dự kiến cho Vị trí 0 trong mẫu P Trong Dòng 7, PrePos[G] được thiết lập tới vị trí hiện tại 0; điều này chỉ ra rằng ký tự G xuất hiện ít nhất 1 lần tại thời điểm này

Trong các Dòng 8-10, khoảng cách dịch chuyển tối đa dự kiến đã thiết lập bằng

maxES = 3

Khi ký tự thứ hai P[1] = C được đọc (j = 1), Dòng 6 thiết lập ES = 3 + (-1)) = 5 Trong Dòng 7, PrePos[C] được thiết lập vị trí hiện tại của nó là 1 Trong

4-(1-Dòng 9, khoảng cách dịch chuyển tối đa dự kiến được thiết lập là 5

Khi ký tự thứ ba P[2] = A được đọc (j = 2), Dòng 6 sẽ thiết lập ES = 5 + 4 (2 -(-1)) = 6 Trong Dòng 7, PrePos[A] được thiết lập vị trí hiện tại là 2 Trong

-Dòng 9, khoảng cách dịch chuyển tối đa dự kiến được thiết lập là 6

Khi ký tự thứ tư P[3] = G được đọc (j = 3), giá trị PrePos[G] được thay đổi tới vị trí xuất hiện trước đó; trong trường hợp này, PrePos[G] = 0 Dòng 6 sẽ thiết lập ES = 6 + 4 -(3 -(0)) = 7 Trong Dòng 7, PrePos[G] được thiết lập vị trí hiện tại

là 3 Trong Dòng 9, khoảng cách dịch chuyển tối đa dự kiến được thiết lập là 7

Ngày đăng: 12/05/2016, 10:45

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[11] Bộ công cụ smart tại trang web: http://www.dmi.unict.it/~faro/smart/, địa chỉ tải bộ công cụ:http://www.dmi.unict.it/~faro/smart/download.php Link
[1] Nguyễn Thị Thúy (2012). Một họ thuật toán sánh mẫu WU-MANBER và thực nghiệm. Luận văn Thạc sỹ, Trường Đại học Công nghệ.Tiếng Anh Khác
[2] C. Charras and T. Lecroq (2004). Handbook of exact string matching algorithms. King’s College Publications Khác
[3] Jie Lin, Donald A. Adjeroh, Yue Jiang (2014). A Faster Quick Search Algorithm. Algorithms 7(2): 253-275 Khác
[4] Rahul Thathoo and Ashish Virmani and Sai S Lakshmi, and N. Balakrishnan, and K. Sekar (2006). TVSBS: A fast exact pattern matching algorithm for biological sequences. Current Science 91 (1). pp. 47-53 Khác
[5] Simone Faro, Thierry Lecroq (2010). The Exact String Matching Problem: a Comprehensive Experimental Evaluation. CoRR abs/1012.2547 Khác
[6] Simone Faro, Thierry Lecroq (2011). 2001-2010: Ten Years of Exact String Matching Algorithms. Stringology 2011: 1-2 Khác
[7] Simone Faro, Thierry Lecroq (2013). The exact online string matching problem: A review of the most recent results. ACM Comput. Surv. 45(2): 13 Khác
[8] S. S. Sheik, Sumit K. Aggarwal, Anindya Poddar, N. Balakrishnan, Krishna Sekar (2004). A FAST Pattern Matching Algorithm. Journal of Chemical Information and Modeling 44(4): 1251-1256 Khác
[9] Timo Raita (1992). Tuning the Boyer-Moore-Horspool String Searching Algorithm. Softw., Pract. Exper. 22(10): 879-884.Trang web Khác

HÌNH ẢNH LIÊN QUAN

Bảng 2.2. Các hàng ES, next và shift cho một mẫu ví dụ - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Bảng 2.2. Các hàng ES, next và shift cho một mẫu ví dụ (Trang 37)
Bảng 3.1 giới thiệu danh sách các thuật toán sánh xâu từ năm 1970 được cài  đặt trong công cụ SMART, mỗi thuật toán đều được bổ sung phiên bản đầy đủ trong  SMART - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Bảng 3.1 giới thiệu danh sách các thuật toán sánh xâu từ năm 1970 được cài đặt trong công cụ SMART, mỗi thuật toán đều được bổ sung phiên bản đầy đủ trong SMART (Trang 41)
Bảng 3.2. Danh sách bộ các kho ngữ liệu thử nghiệm - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Bảng 3.2. Danh sách bộ các kho ngữ liệu thử nghiệm (Trang 46)
Hình 3.1. Đăng nhập bằng bộ trung gian PUTTY - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Hình 3.1. Đăng nhập bằng bộ trung gian PUTTY (Trang 52)
Hình 3.2. Kết quả thực nghiệm 1 - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Hình 3.2. Kết quả thực nghiệm 1 (Trang 53)
Bảng dưới đây cho tổng hợp các kết quả thực nghiệm: - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Bảng d ưới đây cho tổng hợp các kết quả thực nghiệm: (Trang 53)
Hình 3.3. Kết quả thực nghiệm 2 tìm mẫu trong chuỗi - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Hình 3.3. Kết quả thực nghiệm 2 tìm mẫu trong chuỗi (Trang 57)
Hình 3.4. Kết quả thực nghiệm 2 tìm mẫu trong file - Một họ thuật toán đối sánh mẫu chính xác nhanh SSABS   TVSBS   FQS và thực nghiệm
Hình 3.4. Kết quả thực nghiệm 2 tìm mẫu trong file (Trang 58)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w