Tải bản đầy đủ (.pdf) (87 trang)

Ứng dụng ôtômát hữu hạn nâng cao trong mã hóa và an toàn dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.55 MB, 87 trang )

MỤC LỤC
CHƢƠNG 1 ............................................................................................................6
LÝ THUYẾT MÃ ...................................................................................................6
1.1

Nửa nhóm và vị nhóm. ................................................................................6

1.2

Từ và ngôn ngữ ...........................................................................................7

1.3

Mã của các từ hữu hạn ..............................................................................10

1.4

Mã prefix ...................................................................................................12

1.4.1

Định nghĩa.............................................................................................12

1.4.2

Biểu diễn hình học (cấu trúc cây) của mã prefix ..................................15

1.5 Tiêu chuẩn kiểm định mã ..............................................................................18
1.6. Độ trễ giải mã ................................................................................................18
CHƢƠNG 2 ..........................................................................................................20
LÝ THUYẾT ÔTÔMÁT ......................................................................................20


Ôtômát hữu hạn .........................................................................................20

2.1

2.1.1. Các tính chất của hàm chuyển trạng thái ...............................................23
2.1.2. Các phƣơng pháp biểu diễn ôtômát .......................................................24
2.1.3. Ngôn ngữ đoán nhận đƣợc của ôtômát ..................................................26
2.2

Ôtômát hữu hạn không đơn định...............................................................27

2.3

Sự tƣơng đƣơng của ôtômát đơn định và không đơn định........................31

2.4

Cực tiểu hoá ôtômát hữu hạn ....................................................................36

2.5

Ôtômát của mã Prefix................................................................................41

2.6

Các phép toán trên mã Prefix ....................................................................45

CHƢƠNG 3 ..............................................................................................................48
MỘT SỐ ỨNG DỤNG CỦA ÔTÔMÁT TRONG MÃ HÓA BẢO MẬT ..............48
Tính chất không nhập nhằng của ngôn ngữ ..............................................48


3.1
3.1.1

Tích không nhập nhằng và mã ..............................................................48

3.1.2

Xác định độ không nhập nhằng kiểu 1 .................................................51

3.1.3

Xác định độ không nhập nhằng kiểu 2 ..................................................57
Phân bậc ngôn ngữ theo tính không nhập nhằng ......................................68

3.2
3.2.1

Phân bậc kiểu 1 .....................................................................................68

3.2.2

Phân bậc kiểu 2 .....................................................................................70

3.3

Độ trễ giải mã ............................................................................................71
-1-



3.3.1

Độ trễ giải mã và độ không nhập nhằng ...............................................71

3.3.2

Xác định độ trễ giải mã .........................................................................71

3.3.3

Thuật toán xác định độ trễ giải mã của  -mã........................................83

KẾT LUẬN ...............................................................................................................85
TÀI LIỆU THAM KHẢO .........................................................................................87

-2-


DANH MỤC HÌNH VẼ
Trang
Hình 1.1. Một overlap của hai từ liên hợp x và y ..................................................... 9
Hình 1.2. Một X-phân tích của từ w ......................................................................... 9
Hình 1.3. Khởi đầu một phân tích kép của từ w ..................................................... 11
Hình 1.4. Biểu diễn của A = {a, b} và A = {a, b, c}............................................... 16
Hình 1.5. Biểu diễn của X = {a, ba, baa} ............................................................... 16
Hình 1.6. Biểu diễn của X = {aa, ab, bb, baa}. ...................................................... 16
Hình 1.7. Biểu diễn của X = {a, b, ca, cbba, cbcc } . ............................................. 16
Hình 1.8. Biểu diễn của X = a*b............................................................................. 17
Hình 1.9. Biểu diễn của X có 26 phần tử ................................................................ 17
Hình 2.1. Mô hình của ôtômát rời rạc. ................................................................... 20

Hình 2.2. Thanh ghi dịch chuyển 4 bit sử dụng D-flip flaps .................................. 21
Hình 2.3. Máy hữu hạn trạng thái thực hiện thanh ghi dịch chuyển 4 bit. ............. 21
Hình 2.4. Sơ đồ khối của ôtômát hữu hạn .............................................................. 22
Hình 2.5. Biểu diễn đồ thị của ôtômát .................................................................... 26
Hình 2.6. Biểu diễn đồ thị của ôtômát hữu hạn M cho trƣớc ................................. 27
Hình 2.7. Hệ biến đổi biểu diễn ôtômát hữu hạn không đơn định ......................... 28
Hình 2.8

Ôtômát không đơn định M ...................................................................... 29

Hình 2.9

Đồ thị chuyển trạng thái của ví dụ 2.9 .................................................... 38

Hình 2.10 Ôtômát cực tiểu của ôtômát ở Hình 2.9 .................................................. 40
Hình 2.11 Biểu diễn chữ của X ................................................................................ 42
Hình 2.12 Biểu diễn otomat của X ......................................................................... 42
Hình 2.13 Biểu diễn otomat chữ của X. ................................................................... 42
-3-


Hình 2.14 Biểu diễn otomat tối thiểu của X ............................................................ 42
Hình 2.15 Biểu diễn otomat chữ của X .................................................................... 43
Hình 2.16 Biểu diễn otomat tối thiểu của X ............................................................ 43
Hình 3.1. Minh họa một trƣờng hợp tính toán các tập Ui, Vi+1 theo công thức (3.1) 51

-4-


