CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ THUẬT TOÁN SÁNH MẪU
3.2. Bộ công cụ Smart
3.2.1. Các thành phần chính trong bộ công cụ SMART
Từ năm 1970 đến nay, đã có trên 80 thuật toán sánh xâu được đề xuất, chủ yếu là trong khoảng 10 năm gần đây. Công cụ SMART cung cấp một tập các thuật toán sánh xâu thông minh dựa trên ngôn ngữ lập trình C, giúp người tìm kiếm có thể biểu diễn các kết quả thử nghiệm và so sánh chúng trên thực nghiệm. SMART cũng cung cấp một cơ sở thực hành chuẩn cho việc thử nghiệm các thuật toán sánh xâu và chia sẻ kết quả với cộng đồng.
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 đặt trong công cụ SMART, mỗi thuật toán đều được bổ sung phiên bản đầy đủ trong SMART. Để thử nghiệm phiên bản đã được thi hành trong SMART ta chỉ cần lựa chọn tên phiên bản. Ví dụ, có thể sử dụng lệnh ./select bf để lựa chọn thuật toán Brute Force. Từ đường link tên thuật toán, ta có thể tìm thấy trang thông tin chi tiết và sơ đồ dẫn đến thư mục đó. Từ đường link tên phiên bản, ta có thể tìm thấy trang mã hóa (code) của thuật toán viết trên C.
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
Thuật toán Tên gọi
trong SMART
Năm công bố
Brute Force bf 1990
Deterministic Finite Automaton aut 1990
Morris Pratt mp 1970 Knuth Morris-Pratt kmp 1977 Boyer Moore bm 1977 Horspool hor 1980 Apostolico Giancarlo ag 1986 Karp Rabin kr 1987 Zhu Takaoka zt 1987 Optimal Mismatch om 1990 Maximal Shift ms 1990
Quick Search qs 1990 Apostolico Crochemore ac 1991
Two Way tw 1991
Tuned Boyer Moore tunedbm 1991
Colussi col 1991
Smith smith 1991
Galil Giancarlo gg 1992
Raita raita 1992
String Matching on Ordered ALphabet smoa 1992
Reverse Factor rf 1992
Shift Or so 1992
Shift And sa 1992
Not So Naive nsn 1993
Simon simon 1993
Turbo Boyer Moore tbm 1994
Reverse Colussi rcol 1994
Turbo Reverse Factor trf 1994 Forward DAWG Matching fdm 1994 Backward DAWG Matching bdm 1994
Skip Search skip 1998
KMP Skip Search kmpskip 1998 Backward Nondeterministic DAWG Matching bndml 1998
Berry Ravindran br 1999
Backward Oracle Matching bom 1999 Double Forward DAWG Matching dfdm 2000 Ahmed Kaykobad Chowdhury akc 2003
Fast Search fs 2003
Simplified Backward Nondeterministic DAWG
Matching sbndm
2003
Two-Way Nondeterministic DAWG Matching tndm 2003 Backward Nondeterministic DAWG Matching for
long patterns lbndm
2003
Shift Vector Matching svm0 2003
Forward Fast Search ffs 2004
Backward Fast Search, Fast Boyer Moore bfs 2004
Tailed Substring ts 2004
SSABS ssabs 2004
Wide Window ww 2005
Linear DAWG Matching ldm 2005 Backward Nondeterministic DAWG Matching
with loop unrolling bndmq2
2005
Backward Nondeterministic DAWG Matching
with Horspool Shift sbndm-bmh
2005
Horspool with BNDM test bmh-sbndm 2005 Forward Nondeterministic DAWG Matching fndm 2005 Bitparallel Wide Window bww 2005 Fast Average Optimal Shift Or faoso2 2005 Average Optimal Shift Or aoso2 2005
TVSBS tvsbs 2006
Boyer Moore Horspoolusing Probabilities pbmh 2006 Improved Linear DAWG Matching ildm1 2006 Improved Linear DAWG Matching 2 ildm2 2006 Franek Jennings Smyth fjs 2007 Wu Manber for Single Pattern Matching hash3 2007
Two Sliding Window tsw 2008
Bit Parallel Length Invariant Matcher blim 2008 Genomic Rapid Algofor String Pattern Matching graspm 2009
SSEF ssef 2009
Extended Backward Oracle Matching ebom 2009 Forward Backward Oracle Matching fbom 2009 Simplified Extended Backward Oracle Matching sebom 2009 Simplified Forward Backward Oracle Matching sfbom 2009 Succint Backward DAWG Matching sbdm 2009
Forward Simplified Backward Nondeterministic
DAWG Matching fsbndm
2009
Backward Nondeterministic DAWG Matching
with q-grams bndmq2
2009
Simplified Backward Nondeterministic DAWG
Matching with q-grams sbndmq2
2009
Shift Or with q-grams ufndmq2 2009 Small Alphabet Bit Parallel sabp 2009 Bit Parallel2 Wide Window bp2ww 2010 Bit Parallel Wide Window2 bpww2 2010 Factorized Backward Nondeterministic DAWG
Matching kbndm
2010
Factorized Shift And ksa 2010 BNDM with Extended Shift bxs 2010 Forward Simplified BNDM using q-grams and s-
forward characters fsbndm20
2011
Crochemore-Perrin algorithm using SSE
instructions ssecp
2011
Backward SNR DAWG Matching bsdm 2012 Exact Packed String Matching algorithm epsm 2013
Theo Thierry Lecroq và Simone Faro, hai thuật toán Brute Force và Deterministic Finite Automaton được Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein giới thiệu.
3.2.1.2. Bộ các kho ngữ liệu thử nghiệm
Công cụ SMART cũng cung cấp một ngữ liệu 12 văn bản mà trên đó các thuật toán đối sánh xâu có thể được kiểm tra. Các văn bản trong dữ liệu có rất nhiều
loại khác nhau, bao gồm các văn bản ngôn ngữ tự nhiên, trình tự gene, trình tự protein và văn bản ngẫu nhiên với sự phân bố đồng đều các kí tự.
Công cụ SMART cũng cung cấp một ngữ liệu 12 văn bản mà trên đó các thuật toán đối sánh xâu có thể được kiểm tra. Các văn bản trong dữ liệu có rất nhiều loại khác nhau, bao gồm các văn bản ngôn ngữ tự nhiên, trình tự gene, trình tự protein và văn bản ngẫu nhiên với sự phân bố đồng đều các kí tự.
Bảng 3.2. Danh sách bộ các kho ngữ liệu thử nghiệm
Tên bộ dữ liệu Mô tả
englishTexts
một văn bản tiếng Anh (6,1 MB) chứa phiên bản The King James của Kinh thánh (3,9 MB) và cuốn sách về thế giới thực của CIA (2,4 MB).
italianTexts
một văn bản tiếng Ý (5 MB) chứa cuốn sách La Gerusalemme Liberata (690,1 KB), Il fu Mattia Pascal (447,3 KB), La divina commedia (551,9 KB) I promessi sposi (1,3 MB), Orlando furioso (1,5 MB), Ultime lettere di Jacopo Ortis (281,2 kB) và Il canzoniere (296,3 kB).
frenchTexts
một văn bản tiếng Pháp (6,6 MB) chứa các tác phẩm của Victor Hugo như: Notre-Dame de Paris (1,1 MB), L'homme qui rit (1,2 MB), Les misèrables Tome I (713 KB), Tome II (631 KB), Tome III (557 KB), Tome IV (791 KB) và Tome V (676 KB).
chineseTexts
một văn bản tiếng Trung (5,7 MB) chứa các tác phẩm: Yue Wei Cao Tang Bi Ji (1,2 MB), Zhong Guo Shi Da Jin Shu Zhi Guo Shai Tian Xiang (786 KB), Journey to the West (2,3 MB), Huan Xi Yuan Jia (745 KB) và một số tiểu thuyết lịch sử Trung Quốc (688 KB)
midimusic
một xâu dữ liệu đa phương tiện MIDI (2,7 MB) chứa 206 tệp MIDI về Johann Sebastian Bach work (1685-1750) có kích thước dữ liệu khoảng 4 KB đến 205 KB.
genome một xâu dữ liệu gen (4,4 MB) chứa các bộ gen hoàn chỉnh của vi khuẩn E. Coli (4,4 MB).
protein một xâu dữ liệu protein (3,1 MB) chứa một chuỗi protein trong bộ chuỗi gen người (3.1 MB).
rand2, rand4, rand8, rand16, rand32, rand64, rand128,
rand256
Các văn bản ngẫu nhiên có độ dài 5 MB trong các bảng chữ cái tương ứng có số lượng ký tự là 2, 4, 8, 16, 32, 64, 128, 256.
3.2.1.3. Tài liệu hướng dẫn về SMART
Tài liệu hướng dẫn về SMART gồm hướng dẫn phân bổ bộ nhớ cho SMART trong các hệ điều hành MAC, WINDOWS và Linux, cài đặt và sử dụng công cụ SMART. Phần dưới đây của luận văn giới thiệu về cài đặt công cụ SMART.
Cài đặt công cụ SMART:
• Tải về các gói nhị phân chính xác từ các trang download, tương ứng với hệ thống của máy. Đây là một tài liệu nén có chứa mã nhị phân và dạng văn bản.
• Sao chép lưu trữ và giải nén trong một thư mục địa phương.
Điều này sẽ tạo thư mục mới, có tên SMART, và có chứa các tập tin và thư mục sau đây:
• docs/ là thư mục chứa các tập tin tài liệu;
• source/ là thư mục chứa các mã nhị phân của tất cả các thuật toán chuỗi kết hợp;
• results/ là thư mục chứa các tập tin với dữ liệu thực nghiệm;
• data/ là thư mục chứa ngữ liệu được sử dụng để thử nghiệm các chuỗi kết hợp các thuật toán;
• copyright.txt chứa từ chối trách nhiệm về bản quyền; • gpl-3.0.txt chứa giấy phép công cộng chung GNU;
• SMART là chương trình chính được sử dụng để chạy kiểm tra thử nghiệm; • testlà một tiện ích thông minh được sử dụng để kiểm tra tính đúng đắn của thuật toán chuỗi kết hợp;
• selectlà một tiện ích thông minh được sử dụng để lựa chọn / bỏ chọn các thuật toán chuỗi kết hợp.
Lựa chọn thuật toán thử nghiệm
Chương trình chọn có thể được sử dụng để lựa chọn hay bỏ chọn các thuật toán cho kết quả thử nghiệm. Viết tên của thuật toán (hay một danh sách các thuật
toán), chỉ sau khi lệnh select, để chọn hoặc bỏ chọn nó. Ví dụ, lệnh $ ./select Bndm fs hash3 sẽ chọn BNDM, thuật toán tìm kiếm Fast-Search và thuật toán HASH3. Các lệnh tiếp theo $ ./select Fs sẽ bỏ chọn các thuật toán tìm kiếm Fast-Search.
Tham số lệnh which thể hiện các thuật toán đã được lựa chọn cho kết quả thử nghiệm. Do đó chạy lệnh $ ./select -which sẽ đưa ra output là:
bndm hash3
Tham số lệnh -Show liệt kê tên của tất cả các thuật toán có thể có trong kết quả thử nghiệm. Hơn nữa sử dụng các tham số lệnh -none bỏ chọn tất cả các thuật toán và -All để chọn tất cả các thuật toán. Ví dụ lệnh $ ./select -none KMP bf bỏ chọn tất cả các thuật toán trước đó và lựa chọn thuật toán Knuth-Morris-Pratt và Brute-Force. Tương tự ta có lệnh $ ./select -all KMP bf sẽ chọn tất cả các thuật toán với các ngoại lệ của Knuth-Morris-Pratt và Brute-Force.
Cuối cùng tham số -h sẽ cho ra một danh sách các trợ giúp.
Cách chạy chương trình kiểm tra thử nghiệm
Lệnh chính SMART (chương trình smart ở thư mục smart.13.02/source/) được sử dụng để chạy kiểm tra thử nghiệm. Cách đơn giản nhất để sử dụng SMART là để chạy một tìm kiếm duy nhất cho một mô hình tùy chỉnh và một văn bản tùy chỉnh. Ta có thể sử dụng các tham số -simple, tiếp theo là các mô hình và các văn bản. Ví dụ lệnh $ ./smart -simplelet sampletext sẽ tìm kiếm văn bản sampletext cho lần xuất hiện của mô hình cho phép. Quan sát thấy kích thước mô hình đầu vào chứa 100 ký tự, trong khi kích thước văn bản chứa 1000 ký tự. Các chế độ - simplekhông ra bản đồ thử nghiệm. Nếu không, ta có thể chọn các dạng đó để tính toán các kết quả thử nghiệm bằng cách sử dụng các tham số -text (tham số này là bắt buộc). Ví dụ lệnh $ ./smart -textenglishTexts sẽ tính toán kết quả thí nghiệm trên englishTexts. Các dữ liệu hay thư mục nằm trong thư mục chính SMART, có chứa tất cả các tập văn bản mà có thể được chọn thông minh. Có thể xem danh sách tất cả các tập văn bản trong SMART. Nếu không, ta có thể chọn các tham số -text all để chạy kiểm tra thử nghiệm cho tất cả các ngữ liệu.
$ ./smart -text all
Ta có thể thiết lập một kích thước giới hạn trên của kích thước văn bản được sử dụng để thử nghiệm các thuật toán chuỗi kết hợp. Theo mặc định kích thước giới hạn trên này được thiết lập để 1MB (1024 bytes). Điều này có nghĩa rằng (ít nhất) 1024 byte đầu tiên của văn bản được chọn sẽ được sử dụng để thử nghiệm. Bạn có thể thay đổi mặc định kích thước trên ràng buộc bằng cách sử dụng các tham số -
tsize, tiếp theo là một số nguyên chỉ ra Mbytes mà sẽ được sử dụng. Ví dụ lệnh $ ./smart -văn Bản englishTexts -tsize 4 sẽ thực hiện các bài kiểm tra trên nhiều nhất 4 MB của corpus englishText.
Các bộ đệm văn bản được lưu trữ trong bộ nhớ chia sẻ, do đó nếu thiết lập các ràng buộc trên một K giá trị của nó là cần thiết để hệ thống của máy cho phép phân bổ ít nhất K MB bộ nhớ chia sẻ.
Theo mặc định cho mỗi tập tin đầu vào, SMART tạo ra bộ 500 mẫu có chiều dài cố định, được triết xuất một cách ngẫu nhiên từ các văn bản (500 bản sao của cùng một khuôn mẫu trong trường hợp chế độ Đơn giản). Chiều dài của mô hình chạy trên các giá trị 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 và 4096. Đối với mỗi tập các mô hình công cụ báo cáo trung bình trong thời gian chạy của 500 mẫu. Mỗi lần chạy được thể hiện trong một số phần nghìn của giây.
Sử dụng các tham số -pset để thay đổi kích thước của tập hợp các mẫu tạo ra bởi công cụ. Ví dụ lệnh $ ./smart -texts Gen -pset 100 sẽ chạy kiểm tra thử nghiệm trên văn bản gen tạo ra bộ 100 mẫu có chiều dài cố định (giá trị mặc định là 500).
Ta có thể sử dụng các tham số Short để thực hiện các bài kiểm tra thử nghiệm trên các mẫu ngắn. Đặc biệt các lệnh $ ./smart -texts Gen -pset 100 Short
thực hiện kiểm tra thử nghiệm bằng cách tạo ra bộ 100 mẫu có chiều dài cố định khác nhau, trên các giá trị 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 và 32.
Nếu muốn hạn chế việc tìm kiếm một mô hình chiều dài nhất định, sử dụng các tham số -plen và xác định một ràng buộc trên và một ràng buộc thấp hơn cho độ dài của mô hình. Ví dụ lệnh $ ./smart -texts Gen -pset 100 -plen 16 128 thực hiện kiểm tra thử nghiệm trên độ dài các giá trị 16, 32, 64, 128. Nếu muốn thử nghiệm các thuật toán cho một chiều dài duy nhất của mô hình (ví dụ 128) sử dụng lệnh $ ./smart -texts Gen -pset 100 -plen 128 128. Trong việc thực hiện các bài kiểm tra các công cụ in ra các lần chạy của mỗi thuật toán (đây là thiết lập mặc định). Sử dụng các -occ tham số để in ra cũng là số lần xuất hiện tìm thấy bởi các thuật toán trong thời gian chạy. Kể từ khi mẫu được chiết xuất một cách ngẫu nhiên từ các văn bản, số lần xuất hiện ít nhất 1.
Cuối cùng các tham số -h sẽ tạo ra một danh sách trợ giúp.
Các công ty liên kết công cụ SMART cho bất kỳ thí nghiệm có một mã số và chữ độc đáo trên 13 ký tự, bắt đầu với EXP, tiếp theo là 10 con số. Việc thực hiện các lệnh sau đây:
$ ./smart -text gen -pset 100 -occ