Thuật tốn đối sánh chuỗi sơ khai.

Một phần của tài liệu ỨNG DỤNG PHÁT HIỆN ĐỘT NHẬP SỬ DỤNG THUẬT TOÁN ĐỐI SÁNH CHUỖI LAI TRONG CÔNG NGHỆ THÔNG TIN (Trang 39 - 43)

- Với những chuỗi tìm kiếm dài thì thuật tốn đối sánh sơ khai là tồi.

b. Thuật tốn BMH.

- Đối với những mẫu (patterns) cĩ độ dài lớn hơn 6 thì cài đặt thuật tốn BMH khơng tốt bằng thuật tốn BM (Boyer Moore).

c. Thuật tốn Rabin Karp

- Khơng sử dụng các phương pháp nhận biết, loại trừ các kết quả xấu cho các bước tìm kiếm sau.

2.3 Thuật tốn đối sánh chuỗi đa mẫu Aho-Corasick.

Phần 2.2 đã giới thiệu về các thuật tốn đối sánh chuỗi, gồm thuật tốn sơ khai, thuật tốn Horspool và thuật tốn Karp Rabin. Mỗi thuật tốn đều cĩ ưu và

2.3.1 Thuật tốn.

2.3.1.1 Giới thiệu

Thuật tốn Aho Corasick [1] được giới thiệu bởi Alfred V. Aho và Margaret J. Corasick.

Đặc điểm của thuật tốnAho Corasick:

• Xác định vị trí tất cả các lần xuất hiện của bất kỳ của một số hữu hạn các từ khĩa trong một chuỗi văn bản.

• Bao gồm xây dựng một máy đối sánh chuỗi trạng thái hữu hạn từ các từ khố và sau đĩ sử dụng máy đối sánh chuỗi để xử lý chuỗi văn bản trong một lần chạy.

• Việc xây dựng máy đối sánh chuỗi trạng thái hữu hạn cần thời gian tỷ lệ thuận với tổng độ dài của các từ khĩa. Số lượng chuyển trạng thái được thực hiện bởi máy đối sánh chuỗi trong xử lý chuỗi văn bản là độc lập với số lượng từ khĩa.

• Thuật tốn được sử dụng để cải thiện tốc độ của một chương trình tìm kiếm thư mục thư viện theo hệ số 5-10.

2.3.1.2 Máy đối sánh chuỗi

Trong thuật tốn, một chuỗi (String) đơn giản chỉ là một dãy hữu hạn các ký tự.

Lấy K = {y1, y2,…, yk} là một tập hợp hữu hạn các chuỗi mà chúng ta sẽ gọi các “từ khĩa” (Keywords) và để cho x là một chuỗi tùy ý được gọi các “chuỗi văn bản” (Text string).

Hành vi của máy đối sánh chuỗi được quyết định bởi ba hàm: hàm chuyển “Goto” - g, hàm thất bại “Failure” - f, và hàm đầu ra - output.

- Hàm Goto - g: ánh xạ một cặp bao gồm một trạng thái và một kí tự đầu vào trạng thái hoặc một thơng điệp thất bại.

- Hàm thất bại “Failure” - f: ánh xạ một trạng thái đến một trạng thái, và được thực hiện mỗi khi cĩ báo cáo hàm goto thất bại.

- Hàm đầu ra – output: kết hợp một tập các từ khĩa (cĩ thể trống) với các trạng thái.

2.3.1.3 Thuật tốn

a. Thuật tốn 1

Thuật tốn 1: Máy đối sánh chuỗi (Pattern matching machine) [1]

Đầu vào: Một chuỗi văn bản x = a1 a2 … an với mỗi ai là một kí tự đầu vào và một máy đối sánh chuỗi M với các hàm goto – g, hàm thất bại – f, và hàm đầu ra – output như mơ tả ở trên.

Đầu ra: Vị trí của các từ khĩa được xuất hiện trong x. Phương thức:

begin

state  0

for i  1 until n do

begin (adsbygoogle = window.adsbygoogle || []).push({});

while g (state, a i ) = fail do state  f(state) state  g (state, a i )

if output (state) # empty then begin

print i

print output (state) end

vào s’ và ký tự tiếp theo của x trở thành kí tự đầu vào hiện tại.

• Nếu g(s,a) = fail, thực hiện chuyển đổi Failure – f.

Nếu f(s) = s’, máy lặp lại vịng quay với s’ như là trạng thái hiện tại và a như là kí tự đầu vào hiện tại.

Ví dụ:

Hình 2.1 Xây dựng hàm Goto

Hình 2.3 Xây dựng hàm Output

- Văn bản: u s h e r s - Trạng thái: 0 0 3 4 5 8 9 - 2

- Trong trạng thái 4, g(4,e) = 5, lúc đĩ máy đưa vào trạng thái 5, và tìm thấy các từ khĩa “she” và “he” tại cuối vị trí 4 trong chuỗi, do đĩ output (5).

- Trong trạng thái 5, kí tự đầu vào r, máy tạo thành 2 trạng thái dịch chuyển trong vịng tính tốn của nĩ.

- Nếu g(5,r) = fail, M đưa trạng thái 2 = f(5).

- Do đĩ g(2,r) = 8, M đưa trạng thái 8 vào và nâng lên kí tự đầu vào tiếp theo.

- Khơng cĩ đầu ra trong trường hợp tổng quát này.

Như vậy, mỗi lần vượt qua hết vịng lặp for thể hiện một vịng tính tốn của thuật tốn.

Thuật tốn 1 được chuẩn hĩa theo thuật tốn Knuth-Morris-Pratt cho việc tìm kiếm một từ khĩa trong một chuỗi văn bản và cĩ thể được xem như một phần mở rộng của "Trie" tìm kiếm. Hopcroft và Karp (khơng xuất bản) đã đề xuất một chương trình tương tự như thuật tốn 1 cho việc tìm kiếm sự xuất hiện đầu tiên của bất kỳ của một tập hợp hữu hạn các từ khĩa trong một chuỗi văn bản.

Một phần của tài liệu ỨNG DỤNG PHÁT HIỆN ĐỘT NHẬP SỬ DỤNG THUẬT TOÁN ĐỐI SÁNH CHUỖI LAI TRONG CÔNG NGHỆ THÔNG TIN (Trang 39 - 43)