DANH MỤC BẢNG

Trang
Bảng 2.1. Bảng chuyển trạng thái của M ................................................................ 25
Bảng 2.2. Bảng các trạng thái của M ...................................................................... 33
Bảng 2.3. Bảng các trạng thái của M' ..................................................................... 34
Bảng 2.4. Bảng các trạng thái của M'. ..................................................................... 34
Bảng 2.5. Bảng các trạng thái của M ...................................................................... 35
Bảng 2.6. Bảng các trạng thái của M ' .................................................................... 36
Bảng 2.7. Bảng các trạng thái của M ...................................................................... 39
Bảng 2.8. Bảng các trạng thái của ôtômát cực tiểu ................................................. 40

-5-


CHƢƠNG 1

LÝ THUYẾT MÃ
1.1

Nửa nhóm và vị nhóm.
Ta nhắc lại rằng một nửa nhóm S là một tập hợp đƣợc trang bị một phép toán

hai ngôi kết hợp, nếu không nói gì thêm ta sẽ ký hiệu theo lối nhân. Một nửa nhóm
con (t.ư. nhóm con) T của S là một tập con của S cùng với phép toán cảm sinh làm
cho T trở thành nửa nhóm (t.ƣ. nhóm). Nửa nhóm S là một vị nhóm nếu S có đơn vị.
Đơn vị của vị nhóm S là duy nhất và đƣợc ký hiệu là 1s. Một vị nhóm con của vị
nhóm S là một nửa nhóm con có chứa đơn vị của S.
Ví dụ 1.1 M = {0,1} là vị nhóm nhân với phần tử đơn vị là 1.
Ví dụ 1.2 Với vị nhóm M bất kỳ, ta trang bị cấu trúc vị nhóm cho tập tất cả các tập
con 𝒫(M) của M bằng cách định nghĩa, với X, Y  M,
XY = { x.y | x ∈ X , y ∈ Y } .

Phần tử đơn vị là {1}.
Ví dụ 1.3 Từ các vị nhóm M, N ta có vị nhóm M × N là tích trực tiếp của M và N ,
M ( n ) là tích trực tiếp của n lần vị nhóm M .
Cho các nửa nhóm (vị nhóm) S và T. Ánh xạ  : S  T đƣợc gọi là một đồng
cấu nửa nhóm (t.ƣ. vị nhóm) nếu với mọi a, b  S,

 (ab) =  (a)  (b)
(t.ƣ.  (ab)=  (a)  (b) và  (1S) = 1T với 1S là đơn vị của S, 1T là đơn vị của T).
Đồng cấu đƣợc gọi là đơn cấu (t.ƣ. toàn cấu, đẳng cấu) nếu là đơn ánh (t.ƣ.
toàn ánh, song ánh). Một đồng cấu từ vị nhóm S vào chính nó thì đƣợc gọi là một
tự đồng cấu.
Một tương đẳng trên một vị nhóm M là một quan hệ tƣơng đƣơng  trên M
sao cho với mọi m,m'  M, u,v  M

-6-


m  m' mod   umv = um'v mod  .
Nếu  : M  N là một đồng cấu vị nhóm thì quan hệ (hạt nhân)   trên ,
cho bởi m   m' mod    (m) =  (m’) là một tƣơng đẳng trên M. Ngƣợc lại, nếu

 là một tƣơng đẳng trên vị nhóm M, tập thƣơng M/ với phép toán [x] [y] =
[xy] , ở đó [x]  ký hiệu lớp tƣơng đƣơng theo  chứa x , là một vị nhóm thương
của M với tƣơng đẳng  và ta có đồng cấu tự nhiên : M  M/ cho bởi [m] =
[m] với mọi m  M.
Cho M là một vị nhóm. Với x , y  M, ta có
x-1y = {z  M | x.z = y} và xy-1 = {z M | x= z.y}.
Với S,T  M, ta định nghĩa các phép cắt trái, phải của S bởi T
T - 1 S = {u M |t T : t.u S} và ST - 1 = {u M |t T : u.t S}.
Ta có tính chất cơ bản sau đây

Tính chất 1.1. Cho M là một vị nhóm, P , K  M , P = K* và m  M . Khi đó
P-1(m-1K)  (m.P)-1 K.
Chứng minh.
Chứng minh P-1(m-1K)  (m.P)-1 K. Ta có
w P-1 (m-1K) (p P, k K : w = p-1(m-1k) k = m.p.w).
Vì vậy w = (m.p)-1 k  ( m.P)-1 K.
Chứng minh (m.P)-1K  P-1(m-1K). Ta có
w  ( m . P-1) K (p P, k K : w = (m.p-1) k  k = m.p.w).
Vì vậy w = p-1(m-1k)  P-1(m-1K).
1.2

Từ và ngôn ngữ
Cho A là một bảng chữ. Một từ w trên bảng chữ A là một dãy hữu hạn các

phần tử của A
-7-


