You are on page 1of 26

THUẬT TOÁN TRONG

AN TOÀN THÔNG TIN


Information Security Algorithms

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 1
01. TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN
TRONG TRƯỜNG FP
NỘI DUNG
02. MỘT SỐ THUẬT TOÁN VỀ SỐ
NGUYÊN TỐ

03. ĐỐI SÁNH MẪU TRÊN CHUỖI

Wednesday, June 7, 2023 | Page 2 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin
CHƯƠNG 03
ĐỐI SÁNH MẪU TRÊN CHUỖI

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 3
ĐỐI SÁNH MẪU TRÊN CHUỖI

Bài toán đối sánh mẫu

Thuật toán đối sánh vét cạn

Thuật toán Boyer-Moore

Thuật toán Knuth-Morris-Pratt

Thuật toán Wu-Manber

Thuật toán Aho-Corasick

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 4
Đối sánh mẫu là gì?

 Định nghĩa: Cho một văn bản T và một mẫu chuỗi ký tự cần
tìm P, hãy tìm kiếm sự xuất hiện của mẫu P trong văn bản T
 T= T0T1T2…Tn-1, |T|=n (độ dài của văn bản)

 P= P0P1P2…Pm-1, |P|=m (độ dài của mẫu đối sánh)


 Σ – bảng chữ cái với |Σ| = c

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 5
Ví dụ
 Ví dụ:
- T: “the rain in Viet Nam stays mainly on the plain”
- P: “n th”
 Ứng dụng:
- Các trình text editors, dịch vụ tìm kiếm (e.g. Google),…

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 6
Vai trò của đối sánh mẫu trong ATTT

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 7
String và Substring
 S là một chuỗi ký tự có kích thước là n.
 Một chuỗi con (substring S[i .. j]) của S là một phần của chuỗi
ký tự S bắt đầu từ chỉ số i và kết thúc tại j,
 với ta có:
 Tiền tố (prefix) của S là chuỗi con S[0 .. i]
 Hậu tố (suffix) của S là chuỗi con S[i .. n-1]
 Ví dụ:
S
a n t o a n
0 5

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 8
String và Substring (Ví dụ)
S
a n t o a n
0 5
 Substring S[1..3] == "nto"
 Tất cả các tiền tố có thể có của S:
 "antoan", "antoa", "anto", "ant", "an”, "a"

 Tất cả các hậu tố có thể có của S:


 "antoan", “ntoan", “toan", “oan", “an", “n"

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 9
Các thuật toán đối sánh mẫu

Đơn mẫu: Đa mẫu:


 Vét cạn  Wu – Manber
 Knuth-Morris-Pratt (KMP)  Commentz - Walter
 Karp–Rabin  Aho–Corasick
 Boyer–Moore Indexing:
 Horspool  Trie (và suffix trie)
 Shift-­OR, Shift­‐AND  Suffix tree
 Factor searches
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 10
ĐỐI SÁNH MẪU TRÊN CHUỖI

Bài toán đối sánh mẫu

Thuật toán đối sánh vét cạn

Thuật toán Boyer-Moore

Thuật toán Knuth-Morris-Pratt

Thuật toán Wu-Manber

Thuật toán Aho-Corasick

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 11
Thuật toán vét cạn
 Kiểm tra mỗi vị trí của đoạn văn bản T để tìm sự xuất hiện đầu
tiên của mẫu P tại vị trí đó

T: a n t o a n T: a n t o a n

P: o a n P: o a n
Mỗi lần dịch chuyển một ký tự để so sánh nhằm tìm P trong T

....
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 12
Phân tích độ phức tạp tính toán
 Độ phức tạp thời gian O(mn) trong trường hợp tệ nhất.
 Tuy nhiên trong trường hợp trung bình độ phức tạp: O(m+n).
 Hiệu quả trong trường hợp bảng chữ cái lớn:
 Ví dụ. A..Z, a..z, 1..9, ...

 Không hiệu quả trong trường hợp bảng chữ cái nhỏ
 Ví dụ. 0, 1 (chẳng hạn file nhị phân, file ảnh...)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 13
Phân tích độ phức tạp tính toán

 Ví dụ về trường hợp tồi nhất:


 T: "aaaaaaaaaaaaaaaaaaaaaaaaaah"
 P: "aaah"
 Ví dụ về trường hợp trung bình:
 T: "a string searching example is standard"
 P: “example"
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 14
ĐỐI SÁNH MẪU TRÊN CHUỖI

Bài toán đối sánh mẫu

Thuật toán đối sánh vét cạn

Thuật toán Boyer-Moore

Thuật toán Knuth-Morris-Pratt

Thuật toán Wu-Manber

Thuật toán Aho-Corasick

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 15
Thuật toán Boyer - Moore
 Thuật toán đối sánh mẫu Boyer – Moore dựa trên hai kỹ thuật
