You are on page 1of 5

Nhóm 5

Họ tên MSSV
Lê Thị Liên 20173542
Bùi Thị Linh 20173544
Vũ Đức Long 20173549
Ngô Thị Nhàn 20173566
Trần Phạm Ngọc Ánh 20173486

HÌNH THỨC HÓA


Định nghĩa mã:
Giả sử A là bảng chữ cái. Tập con X của vị nhóm tự do A* được gọi là mã(code) nếu với
mọi m , n≥ 1 và x 1 , … , x n ; y 1 , … , y m ∈ X , từ đẳng thức
x 1 … x n= y 1 … y m

suy ra m = n và x i= y i ∀ i=1 … n
Nói một cách khác tập X là mã nếu mọi từ trong X+ đều chỉ có một phân tích duy nhất qua
các từ trong X. Do 1.1=1 ta thấy rằng mọi tập mã đều không thể chứa từ rỗng. Dễ dàng thấy
rằng mọi tập con của tập mã cũng là mã.
Ví dụ
1. Với mọi bảng chữ cái A, tập X = A luôn là tập mã. Tổng quát hơn với mọi số nguyên
p > 1, X = Ap là tập mã, được gọi là mã uniform từ các từ độ dài p.
2. Tập X = {bb,abb,ab} trên bảng chữ cái A = {a, b} là tập mã.
3. Tập X = {b, aba, ba} từ bảng chữ cái A = {a, b} không là mã vì từ w=baba có hai phân
tích trong X: w = b(aba) = (ba)(ba).
Dựa trên một số đặc trưng về phân tích thừa số, ta có các tập prefix, suffix và biprefix.
Tập prefix: Cho tập X∈A*, khi đó X gọi là tập prefix nếu không có từ nào trong x là thừa số
trái thật sự (proper left factor) của từ khác trong X. Nói cách khác, tập X là prefix nếu v ới mọi
từ x, y trong X:
x ≤ y ⇒ x= y
Tức là hai từ bất kỳ là không so sánh được theo thứ tự prefix.
Hoặc X là tập prefix nếu X-1X =∅ .
Ta có thể thấy rằng nếu X là tập prefix và chứa từ rỗng thì X = {1}.
Đối xứng với định nghĩa prefix ta có tập suffix. Tập X gọi là suffix nếu không có từ nào trong
x là thừa số phải thật sự (proper right factor) của từ khác trong X. Tập X gọi là biprefix nếu
nó vừa là prefix vừa là suffix.
Ví dụ
1. X = {abb,bb,bab} trên A={a,b} là tập prefix vì không tổn tại từ nào trong X có chứa
thừa số bên trái cũng là từ trong X. Tuy nhiên X không phải suffix vì từ abb thuộc X có
thừa số bên phải bb thuộc X. Do đó X không phải là tập suffix.
2. X = {abb,baa,bab} trên A={a,b} là tập prefix vì không tổn tại từ nào trong X có chứa
thừa số bên trái cũng là từ trong X. X cũng là suffix. Do đó X là tập biprefix.
MỘT SỐ LỚP MÃ ĐẶC BIỆT
Trong phần này ta trình bày định lý Sardinas-Patterson làm cơ sở của thuật toán xác định tính
chất mã của một tập. Thuật toán không dựa trên các tính chất mới nào khác ngoài các tính
chất ta đã trình bày ở phần hình thức hoá, mà nó xây dựng dựa trên phương pháp tính toán.
Trong trường hợp tập X hữu hạn (hoặc tổng quát hơn được đoán nhận/recognizable) thì các
tính toán là hữu hạn. Để thể hiện ý tưởng của thuật toán, ta xét ví dụ sau.
Ví dụ: Cho A = {a, b} và tập X = {b, abb, abbba, bbba, baabb}. X không là mã vì ta có th ể ch ỉ
ra rằng từ w = abbbabbbaabb có hai phân tích:
w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb)
Hai phân tích này xác định chuỗi các thừa số bên trái của w, mỗi thừa số tương ứng với cố
gắng tạo hai phân tích khác nhau cho một từ.