w = (a1, a2, ..., an), ai  A
Tập tất cả các từ trên bảng chữ A đƣợc ký hiệu là A* và đƣợc trang bị phép
nhân (tích) ghép có tính chất kết hợp
(a1,a2,...,an)(b1,b2,...,bm)= (a1,a2,...,an ,b1,b2,...,bm).
Vì vậy, để thuận tiện ta viết
w = a1,a2,...,an
thay cho w = (a1,a2,...,an). Một phần tử a  A đƣợc gọi là một chữ cái. Từ rỗng
đƣợc ký hiệu là  đóng vai trò là phần tử đơn vị trong phép nhân ghép. Do đó, tập
A* có cấu trúc vị nhóm và A* đƣợc gọi là vị nhóm tự do trên A. Tập tất cả các từ
khác rỗng trên A đƣợc ký hiệu là A+. Ta có A+ = A* - {}.
Độ dài |w| của từ w = (a1,a2,...,an) với ai  A là n. Quy ƣớc || = 0. Ánh xạ w
|w| là một đồng cấu từ A* đến vị nhóm cộng


. Với n  0, ta ký hiệu

A
A  n = { w  A* ||w|  n}
Đặc biệt, A<0 =  và A  0 = {}.
Một từ w  A* là một khúc con của một từ X  A* nếu tồn tại u,v  A* sao cho
x = uwv. Quan hệ ―là một khúc con của‖ là một quan hệ thứ tự bộ phận trên A*.
Một khúc con w của x là khúc con thực sự nếu w ≠ x. Một từ w  A* là một khúc
đầu (t.ƣ. khúc đuôi) của một từ X  A* nếu tồn tại một từ u  A* sao cho X = wu
(t.ƣ. x = uw). Quan hệ ―là một khúc đầu của‖ (t.ƣ. ―là một khúc đuôi của‖ ) cũng
là một quan hệ thứ tự bộ phận trên A*. Ta viết w ≤p x (t.ƣ. w ≤s x) khi w là một
khúc đầu (t.ƣ. khúc đuôi) của x và w < p x (t.ƣ. w < s x) khi w ≤ p x và w ≠ x (t.ƣ. w
≤ s x và w ≠ x). Thứ tự này có tính chất cơ bản sau đây. Nếu có từ x,
w ≤ p x, w' ≤ p x (t.ƣ. w ≤ s x, w' ≤ s x),
thì w và w' so sánh đƣợc với nhau, tức là
-8-


w ≤p w' hoặc w' ≤p w (t.ƣ. w ≤s w' hoặc w' ≤s w)
Tập con X của A* đƣợc gọi là tập prefix nếu không có từ nào của X là khúc đầu
thực sự của một từ khác trong X.
Hai từ x, y  A* đƣợc gọi là liên hợp nếu tồn tại các từ u, v sao cho X = uv, y =
vu. (Xem Hình 1.1) Khi đó ta cũng gọi v là một overlap của x v à y .

y
Hình 1.1 Một overlap của hai từ liên hợp x và y
Một tập con của A* đƣợc gọi là một ngôn ngữ trên A.
Với một ngôn ngữ X thuộc A*, ta ký hiệu X* vị nhóm con sinh bởi X,

X* = { x 1 x 2 … x n | n ≥ 0, x i  X }
Tƣơng tự, ta ký hiệu X + nửa nhóm con sinh bởi X ,
X + = { x 1 x 2 … x n | n ≥ 1, x i  X } .
Ta có

Một phân tích của một từ w  A* theo các từ của X cho bởi đẳng thức w =
x 1 x 2 … x n , x i  X ,i ≥ 1. Khi đó, ta cũng nói w có một X-phân tích. Theo định
nghĩa, mỗi từ w  X* có ít nhất một X-phân tích. Để dễ hình dung, ta thƣờng biểu
diễn một X-phân tích w = x 1 x 2 … x n bằng hình sau.
x1

xn

x2

w
Hình 1.2 Một X-phân tích của từ w
Cho X, Y  A* là các ngôn ngữ. Tích của X và Y, thương trái, thương phải của
-9-


X bởi V là các ngôn ngữ đƣợc định nghĩa ở mục trƣớc với vị nhóm M = A*. Với u, v
 M, ta sẽ viết uv thay cho u.v. Khi đó
XY = { x y | x  X , y  Y } ,
Y - 1 X = { w  A* | yw  X, y  Y } ,
XY-1 = {w  A* | wy  X, y  Y}.
Ký hiệu u - 1 X , X u -1 đƣợc sử dụng khi tập Y chỉ có một phần tử Y = {u}.
1.3

Mã của các từ hữu hạn

Trong phần này ta xem xét định nghĩa và một số tính chất quan trọng của

mã. Trƣớc hết ta nhắc lại khái niệm tích không nhập nhằng là cơ sở để xây dựng
khái niệm mã.
Cho A là một bảng chữ và X, Y  A* là các ngôn ngữ. Tích XY là không nhập
nhằng nếu mỗi từ w  XY có duy nhất một phân tích w = xy với x  X, y  Y.
Định nghĩa 1.1. Giả sử A là một bảng chữ hữu hạn. Tập X  A+ là mã trên A nếu
với mọi n,m ≥ 1 và với mọi x1,x2, …, xn, y1,y2,... ,ym  X nếu có
x1x2 … xn = y1y2 … ym
thì khi đó
n = m và xi = yi với i = 1,... ,n.
Cho X  A* là một ngôn ngữ. Từ định nghĩa của mã ta suy ra các tính chất sau
Tính chất 1.2. X là mã nếu mỗi từ w  A* (t.ƣ. w  X*) có nhiều nhất (t.ƣ. chỉ có
duy nhất) một X-phân tích.
Tính chất 1.3. X là mã khi và chỉ khi X - 1 X  X*(X*)-1 = {ε}.
Ví dụ 1.4 Ngôn ngữ X = {ab, abb, bb} trên bảng chữ A = {a, b} là mã. Thật vậy,
giả sử X không là mã. Khi đó tồn tại một từ w  X+ có độ dài tối tiểu thừa nhận hai
X-phân tích khác nhau,
w = x 1 x 2 … x n = y 1 y 2 … y m với x1  y1
-10-


