CHƯƠNG 1 : BÀI TỐN VÀ THUẬT TỐN SÁNH MẪU
2.3. Thuật tốn WM đồng thời cao
2.3.2. Giai đoạn tiền xử lý và tìm mẫu của HCWM
HCWM cĩ hai giai đoạn, tiền xử lý và tìm kiếm các mẫu.
1) Giai đoạn tiền xử lý bao gồm các cơng đoạn sau đây.
(1) Chia tất cả các mẫu thành bộ bốn mẫu "PS1-PS4".
(2) Xác định kích thước của cửa sổđối sánh cho "PS4".
(3) Thiết lập bảng HASH "HASH1-HASH4" cho mỗi mẫu.
(4) Thiết lập bảng SHIFT "SHIFT3", "SHIFT4" cho "PS3", "PS4".
(5) Thiết lập bảng PREFIX "PREFIX4" cho "PS4".
2) Giai đoạn tìm mẫu HCWM cĩ thể tìm kiếm các mẫu như bộ mẫu "PS1-PS4" đồng thời. Đối với mỗi bộ mẫu, quá trình sánh mẫu khác nhau. a) Tìm kiếm "PS4", quá trình sánh mẫu của "PS4" giống như WM. b) Tìm kiếm "PS3", kích thước của cửa sổđối sánh là “m = 3", độ dài của khối ký tự " B = 2 ".
(1) Xác định cửa sổ đối sánh ở đầu văn bản "T". Con trỏ văn bản "Tp" trỏ đến hậu tố của cửa sổđối sánh.
(2) Nếu Tp>Tend, kết thúc việc tìm kiếm "PS3". Hoặc nếu khơng, chuyển tới bước (3).
(3) Tính tốn giá trị băm "sh" các hậu tố của các ký tự văn bản bên trong cửa sổ đối sánh và tra cứu "SHIFT3", nếu "SHIFT3[sh]>0", Tp=Tp+ SHIFT3[sh], quay lại bước (2). Hoặc nếu khơng, chuyển tới bước (4).
(4) Tính tốn giá trị băm "h" của các ký tự văn bản bên trong cửa sổ đối sánh, tra cứu "HASH3", nếu "HASH3[h]= null", mẫu phù hợp, ghi lại kết quả. Tp=Tp + 1, chuyển tới bước (2).
c) Tìm kiếm "PS2", kích thước của cửa sổ đối sánh là "m = 2", độ dài của khối ký tự "B = 2".
(1) Xác định cửa sổ đối sánh ở đầu văn bản "T". Con trỏ văn bản "Tp" trỏ đến hậu tố của cửa sổđối sánh.
(2) Nếu Tp>Tend kết thúc việc tìm kiếm cho "PS2". Hoặc nếu khơng, chuyển tới bước (3).
(3) Tính tốn giá trị băm "h" của các ký tự văn bản bên trong cửa sổ đối sánh, tra cứu "HASH2", nếu "HASH2[h]=null", mẫu phù hợp, ghi lại kết quả. Tp=Tp + 1, chuyển tới bước (2). d) Tìm kiếm "PS1" Tìm kiếm "PS1", kích thước của cửa sổđối sánh là "m=1", độ dài của ký tự khối "B=1". Quá trình này giống như "PS2". 2.3.3. Ví dụ Giả sử chúng ta cĩ dữ liệu sau đây.
Văn bản "T" = "The mild teacher always told her students to obey the
rules of school."
Mẫu, "P" = {"mild ", "tea", "told", "Micky", "ld", "tu "," t "," m "}
1) Tiền xử lý
(1) Phân loại các mẫu. "PS1" = {" t "," m "}, " PS2 "= {" ld "," tu "}, "PS3"= {" tea "}, " PS4 "= {" mild ", " told ", "Micky"}
(2) Xác định kích thước của cửa sổđối sánh cho "PS4", đĩ là "m = 4".
(3) Thiết lập bảng HASH, xem hình 1. (4) Thiết lập bảng SHIFT, xem hình 2. (5) Thiết lập bảng PREFIX, xem hình 3.
null
hash(m) m null
null hash(tea) tea
hash(t) t null
null
(a) HASH 1 (c) HASH 3
null null
hash(ld) ld hash(ck) micky null
null null
hash(tu) tu hash(ld) mild told null
null null
(b) HASH 2 (d) HASH 4
2) Tìm kiếm mẫu
(1) Tìm kiếm "PS4"
Kích thước của cửa sổđối sánh là "4" và được đặt vào đầu của văn bản.
The mild teacher always told her student to obey the rules of school
Ký tự hậu tố bên trong cửa sổ đối sánh là "e". Tra cứu "SHIFT4". Khi khơng cĩ ký tự nào xuất hiện trong bất kỳ mẫu nào trong "PS4", khoảng cách dịch chuyển là "3".
The mild teacher always told her students to obey the rules of school
Sử dụng giá trị băm của "il" tra cứu "SHIFT4", dịch chuyển cửa sổ đối sánh bên phải 1 ký tự.
The mild teacher always told her students to obey the rules of school
Sử dụng giá trị băm của "ld" tra cứu "SHIFT4", khoảng cách dịch chuyển là "0". Điều đĩ cĩ nghĩa là cĩ thể cĩ 1 mẫu phù hợp ở đây. Tra bảng "HASH4" với hash(ld), lấy các mục của danh sách liên kết, HASH4[hash(ld)]. Tính tốn
giá trị băm của tiền tố bên trong cửa sổđối sánh hiện tại, hash(mi). Xem xét tồn
bộ danh sách liên kết, tính tốn giá trị băm các tiền tố của mỗi mẫu trong danh sách, so sánh giá trị với hash(mi), nếu chúng bằng nhau, cĩ nhiều mẫu phù hợp hơn nữa. Hoặc nếu khơng, tiếp tục cho đến cuối danh sách. Trong ví dụ này, mẫu "mild" là mẫu phù hợp. Dịch chuyển cửa sổ bên phải "1" ký tự.
te ea … up pe yp ti il ll tr ri
1 0 2 2 1 0 1 0 2 1 3
(a) SHIFT 3 (b) SHIFT 4
Hình 2: bảng SHIFT null
hash(mi) micky mill null
null
hash(to) told null
null
The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school The mild teacher always told her students to obey the rules of school
Tương tự như vậy, mẫu "told" cũng là 1 mẫu phù hợp. Khi cửa sổ đối sánh đi đến "scho", khoảng cách dịch chuyển là "3", thì cửa sổ đối sánh đã đến
đoạn cuối cùng của văn bản, kết thúc việc tìm kiếm. (2) Tìm kiếm "PS3"
Kích thước của cửa sổđối sánh là "3" và cửa sổđối sánh nằm ởđầu văn bản.
The mild teacher always told her student to obey the rules of school The mild teacher always told her student to obey the rules of school
Tương tự như vậy, tra bảng "SHIFT3", dịch chuyển cửa sổ đối sánh bên phải, bây giờ nĩ nằm ở "tea". Tính tốn giá trị băm của các ký tự bên trong cửa sổ đối sánh, ta nhận được hash(tea). Tra bảng "HASH3" và
"HASH3[hash(tea)]" là khơng null. Cĩ nghĩa là cĩ mẫu phù hợp. Dịch chuyển cửa sổ bên phải "1" ký tự và tiếp tục tìm kiếm cho đến khi kết thúc văn bản.
(3) Tìm kiếm "PS2"
Tìm kiếm văn bản từđầu. Kích thước của cửa sổđối sánh là "2". Khoảng cách dịch chuyển luơn là "1". Tính tốn giá trị băm của các ký tự văn bản bên trong cửa sổđối sánh và tra bảng "HASH2". Nếu giá trị bảng khơng phải là null, ta tìm thấy mẫu phù hợp. Tiếp tục tìm kiếm cho đến khi kết thúc văn bản.
(4) Tìm kiếm "PS1". Tương tự như "PS2".
Thuật tốn WM đồng thời cao HCWM tiến hành chia tất cả các mẫu thành nhiều bộ mẫu khác nhau theo chiều dài của chúng và xử lý các bộ mẫu tương ứng, cĩ tác động tích cực đến hiệu suất mẫu ngắn. Ngồi ra, cấu trúc dữ
liệu độc lập được sử dụng cho các bộ mẫu khác nhau tạo ra sự tương tranh cao, tăng cường tốc độ sánh mẫu của HCWM rất nhiều. Baojun Zhang và cộng sựđã chứng tỏ bằng thử nghiệm rằng HCWM cho hiệu suất cao hơn nhiều so với WM
2.4. Thuật tốn WM sử dụng bảng tiền tố
Đồng thời với thuật tốn HCWM, Baojun Zhang và cộng sự, 2009 [ZCP09] đã đề xuất thêm một phiên bản cải tiến thuật tốn WM dựa trên cơ chế
sử dụng bảng lọc mẫu tiền tốđể tăng tốc độ hoạt động của thuật tốn; phiên bản này được gọi là thuật tốn WM sử dụng bảng tiền tố (Address Filtering Based WM: AFWM).
2.4.1. Cải tiến của thuật tốn
Trong WM, khi danh sách liên kết được tìm thấy qua bảng HASH, các con trỏ địa chỉ của mẫu trong danh sách liên kết phải thỏa mãn
HASH[hash(sbc)]≤ p<HASH[hash(sbc) +1].
Cải tiến trong thuật tốn AFWM là ở chỗ sử dụng giá trị hash của tiền tố
và một danh sách liên kết tiền tốđể tra tìm trong bảng PREFIX của WM. Trong danh sách liên kết tiền tố, tất cả các mẫu cĩ cùng tiền tố sẽ được sắp xếp tăng dần theo con trỏđịa chỉ của mẫu. Vì vậy, chỉ cần so sánh những mẫu cĩ con trỏ địa chỉ xác định trong phạm vi [HASH[hash(sbc), HASH[hash(sbc)+1]. Khi các
mẫu trong danh sách liên kết tiền tốđược sắp xếp tăng dần theo địa chỉ con trỏ, thì khi địa chỉ con trỏ ≥ HASH[hash(sbc) +1], quá trình tìm kiếm được hồn thành ngay lập tức.
Cải tiến này cĩ hai lợi thế. Đầu tiên, khơng cần phải tính tốn giá trị băm của các tiền tố cho các mẫu trong danh sách liên kết hậu tố. Thứ hai, khơng cần phải xem xét tồn bộ danh sách liên kết tiền tố.
2.4.2. Giai đoạn tiền xử lý và tìm mẫu trong AFWM
AFWM cĩ hai giai đoạn, tiền xử lý và tìm kiếm mẫu.
a) Quá trình tiền xử lý
Giai đoạn tiền xử lý bao gồm các cơng đoạn sau. (1) Thiết lập bảng HASH.
(2) Thiết lập bảng SHIFT.
(3) Thiết lập bảng PREFIX. Các mẫu trong danh sách liên kết được sắp xếp tăng dần theo con trỏđịa chỉ .
b) Quá trình tìm mẫu
Giả sử kích thước của cửa sổđối sánh là "m", độ dài của khối ký tự là "B = 2".
(1) Xác định vị trí cửa sổ so sánh ở đầu văn bản "T". Trỏ con trỏ "Tp" vào hậu tố của cửa sổđối sánh.
(3) Tính tốn giá trị băm "sh" các hậu tố của các ký tự văn bản bên trong cửa sổđối sánh và tra bảng "SHIFT", nếu "SHIFT[sh]>0", Tp= Tp + SHIFT[sh],
quay trở lại bước (2). Nếu khơng, chuyển tới bước (4) .
(4) Tra bảng “HASH” với giá trị băm “sh”, tìm danh sách liên kết các mẫu cĩ cùng hậu tố lại với nhau. Các con trỏ địa chỉ của những mẫu này thỏa mãn
điều kiện HASH[sh] ≤ p< HASH[sh+1].
(5) Tính tốn giá trị băm“ph” các tiền tố của các ký tự văn bản bên trong cửa sổ so sánh và tra bảng “PREFIX”, tìm danh sách liên kết tiền tố, bắt đầu xem xét từ đầu danh sách, nếu con trỏ địa chỉ của mẫu đặt trong phạm vi
([HASH[sh],HASH[sh+1]), thì dừng lại, hoặc nếu khơng, chuyển đến con trỏ kế
tiếp, tiếp tục như vậy cho đến khi con trỏ ≥ HASH[sh +1]. Trong quá trình sánh mẫu, nếu xuất hiện các mẫu phù hợp, ghi lại kết quả. Tp=Tp+1, chuyển tới bước (2).
2.4.3.Ví dụ
Giả sử kích thước của khối ký tự là B = 2 và ta cĩ cặp dữ liệu như sau: Văn bản " T" = " We still use this machine though it is obsolete. " Mẫu "P " = {“still”, “student”, “trill”, “stupe”}
a) Tiền xử lý
(1) Xác định kích thước của cửa sổđối sánh là "m = 5 " . (2) Thiết lập bảng HASH, xem hình 4.
(3) Thiết lập bảng SHIFT, xem hình 5. (4) Thiết lập bảng PREFIX, xem hình 6.
… hash(dd) P hash(de) P student P+1 hash(df) P+1 P student … P+1 still hash(lk) P+1
P+2 trill hash(ll) P+1 still P+2 trill P+3
P+3 stupe hash(lm) P+3
P+4 stype …
hash(pd) P+3
hash(pe) P+3 stupe P+4 stype P+5
hash(pf) P+5 (a) cấu trúc lưu trữ mẫu (b) HASH Hình 4: Cấu trúc lưu trữ mẫu và bảng HASH st tu ud de up pe yp ti il ll tr ri … 3 2 1 0 1 0 1 2 1 0 3 2 4 Hình 5: bảng SHIFT null
hash(st) P student P+1 still P+3 stupe P+4 stype null null
hash(tr) P+2 trill null null
b) Tìm mẫu
Đầu tiên, cửa sổ so sánh nằm ởđầu văn bản.
We still use this machine though it is obsolete.
Ký tự hậu tố bên trong cửa sổđối sánh là "st". Tra bảng "SHIFT", khoảng cách dịch chuyển là "3".
We still use this machine though it is obsolete.
Sử dụng giá trị băm "ll" tra bảng "SHIFT", khoảng cách dịch chuyển là "0". Điều đĩ cĩ nghĩa là vị trí hiện tại của cửa sổ đối sánh là một cổng vào so sánh. Tra bảng "HASH" với hash(ll), ta nhận được danh sách liên kết hậu tố, HASH[hash(ll)] (hình 4). Dãy con trỏ địa chỉ của danh sách liên kết hậu tố là [P+1, P+3]. Sử dụng các giá trị băm của tiền tố trong cửa sổ so sánh hiện tại “st”
để tra bảng "PREFIX", lấy danh sách liên kết tiền tố, PREFIX[hash(st)] (hình
6). Bây giờ ta sẽ so sánh các con trỏđịa chỉ .
Trong danh sách liên kết tiền tố, mẫu đầu tiên là "student". Con trỏđịa chỉ
của nĩ là "P". Bởi vì "P" khơng nằm trong phạm vi [P+1, P+3], khơng cần phải so sánh. Tiếp tục chuyển tới mẫu kế tiếp. Mẫu thứ hai là "still". Con trỏ địa chỉ
của nĩ là "P +1" nằm trong phạm vi địa chỉ [P+1, P+3], quá trình sánh mẫu diễn ra và ta tìm thấy mẫu phù hợp. Tiếp tục với mẫu tiếp theo. Mẫu thứ ba "stupe".
Con trỏ địa chỉ của nĩ là "P+3" nằm ngồi phạm vi [P+1, P+3], kết thúc tìm kiếm.
Ta dịch chuyển cửa sổ so sánh, và tiếp tục các thao tác như trên cho đến khi kết thúc văn bản.
Từ ví dụ trên, ta thấy rằng khi tìm kiếm các danh sách liên kết tiền tố, AFWM tránh việc tính tốn băm và xem xét tồn bộ danh sách.
Theo Baojun Zhang và cộng sự, AFWM khắc phục một số hạn chế cịn tồn tại trong WM, chẳng hạn như thơng tin dư thừa và nhiều phép tính tốn, tránh việc xuyên qua danh sách, đề xuất lọc địa chỉ dựa trên thuật tốn WM. Bằng phân tích hiệu suất thơng qua kết quả thử nghiệm, các tác giả đã minh chứng rằng AFWM tốt hơn so với WM .
CHƯƠNG 3: THỰC NGHIỆM
3.1. Giới thiệu về agrep
AGREP là một cơng cụ mạnh để nhanh chĩng tìm kiếm một tập tin hoặc nhiều tập tin cho một chuỗi hoặc biểu thức chính quy, với khả năng kết hợp gần
đúng và cĩ thể xác định hồ sơ người dùng. Agrep được Udi Manber và Sun Wu phát triển trong giai đoạn 1989-1991 [WM92] và sau đĩ được nhiều người khác cùng tham gia nâng cấp. AGREP tương tự như egrep (hoặc grep hoặc fgrep),
nhưng nĩ tổng quát hơn và thường nhanh hơn. Nĩ cũng hỗ trợ nhiều loại truy vấn, bộ mẫu, và biểu thức thơng thường nĩi chung.
Như đã được giới thiệu, tìm kiếm một mẫu trong văn bản là một hoạt
động phổ biến trong các ứng dụng từ soạn thảo văn bản đến tìm kiếm cơ sở dữ
liệu cho các ứng dụng sinh học phân tử. Trong nhiều trường hợp mẫu cĩ thể
xuất hiện hoặc khơng xuất hiện trong văn bản. Sai sĩt trong văn bản hoặc trong truy vấn cĩ thể do lỗi chính tả hoặc từ những thực nghiệm sai lầm (ví dụ như khi văn bản là một chuỗi DNA). Việc sử dụng sánh mẫu xấp xỉ hạn chếđược một số
lỗi. Hầu hết các trình soạn thảo văn bản và các chương trình tìm kiếm khơng hỗ
trợ tìm kiếm với các lỗi do sự phức tạp liên quan đến việc thực hiện nĩ. Agrep dựa trên thuật tốn hiệu quả và linh hoạt là sánh mẫu xấp xỉ.
So mẫu xấp xỉ cho phép tìm kiếm những thơng tin “gần giống”, trong một số trường hợp các mẫu hoặc văn bản khơng chính xác. Ta khơng thể nhớ
chính tả chính xác của một tên mà ta đang tìm kiếm, tên cĩ thể bị sai chính tả
trong văn bản, văn bản cĩ thể tương ứng với một chuỗi các số nhất định và ta khơng cĩ một mẫu chính xác, các văn bản cĩ thể là một chuỗi phân tử DNA và ta đang tìm kiếm các mẫu gần đúng ...Vấn đề tìm kiếm xấp xỉđặt ra trong nhiều
ứng dụng khoa học kĩ thuật như: nhận dạng chữ viết, nhận dạng ảnh, đồ thị, so sánh xấp xỉ trong các xâu nén cĩ độ dài khơng cố định, xác định cấu trúc con chung 3 chiều trong phân tử dược phẩm và protein, khám phá sự biến đổi trong chuỗi ADN,....và đặc biệt phổ biến trong các hệ thống trích rút văn bản.
Agrep khơng chỉ hỗ trợ một số lớn các tùy chọn, mà cịn rất hiệu quả. Ví dụ, việc tìm kiếm tất cả các lần xuất hiện của Homogenos cho phép hai lỗi trong một 1 MB văn bản mất khoảng 0,2 giây trên một SUN SparcStation H. Sánh mẫu càng chính xác thì thời gian thực hiện càng nhanh.
3.2. Các thuật tốn sử dụng trong agrep
Agrep sử dụng một số thuật tốn khác nhau để tối ưu hĩa hiệu suất cho các trường hợp khác nhau. Đối với truy vấn đơn giản chính xác ta sử dụng một biến thể của thuật tốn Boyer - Moore. Đối với các mẫu đơn giản với các lỗi, chúng tơi sử dụng một chương trình phân vùng, với chương trình Boyer -Moore.
Đối với các mẫu phức tạp hơn, ví dụ các mẫu với chi phí khơng đồng đều chỉnh sửa khác nhau, đa mẫu, biểu thức thơng thường tùy ý, ta sử dụng thuật tốn mới hồn tồn.
3.2.1. Thuật tốn WM trong AGREP
Trong phần mềm Agrep, ưu điểm chính của chương trình này là các thuật tốn sánh mẫu chính xác cĩ thểđược điều chỉnh để hỗ trợ nĩ. Ta minh họa cho ý