(abbba) = (abb)ba
(abbba) = (abb)(b)a
(abbba)bb = (abb)(b)(abb)
(abbba)(bbba) = (abb)(b)(abb)ba
(abbba)(bbba)abb = (abb)(b)(abb)(baabb)
(abbba)(bbba)(abb) = (abb)(b)(abb)(baabb)

suy ra ta tìm được từ w có 2 phân tích khác nhau


w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb).
Trong thuật toán kiểm tra, ta tính tất cả các phần dư trên tất cả các bước tạo phân tích kép.
Thuật toán xác định phân tích kép qua sự kiện từ rỗng nằm trong tập các phần dư.
1. Thuật toán Sardinas Patterson
Đầu vào: tập X ⊂ A+¿ ¿, đầu ra: kết luận X có là mã hay không.
B1: U 1= X−1 X−1
B2: U n +1=U −1
n X∪X
−1
Un

B3: If 1 ∈U n +1 then goto B5


If U n =∅∨U k =U n ≠ ∅(với k < n nào đó) then goto B4 else goto B2
B4: X là mã. Kết thúc
B5: X không là mã. Kết thúc
2. Bài toán kiểm định mã
- Bài toán: Cho một ngôn ngữ chính quy X A+. Hỏi ngôn ngữ có phải là mã không?
 Cách giải: Sử dụng một thủ tục mới bằng phương pháp tổ hợp mới để tính toán
các tập thương Vi, i = 0, 1, … một cách đệ quy như sau:
V0 = X-1X – {ε } (4.1)
-1V ¿∪ V ,
Vi + 1 = ¿ ¿ ¿ X ∪ X i i i≥ 0

Tính đúng đắn của thủ tục trên dựa vào Định lý 4.1 và các Bổ đề sau đây:
 Bổ đề 4.1: Cho X A+ và (V i )i≥ 0 được xác định theo công thức (4.1). Với mọi i
≥ 0, z∈ A* nếu z∈ Vi thì tồn tại n, m≥ 1, x1, x2,…, xn, y1, y2,…, ym ∈ X sao cho
x1x2…xnz = y1y2…ym , x1 ≠y1.
 Bổ đề 4.2: Cho X A+ và (V i )i≥ 0 được xác định theo công thức (4.1). Với mọi
x1, x2,…, xn, y1, y2,…, ym ∈ X, n, m≥ 1 và ∀z∈ A*: |z| < | y m|, nếu x1x2…xnz =
y1y2…ym , x1 ≠y1 thì tồn tại i ≥ 0 sao cho z∈ Vi.
- Định lý 4.1: Cho X A+ và (V i )i≥ 0 được xác định theo công thức (4.1). Khi đó, X là
mã khi và chỉ khi ε ≠ Vi với mọi i≥ 0.
 Hệ quả 4.1: Cho X A+ và (V i )i≥ 0 được xác định theo công thức (4.1). Nếu Vi
≠ ∅ thì X là mã.
 Hệ quả 4.2: Cho X A+ và (V i )i≥ 0 được xác định theo công thức (4.1). Nếu tồn
tại i≥ 0 sao cho Vi+1 = Vi vàε ≠ Vs, với i≥ s ≥ 0thì X là mã.
- Thuật toán ESP (the Extension of Sardinas and Patterson algorithm)
Input: X A+, X là ngôn ngữ chính quy.
Output: Kết luận X có phải là mã hay không.
Bước 1: V0 = X-1X – {ε }, n = 0
If V0 = ∅ the go to Bước 4.
Bước 2: (Loop)
Vn + 1 = ¿ ¿ ¿X ∪ X-1V n ¿ ∪ V n.
Bước 3: If ε ∈ Vn+1 then go to Bước 5
If Vn = Vn+1 then go to Bước 4
Else n = n + 1, Loop.
Bước 4: Thông báo “X là mã” và Kết thúc.
Bước 5: Thông báo “X không là mã” và Kết thúc.
 Ví dụ 1: Cho A = {a, b, c, d}, X = {a, ab, bc, cd, abd}