( n , m ≥ 1 , xi,yi  X ) . Từ x1  y1 suy ra x1 là khúc đầu của y 1 hoặc ngƣợc lại. Giả
sử x 1 là khúc đầu của y1. Với X nhƣ trên, ta có x 1 = ab và y1 = abb. Từ đó suy ra x2
= bb,y2 = bb. Vậy y1 = x 1 b , y1y2 = x 1 x 2 b . Thực hiện chứng minh quy nạp theo k
≥ 1, ta có xk+1 = bb và yk+1 = bb. Từ đó suy ra y1y2 … yk+1 = x1x2 … xk+1 với mọi k
≥ 1. Điều này có nghĩa là không thể có từ w hữu hạn thừa nhận hai X-phân tích
khác nhau, trái với giả thiết.

Hình 1.3 Khởi đầu một phân tích kép của từ w

Ví dụ 1.5. Cho A = {a, b} và X = {b, abb, abbba, bbba, baabb}. Ngôn ngữ X
không là mã vì tồn tại từ w = abbbabbbaabb, w có hai X-phân tích khác nhau,
w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb).
Định nghĩa mã theo cách sau đây cho phép ta diễn tả ý nghĩa của thuật ngữ mã.
Mệnh đề 1.1. Nếu X  A* là mã thì mỗi đồng cấu 𝛽: B* → A* cảm sinh một song
ánh từ bảng chữ B đến X là đơn cấu. Ngƣợc lại, nếu tồn tại một đơn cấu 𝛽: B* → A*
sao cho X = 𝛽( B ) , t h ì X l à m ã .
Một đơn cấu 𝛽: B* → A* với X = 𝛽( B ) đƣợc gọi là một đồng cấu mã đối với
X. Mệnh đề 1.1 trình bày nghĩa gốc của thuật ngữ mã vì các từ của X mã hóa các
chữ cái của bảng chữ B. Thủ tục mã kết hợp một từ bản rõ b1b2 … bn (bi ∈ B) với
một từ mã 𝛽( b 1 ) … 𝛽( b n ) bởi sử dụng đồng cấu mã 𝛽. Sự kiện 𝛽 là đơn cấu đảm
bảo từ mã đƣợc giải mã theo một cách duy nhất thành từ bản rõ ban đầu.
Từ Mệnh đề 1.1 ta có
Hệ quả 1.1 Giả sử α: A* → C* là một đơn cấu. Nếu X là mã trên A, thì 𝛼(X) là mã
trên C. Nếu Y là mã trên C, thì 𝛼-1(Y) là mã trên A.
Hệ quả 1.2 Nếu X ⊂ A* là mã, thì khi đó Xn là mã với mọi n > 0.
-11-


Ta nhắc lại rằng một vị nhóm con M của A* là tự do khi và chỉ khi mọi m ∈
M- {} có duy nhất một phân tích trong X = (M - {})-(M- {})2 . Mã X cảm sinh vị
nhóm con tự do M của A* đƣợc gọi là cơ sở của M. Mối liên hệ giữa mã và vị nhóm
con sinh bởi mã đƣợc thiết lập qua các tính chất sau đây.
Mệnh đề 1.3 Giả sử A là một bảng chữ. Khi đó, mỗi vị nhóm con M của A* có một
tập sinh cực tiểu duy nhất X = (M- {})- (M - {})2.
Ví dụ 1.5 Tập M = {ai, i ∈ ℕ, i ≠ 1} là một vị nhóm con của A* với A = {a, b}. Cơ
sở của M là X = { a 2 , a3}. Tuy nhiên, M không phải là vị nhóm con tự do vì a6 ∈ M
có hai phân tích khác nhau trong X , a6 = a2 .a2 .a2 = a3.a3.
Mệnh đề 1.2 Nếu M là một vị nhóm con tự do của A*, thì khi đó tập sinh cực tiểu
của M là mã. Ngƣợc lại, nếu X  A* là mã, thì vị nhóm con X* của A* là tự do có tập

sinh cực tiểu X.
Hệ quả 1.3 Giả sử X và Y là các mã trên A. Nếu X* = Y*, thì khi đó X = Y.

1.4

Mã prefix

1.4.1 Định nghĩa
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ực sự của các 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

Hoặc X là 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}.
Ngƣợc lại với định nghĩa prefix ta có định nghĩa suffix. Tập X đƣợc gọi là
suffix nếu không có từ x nào trong X là khúc đuôi thật sự của từ y khác trong X.
Tập X đƣợc gọi là bifix nếu nó vừa là prefix, vừa là suffix.
Ví dụ 1.6 Tập 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 là
-12-


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.
Ví dụ 1.7 Tập 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 bifix.
Tập prefix thực sự của tập X bất kỳ đƣợc ký hiệu là Pref(X), dễ thấy rằng
Pref(X) = X(A+)1 (đôi khi ký hiệu là XA); tƣơng tự ta có tập Suff(X) và
Suff(X) = (A+)1X (đôi khi ký hiệu là AX).
Mệnh đề 1.3. Mọi tập prefix khác {1} đều là mã.
Chứng minh:
Giả sử ngƣợc lại, nếu X không phải là mã, khi đó tồn tại từ w là ngắn nhất có
hai phân tích trong X:
w = x1 x2 ... xn = y1 y2 ... ym ; với xi, yi  X
Vì w là ngắn nhất và x1, y1 khác rỗng, do đó x1 khác y1. Nhƣ thế hoặc x1  y1
hoặc y1  x1 trái với điều kiên X là prefix. Nhƣ thế X là mã.
Hoàn toàn tƣơng tự, ta có mệnh đề với tập suffix.
Mệnh đề 1.4. Với mọi tập con X  A* thì ta có:
(i). X  XA+ = 
(ii). X  XA = 
(iii). XA , X, XA+ đôi một không giao nhau.
(iv). Nếu x, xu  X thì u = {1}.
(v). Nếu xu = x’u’ và x, x’ X thì x = x’ và u = u’.

