CHƯƠNG 1 : BÀI TỐN VÀ THUẬT TỐN SÁNH MẪU
2.1.2.3. Giai đoạn tìm kiếm mẫu
Vịng lặp chính của thuật tốn bao gồm các bước sau đây:
1. Tính tốn giá trị băm h dựa trên các ký tự B hiện hành từ các văn bản (bắt đầu với tm-B+1 … tm).
2. Kiểm tra giá trị của SHIFT[h]: nếu nĩ > 0, dịch chuyển văn bản và quay lại bước 1, nếu khơng, chuyển đến bước 3.
3. Tính tốn giá trị băm của các tiền tố của văn bản (bắt đầu từ ký tự m
4. Kiểm tra p, HASH[h]≤p<HASH[h + 1] khi PREFIX[p]=text_prefix.
Khi chúng bằng nhau, kiểm tra các mẫu thực tế (được đưa ra bởi PAT_POINT[p]).
Quá trình tìm kiếm mẫu trong WM được mơ tả chi tiết như sau:
(1) Xác định cửa sổ đối sánh ở đầu văn bản "T". Con trỏ văn bản "Tp" trỏ
tới hậu tố của cửa sổđối sánh.
(2) Nếu Tp> Tend, cĩ nghĩa là con trỏ văn bản hiện tại vượt quá kết thúc của văn bản, và kết thúc quá trình tìm kiếm. Hoặc nếu khơng, tính tốn giá trị
băm của khối ký tự hậu tố, chẳng hạn như hash(sbc). "sbc" cĩ nghĩa là khối ký tự hậu tố.
(3) Sử dụng các giá trị băm để tra cứu các bảng SHIFT cho khoảng cách dịch chuyển của khối ký tự. Đĩ là SHIFT[hash(sbc)]. Nếu giá trị là "0", cĩ nghĩa là khối ký tự hiện nay bằng với khối ký tự hậu tố của một số mẫu bên trong cửa sổ đối sánh, chuyển tới bước (4). Hoặc nếu khơng,
Tp=Tp+SHIFT[hash(sbc)], và chuyển tới bước (2).
(4) Sử dụng giá trị băm "hash(sbc)" để tra cứu bảng HASH, và ta tìm thấy sự xuất hiện của các mẫu cĩ cùng một khối ký tự hậu tố như văn bản hiện tại bên trong cửa sổ đối sánh. Mục nhập là một con trỏ trỏ đến đầu của danh sách liên kết và được lưu trữ trong HASH[hash (sbc)].
(5) Tính tốn giá trị băm của khối ký tự tiền tố của văn bản "T" bên trong
cửa sổđối sánh hiện tại, chẳng hạn như hash(pbc). “pbc"cĩ nghĩa là khối ký tự
tiền tố.
(6) Tính tốn giá trị băm của khối ký tự tiền tố cho mỗi mẫu trong danh sách liên kết, chỉ khi giá trị bằng hash(pbc) mẫu này cần phải được so sánh. Nếu mẫu phù hợp với chuỗi văn bản hiện hành, ghi lại kết quả. Cho dù cĩ đối sánh
hay khơng, Tp = Tp + 1, và chuyển tới bước (2).