Theo thuật toán Sardinas – Patterson, ta có U0 = {b, bd, d}, U1 = {c}, U2 = {b},
U3 = {c}.
Vì U3 = U1, suy ra X là mã.
Theo thuật toán ESP, ta có: V0 = {b, bd, d}, V1 = V2 = {b, c, bd, d}.
Vì V2 = V1, suy ra X là mã.
 Ví dụ 2: Cho A = {a, b}, X = {aa, baa, ba}. Theo thuật toán ta có:
V0 = {a}, V1 = {a}. Do V0 = V1 suy ra X là mã.
 Ví dụ 3: Cho A = {a, b}, X = {aa, aab, baa, baab}. Theo thuật toán trên ta có:
V0 = {b}, V1 = {b, aa, aab}, V2 = {ε , b, aa, aab}. Vì ε ∈ V2 suy ra X không là
mã.
- Tổng quát, theo thuật toán Sardinas – Patterson, các tập Ui sẽ được xác định nhờ
áp dụng hữu hạn các phép ∪ , ∩,−,các phép cắt trái, cắt phải. Theo hệ quả (3.1), φ
thỏa tất cả các tập Ui, nghĩa là số các tập Ui không vượt quá số tập con của P (bằng
22.k). Trong trường hợp xấu nhất, thuật toán kiểm tra tính chất mã theo Sardinas –
Patterson có độ phức tạp cỡ hàm mũ O(22.k) theo số bước đã nêu.

3. Độ trễ giải mã
3.1 Định nghĩa
Giả sử X là tập con của A*. Khi đó ta nói X có độ trễ giải mã hữu hạn nếu tổn tại số nguyên
d ≥ 0sao cho:

∀ x , x ' ∈ X ; ∀ y ∈ X d ; ∀ u ∈ A ¿ , uxy ∈ x' X ¿ ⇒ x=x '(¿)Nếu X có độ trễ giải mã hữu hạn thì số nguyên
nhỏ nhất thỏa mãn (*) gọi là độ trễ giải mã của X.
Ví dụ Mã suffix X = {aa, ba, b} có độ trễ giải mã vô hạn. Thật vậy, ∀ d > 0, từ b(aa)d ∈ Xd+1 là
thừa số trái của từ (ba)(aa)d và ba≠b.
3.2 Thuật toán kiểm tra đỗ trễ hữu hạn
Đầu vào: tập X. Đầu ra: độ trễ giải mã của X.
Bước 0: Y = X ; V 0=Y
Bước 1: U 0 =Y −1 X−1
U 0 =U 0 +Y −1 U 0

V 1=U −1 −1
0 +X V0
Bước 2: Biết U i , V i+1 xác định U i +1, V i+2 như sau:
U i +1=V −1
i+1 X

U i +1=U i+1 +Y −1 U i+ 1

V i+ 2=U−1 −1
i+1 Y + X V i+1

Bước 3: Nếu U k =U n hoặc V k =V n khác rỗng thì X là mã có độ trễ giải mã vô hạn. Kết thúc.
Bước 4: Nếu V d +1=∅ thì X có độ trễ giải mã hữu hạn d. Kết thúc.
Ví dụ Giả sử X = {ca1, c, a1b1, b1a2, a2b2, b2a3, a3b3}. Theo thuật toán ta có:

U0 = {a1 } V1 = {b1, a1}


V2 ={b2, a2}
U1 = {a2 ,b1 }
V3 = {b3, a3}
U2 = {a3,b2} V4 = ∅
U3 = {b3}

X có độ trễ giải mã d=3.

You might also like