-13-


Mệnh đề sau cho ta quan hệ giữa mã prefix với idian phải. Mệnh đề này cho ta
phƣơng pháp xây dựng mã prefix từ các từ trong A*.
Mệnh đề 1.5.
1. Cho L  A*, đặt X = L - LA+ . Khi đó X là prefix, hơn nữa nó là mã khi và
chỉ khi L không chứa từ rỗng. Hơn nữa, XA* = LA*
2. Cho tập X là prefix, giả sử M  A*, thõa XA* = MA*. Khi đó X = M - MA+.
Hơn nữa X  M và X là tập sinh cực tiểu của Idian phải MA*.

Chứng minh:
1. Từ X = L - LA+ ta có X  L, kéo theo XA+  LA+, do đó
X  XA+  X  LA+ = .
Vế đầu chứng tỏ X là prefix. Để ý rằng L  XA*
Thật vậy, xét u  L, khi đó có hai khả năng: Nếu u  X thì u  XA*, còn nếu u
 LA+ thì u = u’w với w  A+. Do độ dài hữu hạn nên ta có u’  XA*, vậy u  XA*.
Từ hệ thức L  XA* nên ta có LA  XA*. Chiều ngƣợc lại, do X  L suy ra XA* 
LA*. Vậy XA* = LA*.
2. Giả sử x  X. Khi đó x = mu, với m  M và u  A*. Tƣơng tự m = x’v, với x’
 X và v  A*. Từ đó x = x’uv. Bởi vì X là prefix do đó ta có uv = 1. Vậy X  M.
Từ XA* = MA* ta có XA*A = MA*A hay XA+ = MA+. Suy ra X  M - MA+. Thật
vậy, nếu ngƣợc lại, cho m  M - MA+ khi đó m = xu, với x  X và u  A*. Nếu u 
1 thì xu  XA+ mà XA+ = MA+, nhƣ thế m = xu  MA+ trái với giả thiết m  M MA+. Vậy u = 1 và x  M - MA+.
 Tập X = L - LA+ đƣợc gọi là tập khởi tạo hoặc cơ sở của Idian phải LA*.
Hệ quả 1.4. Cho X và Y là các tập con Prefix của A*. Nếu XA* = YA* thì X = Y
Ví dụ 1.8: Cho tập A = {a, b} và L = A*aA* (tập các từ có chứa a). Khi đó
-14-


X = L - LA+ = b*a
Ví dụ 1.9: Cho tập A = {a, b} và L = A*ab (tập các từ kết thúc bằng ba). Khi đó X
= L - LA+ = A*ab - A*abA+ = b*a*ab Dễ thấy rằng X là tập prefix vì X là tập các từ
kết thúc bằng ab nhƣng không chứa chuỗi ab nào khác ở giữa.
Ví dụ 1.10: Cho tập A = {a, b} và L = {aa, ba, aab, aaa, bba, bab} . Khi đó
X = L - LA+ = {aa, ba, bba} là tập prefix.
Cũng nhƣ tập mã cực đại, tập con X của A* là tập prefix cực đại nếu nó prefix
và nó không bị chứa hoàn toàn trong một tập prefix khác của A*, tức là nếu với Y 
A* là prefix và X  Y  X = Y
Dễ dàng nhận thấy tập {1} là prefix cực đại. Mọi tập prefix cực đại khác với
{1} là mã. Mọi tập mã cực đại có tính prefix đều là mã prefix cực đại.

1.4.2 Biểu diễn hình học (cấu trúc cây) của mã prefix
Chúng ta xét biểu diễn hình học của mã nói chung và mã prefix nói riêng trên
2 hoặc 3 chữ cái. Biểu diễn hình học cho ta mối liên hệ giữa mã và cấu trúc cây sao
cho mỗi từ của mã tƣơng ứng với một nút trên cây.
Trƣớc tiên ta xây dựng cây vô hạn cho tập A* nhƣ sau: Bảng chữ cái đƣợc sắp
theo thứ tự các từ có cùng độ dài đƣợc sắp theo thứ tự từ điển (lexicography). Nhƣ
thế mỗi nút của cây tƣơng ứng với một từ trong A*. Từ có độ dài ngắn hơn nằm
trƣớc (nút cha) từ dài hơn, các từ có cùng độ dài đƣợc phân nhánh theo thứ tự từ
điển. Nếu tồn tại nhánh đi từ u đến v khi và chỉ khi v = ua, với a là chữ cái nào đó
của A. Cấu trúc cây xây dựng nhƣ trên đƣợc gọi là biểu diễn chữ của A*.
Ví dụ 1.11: Xây dựng cây cho A với A = {a, b} và A = {a, b, c}.

