Vòng lặp chính của thuật toán bao gồm các bước sau đây:
1. Tính toá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 toá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 toá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 toá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 toá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).