chính:
1. Kỹ thuật looking-glass (đối sánh cuối trước)
 Tìm mẫu P trong T bằng cách tìm từ cuối về đầu của mẫu P
 i, j là chỉ số của các kí tự đang được so sánh T[i] với P[j]
■ Nếu thì
■ Ngược lại thực hiện nhảy cách
2. Kỹ thuật character-jump (nhảy cách)
 Khi ký tự đối sánh không khớp tại vị trí T[i] == x
 Tức là

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 16
Thuật toán Boyer – Moore (Nhảy cách-Case 1)

 Nếu P chứa x ở một vị trí t nào đó, t < j, thì dịch chuyển P sang phải
sao vị trí t trong P thẳng với vị trí i hiện tại của T. Sau đó i chuyển sang
vị trí inew, j chuyển về cuối của P (jnew)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 17
Thuật toán Boyer – Moore (Nhảy cách-Case 2)

 Ngược lại, dịch P sao cho P[0] thẳng với T[i+1], sau đó i chuyển sang vị trí inew và j

chuyển về cuối của P (jnew)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 18
Thuật toán Boyer – Moore (Ví dụ 1)
 Bài tập áp dụng:
T: a p a t t e r n m a t c h i n g a l g
g o r i t h m

1 3 5 11 10 9 8 7
P: r i t h m r i t h m r i t h m r i t h m

2 4 6
r i t h m r i t h m r i t h m

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 19
Tiền xử lý (hàm last occurrence)
 Thuật toán Boyer-Moore tiền xử lý mẫu P và bảng chữ cái Σ để
xây dựng một hàm last occurrence L()
 L() ánh xạ tất cả các ký tự trong bảng chữ cái Σ thành số nguyên

 L(x) được định nghĩa là:


 Chỉ số i lớn nhất sao cho P[i] == x, hoặc
 -1 nếu không tồn tại chỉ số i đó

 L() được tính khi mẫu P được đưa vào.


 Giá trị của L() được lưu trữ dưới dạng một mảng

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 21
Tiền xử lý (hàm last occurrence) – Ví dụ

P a b a c a b
0 1 2 3 4 5
 A = {a, b, c, d}
 P: "abacab"
x a b c d
L(x) 4 5 3 -1

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 22
Tiền xử lý (hàm last occurrence)
 Khi thực hiện đối sánh gặp kí tự không khớp thì cần sử dụng L()
để nhảy cách như sau:

 Trong đó m là độ dài của mẫu P

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 23
Ví dụ minh họa
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

T: a b a c aa aa bb aa dd c aa bb aa cc aa bb a a b b

1 13 12 11 10 9 8

P: a b a c a bb aa bb aa cc aa bb

4 3 2 7 x a b c d
a b a cc aa bb a b a c a bb L(x) 4 5 3 -1

5
a b a c a bb

6 13
12
i = i15
–1
14
11 –=1=6–
5 121 = 4
11
14
13
10 5
j =j 0,
= jhết
3––11chuỗi
2
1 ==42– 1
51
0 đối
=3 4sánh P.
a b a c a bb 5
4 +về
i =Trả
7
8
14 +66– min(3,
–min(5,
KQ L(T(5))
L(T(4))
min(5,11++L(T(7))
L(T(8))
L(T(14))
11
10 –– min(5,
= 13
14
20 min(3, 11 ++ 4)
4) == 68
(-1)) 7= 14
15
j=6–1=5

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 24
Thuật toán Boyer – Moore (Ví dụ 2)
x a b c e h i l m n o p r t w
 Bài tập áp dụng: L(x) 2 5 -1 6 7 -1 0 -1 -1 1 -1 3 -1 -1 -1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

T: t h i s p l aa c e i t w a s b r i g h t e r t h a n t o mo r o w

0 1 2 3 4 5 6 7 1 8
P: i n p e a c e i n p e a c e

5 4 3 2 7 9
i n p e a c e i n p e a c e i n p e a c e

6
i n p e a c e

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 25
Độ phức tạp
 Độ phức tạp thời gian của thuật toán Boyer-Moore trong trường
hợp tồi nhất là O(nm + Σ)
 Boyer-Moore thực hiện tốt nếu bảng chữ Σ lớn, chậm khi bảng
chữ Σ nhỏ.
 Tốt cho các văn bản ngôn ngữ thông thường, kém cho tệp nhị phân

 Boyer-Moore nhanh hơn nhiều lần so với vét cạn.

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 26
Độ phức tạp (trường hợp tệ nhất)

T: a a a a a a a a a
 T: "aaaaaaaaa" 6 5 4 3 2 1
P: b a a a a a
 P: "baaaaa“ 12 11 10 9 8 7
b a a a a a
Mất bao nhiêu bước
thực hiện đối sánh? 18 17 16 15 14 13
b a a a a a
24 23 22 21 20 19
b a a a a a

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Wednesday, June 7, 2023 | Page 27

You might also like