-15-


Hình 1.4. Biểu diễn của A = {a, b} và A = {a, b, c}
Cho tập X  A*, ứng với một cây con bằng cách giữ lại các nút tƣơng ứng với
các từ trong X cùng với các nút trên đƣờng đi từ gốc đến nó. Cây con thu đƣợc gọi
là biểu diễn chữ của X.
Ví dụ 1.12: Cây biễu diễn tập của các tập X = {ab, bb, aab}

Hình 1.5. Biểu diễn của
X = {a, ba, baa}

Hình 1.6. Biểu diễn của
X = {aa, ab, bb, baa}

Hình 1.7. Biểu diễn của X = {a, b, ca, cbba, cbcc }

-16-



Hình 1.8. Biểu diễn của X = a*b
Dựa trên biểu diễn cây, ta nhận thấy một từ là thừa số bên trái thực sự của từ
khác nếu có nằm trên đƣờng đi từ gốc đến từ thứ hai. Nhƣ vậy, tập X là prefix khi
và chỉ khi trên cây biểu diễn chữ của X, mọi từ trong X là nút lá của cây. Cách biễu
diễn chữ giúp ta dễ dàng hình dung về tập X và có thể biễu diễn tập với nhiều phần
tử.

Hình 1.9. Biểu diễn của X có 26 phần tử

-17-


1.5 Tiêu chuẩn kiểm định mã
Thuật toán kiểm định mã là một thuật toán cốt lõi và kinh điển trong lý thuyết
mã, cần thiết cho các nghiên cứu về mã truyền thống và các hình thức mã mới.
Trong phần này, ta nhắc lại thuật toán kinh điển Sardinas-Patterson.
Cho một ngôn ngữ X  A+, ta xem xét các tập phần dƣ Ui kết hợp với X đƣợc
định nghĩa đệ quy nhƣ sau.
U1 = X -1X - {}
Ui+1 = U i1 X  X - 1 U i , i1.

(1.1)

Định lý cơ bản sau đây của Sardinas-Patterson cung cấp một tiêu chuẩn kiểm
định
Định lý 1.1 Tập X  A+ là mã khi và chỉ khi các tập Ui đƣợc định nghĩa theo công
thức (1.1) không chứa từ rỗng.
Ví dụ 1.12 Cho A = {a, b} và X = {b, abb, abbba, bbba, baabb}. Tập X không là

mã vì tồn tại từ w = abbbabbbaabb, w có hai phân tích khác nhau trong X,
w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb).
Sử dụng thuật toán kiểm tra mã, ta có
U1 = {ba, aabb, ba}, U2 = {a, ba, abb}, U3 = {, a, ba, bb, bbba, abb}.
Vì   U3, suy ra X không là mã.
Nhận xét 1.1. Giả sử Vi (i  1), V1  V2 …  A*

là một dãy tăng bất kỳ sao

cho mọi tập Vi cùng thỏa bởi một toàn cấu vị nhóm h : A*  P,với P là một vị
nhóm hữu hạn. Khi đó tồn tại một dãy tăng K1  K2  …  P sao cho V¡=h-1(Ki)
với i = 1,2,… Dãy tăng này là hữu hạn và tổng số phần tử của nó không vƣợt quá
Card(P). Nhận xét này cung cấp một kỹ thuật để ta xây dựng các tiêu chuẩn kiểm
định mã mới.

1.6. Độ trễ giải mã
Khái niệm độ trễ giải mã đƣợc giới thiệu nhằm mở rộng các khái niệm của mã
-18-


prefix cho trƣờng hợp mã thông thƣờng. Ta biết rằng lớp mã prefix có độ trễ 0, do
đó mã có độ trễ giải mã giới nội là trƣờng hợp tổng quát của mã prefix. Ta nhắc lại
rằng ngôn ngữ X  A* là mã prefix khi và chỉ khi X là mã và X là tập prefix. Khái
niệm độ trễ giải mã đƣợc định nghĩa nhƣ sau.
Định nghĩa 1.2 Giả sử X là một tập con của A+. Khi đó X đƣợc gọi là có độ trễ
giải mã hữu hạn nếu có một số nguyên d  0 sao cho
x,x’  X,y  Xd, u  A*, xyu  x’X*  x=x’ (1.2)
Dễ thấy rằng nếu hệ thức (1.2) thoả mãn với d nào đó thì nó cũng đúng với
mọi d'  d. Nếu X có độ trễ giải mã hữu hạn thì số nguyên nhỏ nhất thoả hệ thức
(1.2) được gọi là độ trễ giải mã của X, số nguyên bất kỳ thỏa hệ thức (1.2) được

gọi là độ trễ giải mã yếu của X.
Ví dụ 1.13 Cho A = {a, b}. Khi đó tập X = {ab, abb, baab} có độ trễ giải mã d = 1
và tập Y = {a, ab, b2} có độ trễ giải mã vô hạn.
Ta có mệnh đề sau đây về mối quan hệ giữa mã và độ trễ giải mã.
Mệnh đề 1.6 Cho X  A*. Nếu X có độ trễ giải mã hữu hạn thì X là mã.
Ví dụ 1.14 Cho tập X nhƣ trong Ví dụ 1.13. Bằng định nghĩa, ta có thể kiểm tra tập
X là mã.

-19-


