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 toá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 toá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 ngoà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 toán băm và xem xét toà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 toán, tránh việc xuyên qua danh sách, đề xuất lọc địa chỉ dựa trên thuật toá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