CHƢƠNG 2

LÝ THUYẾT ÔTÔMÁT
2.1 Ôtômát hữu hạn
Chúng ta sẽ tìm hiểu về một định nghĩa tổng quát nhất của ôtômát và sau đó
thu hẹp cho phù hợp với các ứng dụng của khoa học máy tính. Một ôtômát được
định nghĩa như là một hệ thống , trong đó năng lƣợng, vật chất hoặc thông tin đƣợc
biến đổi; đƣợc truyền đi và đƣợc sử dụng để thực hiện một số chức năng nào đó mà
không cần có sự tham gia trực tiếp của con ngƣời. Ví dụ nhƣ máy phô-tô-copy tự
động, máy trả tiền tự động ATM, ...
Trong khoa học máy tính, thuật ngữ ôtômát có nghĩa là máy xử lý tự động trên
dữ liệu rời rạc. Mỗi ôtômát đƣợc xem nhƣ là một cơ chế biến đổi thông tin gồm
một bộ điều khiển, một kênh vào và một kênh ra.

I1

O1

Ôtômát

q1,q2,…,qn

I2
Ik

O2

Om
Hình 2.1. Mô hình của ôtômát rời rạc

Trong đó có các thành phần:
1. Đầu vào (input). Ở mỗi thời khoảng (rời rạc) t1, t2, ... , các dữ liệu vào I1, I2,
... , là những số hữu hạn các giá trị từ bảng chữ cái A đầu vào.
2. Đầu ra (Output). O1, O2, ... Om: các kết quả xử lý của hệ thống là các số hữu
hạn các giá trị xác định kết quả đầu ra.
3. Trạng thái. Tại mỗi thời điểm, ôtômát có thể ở một trong các trạng thái
q1,q2,…,qn.
-20-


4. Quan hệ giữa các trạng thái. Trạng thái tiếp theo của ôtômát phụ thuộc vào
hiện trạng và đầu vào hiện thời, nghĩa là đƣợc xác định phụ thuộc vào một
hay nhiều trạng thái trƣớc và dữ liệu hiện thời.
5. Quan hệ kết quả. Kết quả của ôtômát không những chỉ phụ thuộc vào các
hiện trạng mà còn phụ thuộc vào các đầu vào. Nhƣ vậy, kết quả (đầu ra,
output) của ôtômát đƣợc xác định theo đầu vào và các trạng thái thực hiện
của nó.
Ví dụ 2.1 Xét thanh ghi dịch chuyển nhƣ sau

Input


D

Q

D

Q

D

Q

D

Q
Output

Hình 2.2. Thanh ghi dịch chuyển 4 bit sử dụng D-flip flaps
Thanh ghi dịch chuyển trên còn đƣợc gọi là máy hữu hạn trạng thái có 24 = 16
trạng thái (0000, 0001, ..., 1111), một dãy vào và một dãy ra, bảng chữ cái vào (tín
hiệu vào) A = {0, 1}và bảng chữ cái đầu ra (tín hiệu ra) O = {0, 1}. Thanh ghi dịch
chuyển 4 bit trên có thể đƣợc mô tả bởi ôtômát sau:
Ôtômát
q1, q2, … q16
Hình 2.3. Máy hữu hạn trạng thái thực hiện thanh ghi dịch chuyển 4 bit.
Nhận xét2.1. Hành vi của mọi máy tuần tự (các thao tác thực hiện tuần tự) đều có
thể biểu diễn đƣợc bằng một ôtômát
Sau đây chúng ta xét định nghĩa hình thức về ôtômát hữu hạn trạng thái gọi tắt
là ôtômát hữu hạn.Một ôtômát hữu hạn làm việc theo thời gian rời rạc nhƣ tất cả

các mô hình tính toán chủ yếu. Nhƣ vậy, ta có thể nói về thời điểm ―kế tiếp‖ khi
-21-


―đặc tả‖ hoạt động của một ôtômát hữu hạn. Một cách hình thức hơn, ôtômát đƣợc
định nghĩa nhƣ sau.
Định nghĩa 2.1. Ôtômát hữu hạn đơn định (gọi tắt là ôtômát hữu hạn), có thể biểu
diễn đƣợc bởi bộ 5 thành phần M = (A, Q, , q0, F), trong đó:
(i) A là tập hữu hạn khác rỗng các ký hiệu đầu vào (bảng chữ cái).
(ii) Q là tập hữu hạn khác rỗng các trạng thái,
(iii)  là ánh xạ từ A × Q  Q và đƣợc gọi là hàm chuyển trạng thái. Hàm này mô
tả sự thay đổi trạng thái của ôtômát và thƣờng đƣợc cho biết dƣới dạng bảng
chuyển trạng thái hay đồ thị chuyển trạng thái.
(1). q0  Q là trạng thái khởi đầu,
(2). F  Q là tập các trạng thái kết thúc. Tổng quát: | F|  1.
Xâu đƣợc xử lý
©

$

Băng dữ liệu vào

Đầu đọc R

Hình 2.4. Sơ đồ khối của ôtômát hữu hạn
Ôtômát hữu hạn trạng thái gồm các thành phần sau:
(i)

Băng dữ liệu vào. Băng dữ liệu vào đƣợc chia thành các ô, mỗi ô chứa


một ký tự từ bảng chữ cái A, trong đó ô đầu đƣợc đánh dấu cho sự bắt đầu bằng ©
và ô cuối dùng $ để đánh dấu kết thúc. Khi không sử dụng các ô đánh dấu đó thì
băng dữ liệu vào sẽ đƣợc xem nhƣ có độ dài vô hạn.

-22-


(ii)

Đầu đọc R. Mỗi lần đầu đọc chỉ xem xét một ô và có thể dịch qua

phải hoặc qua trái một ô. Để đơn giản, chúng ta giả thiết đầu đọc chỉ dịch qua phải
sau mỗi lần xử lý.
(iii)

Bộ điều khiển hữu hạn. Bộ này điều khiển hoạt động của ôtômát mỗi

khi đọc một dữ liệu vào. Khi đọc một ký hiệu vào, ví dụ a, ở trạng thái q có thể cho
các kết quả sau:
(1). Đầu đọc R vẫn ở nguyên tại chỗ, không dịch chuyển,
(2). Chuyển sang trạng thái khác đƣợc xác định theo (q,a).
Ví dụ 2.2. Hệ thống thang máy của một toà nhà nhiều tầng có thể mô hình hóa nhƣ
là một ôtômát hữu hạn. Thông tin vào gồm các yêu cầu đi lên, đi xuống tại mọi thời
điểm khi ngƣời sử dụng có nhu cầu. Trạng thái đƣợc xác định bởi thông tin về các
yêu cầu vẫn chƣa đƣợc đáp ứng (về những tầng cần đi tới từ bên trong thang máy,
hay ở trên các tầng), về những vị trí hiện tại của thang máy (lên hay xuống). Trạng
thái tiếp theo luôn đƣợc xác định bởi trạng thái hiện tại và thông tin vào. Từ các
trạng thái hiện tại cũng xác định đƣợc thông tin ra mô tả hành vi của hệ thống thang
máy.
Để hiểu đƣợc hoạt động của các ôtômát, chúng ta cần phải tìm hiểu các tính

chất, đặc trƣng của hàm chuyển trạng thái.
2.1.1. Các tính chất của hàm chuyển trạng thái
Hàm chuyển trạng thái đƣợc xác định trong định nghĩa ôtômát hữu hạn là một
ánh xạ xác định trên các cặp trạng thái và ký hiệu vào, do vậy không thể sử dụng
trực tiếp để đoán nhận các xâu, mà phải mở rộng  thành ánh xạ
 : A* × Q → Q
nhờ các tính chất sau.
Tính chất 2.1.
(i)

q  Q, (q, ) = q, với  là từ rỗng. Nghĩa là trạng thái của ôtômát chỉ thay
-23-


đổi khi có dữ liệu vào.
(ii)

(2.1)

w  A*, a  A, (q, aw) = ( (q, a), w)

(2.2a)

(q, wa) = ((q, w), a)

(2.2b)

Mệnh đề 2.1 Với mọi hàm chuyển trạng thái  và với mọi xâu vào x, y,
(q, xy) = ((q, x), y)


(2.3)

Chứng minh: Qui nạp theo |y|, nghĩa là theo số ký tự trong y.
Cơ sở: Khi |y| = 1, y = a, thì (q, xa) = ((q, x), a) đúng theo tính chất (2.2b).
Giả sử rằng (2.3) đúng với mọi xâu x và với những xâu y có n phần tử, |y| = n. Khi
xâu y có độ dài là n+1, ta có thể viết y = y1a, với | y1| = n. Khi đó
(q, xy) = (q, xy1a) = (q, x1a), với x1 = xyi
= ((q, x1), a),

Theo (2.2b)

= ((q, xy1), a)
= (((q, x), y1), a),

Theo giả thiết quy nạp

= ((q, x), y1 a), Theo (2.2b)
= ((q x), y).
Do vậy, tính chất (2.3) đúng với mọi xâu x, y.
2.1.2. Các phƣơng pháp biểu diễn ôtômát
Cho một ôtômát thực chất là chỉ cần cho biết hàm chuyển trạng thái của nó.
Hàm chuyển trạng thái có thể cho dƣới dạng bảng chuyển trạng thái hoặc dƣới dạng
đồ thị.
A/ Phương pháp cho bảng chuyển trạng thái
Bảng cho trƣớc một ôtômát có thể cho dƣới dạng bảng chuyển trạng thái
-24-


Trạng thái


a1

a2

→ q0

(q0, ai)

(q0, a2)

(q0, an)

qi

(qi, a1)

(q1, a2)

(q1, an)

(qf, a1)

(qf, a2)

(qf, an)

(qk, a1)

(qk, a2)


(qk, an)

...

an


qf

qk

trong đó, Q = {q1, q2, ... qk}, A = {a1, a2, . . a n } và F là tập tất cả những trạng thái
qf (những trạng thái nằm trong hình tròn), q0 là trạng thái bắt đầu (có mũi tên đi
đến).
Ví dụ 2.3 Xét ôtômát hữu hạn có hàm chuyển trạng thái đƣợc xác định theo bảng
sau
Trạng thái

0

1

q0

q2

q1

q1


q3

q0

q2

q0

q3

q3

q1

q2

Bảng 2.1 Bảng chuyển trạng thái của M
Q = {q0, q1, q2, q3}, A = {0, 1} và F = {q0}, q0 vừa là trạng thái bắt đầu (có
mũi tên đi đến) vừa là trạng thái kết thúc (nằm trong một hình tròn).
B/ Phương pháp biểu diễn bằng đồ thị
-25-


×