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

THUẬT TOÁN mới KIỂM ĐỊNH và mã mở RỘNG

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 (901.55 KB, 63 trang )

-1-

LỜI CAM ĐOAN
Luận văn thạc sĩ này do tôi nghiên cứu và thực hiện dưới sự hướng
dẫn của thầy giáo TS. Hồ Ngọc Vinh. Để hoàn thành bản luận văn này,
ngoài các tài liệu thảm khảo đã liệt kê, tôi cam đoan không sao chép toàn
văn các công trình của người khác.

Hà Nội, ngày 20 tháng 09 năm 2015

Nguyễn Đình Thái


-2-

MỤC LỤC
Trang
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT ............................... 3
DANH MỤC CÁC HÌNH VẼ ................................................................. 4
LỜI MỞ ĐẦU ......................................................................................... 5
CHƢƠNG 1 : KHÁI NIỆM VÀ KẾT QUẢ LIÊN QUAN ........................ 7

1.1 Một số khái niệm .................................................................... 7
1.1.1 Cấu trúc đại số cơ bản ...................................................... 7
1.1.2 Đồng cấu.......................................................................... 9
1.1.3 Từ và ngôn ngữ .............................................................. 10
1.2. Ngôn ngữ chính quy và Otomat hữu hạn .............................. 11
1.2.1 Ngôn ngữ chính quy và Otomat hữu hạn ............................ 11
1.2.2 Otomat hữu hạn ................................................................ 17
CHƢƠNG 2 : MÃ CỦA CÁC TỪ HỮU HẠN ....................................... 21


2.1 Mã và các tính chất của mã .................................................. 21
2.1.1 Mã và vị nhóm tự do ...................................................... 21
2.1.2 Thủ tục kiểm tra tính chất mã ....................................... 25
2.2 Thuật toán Sardinas-Patterson cải tiến ............................... 27
2.3 Đỗ trễ giải mã ....................................................................... 33
CHƢƠNG 3 : MÃ LUÂN PHIÊN .......................................................... 40

3.1 Tích không nhập nhằng ........................................................ 40
3.2 Mã luân phiên ...................................................................... 43
2.3 Đặc trưng của mã luân phiên ................................................ 49
KẾT LUẬN VÀ KIẾN NGHỊ ............................................................... 60
TÀI LIỆU THAM KHẢO ..................................................................... 61


-3-

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT

Từ viết tắt

Giải nghĩa

LC

Lớp mã (thông thường)

LALT

Lớp mã luân phiên


LWLALT

Lớp mã luân phiên yếu trái

LWRALT

Lớp mã luân phiên yếu phải

LEALT

Lớp mã luân phiên chẵn

ESPC

Thủ tục kiểm tra mã mở rộng
(the Extension of SardinasPatterson for
Codes)


-4-

DANH MỤC CÁC HÌNH VẼ

Hình 2.1. Ngôn ngữ có độ trễ giải mã hữu hạn d .................... 34
Hình 2.2. Các lớp cắt Vd và Vd+1 ........................................... 37
Hình 3.1. Các Overlap của hai phân tích của từ w ................. 44
Hình 3.2. Hai phân tích của w trong (XY)+ và (XY)+ X –1 ...... 51
Hình 3.3. Các lớp thương Ui , Vj của hai phân tích ................. 55
Hình 3.4. Các lớp thương Ui , Vj của hai phân tích ................. 56



-5-

LỜI MỞ ĐẦU
Lý thuyết mã bắt nguồn từ lý thuyết thông tin do C.E.Shannon
khởi xướng đã đặt nền móng toán học cho lý thuyết thông tin hiện đại.
Do nhu cầu thực tiễn, lý thuyết mã phát triển theo nhiều hướng khác
nhau, chẳng hạn như hướng nghiên cứu liên quan đến mã độ dài cố định,
điển hình là mã sửa sai, mã với từ định biên; ứng dụng để phát hiện và
sửa lỗi xuất hiện trên các kênh truyền tin; hay mã độ dài biến đổi. Một số
bài toán cơ bản trong nghiên cứu lý thuyết mã là: các tính chất liên quan
đến sự phân tích một từ thành dãy các từ thuộc một tập cho trước; tính
chất không nhập nhằng của ngôn ngữ trong quan hệ với mã; mã trong
mối quan hệ với đại số, tổ hợp trên từ, lý thuyết ngôn ngữ hình thức và
otomat.
Luận văn nghiên cứu các thuật toán kiểm định tính chất mã của các
lớp mã theo cách tiếp cận mở rộng khái niệm tích. Nội dung được bố cục
trong ba chương, với cấu trúc như sau.
Chƣơng 1: Khái niệm và kết quả liên quan.
Trình bày các khái niệm cần thiết làm cơ sở lý thuyết thiết lập các
kết quả cho các chương sau.
Chƣơng 2: Mã của các từ hữu hạn
Trình bày một số khái niệm và tính chất cơ bản của mã, mối quan
hệ giữa lý thuyết mã với đại số, thuật toán kiểm tra tính chất mã của
ngôn ngữ chính quy, độ trễ giải mã.
Chƣơng 3: Mã luân phiên
Tích không nhập nhằng của các từ hữu hạn cũng như của các từ vô
hạn mang lại nhiều tính chất lý thú và đang được rất nhiều người quan



-6tâm nghiên cứu bởi chúng có quan hệ rất gần với mã. Như là sự mở rộng
của khái niệm tích không nhập nhằng, trong chương này trình bày lại
khái niệm tích không nhập nhằng, mã luân phiên. Từ đó, thiết lập thuật
toán kiểm tra mã luân phiên của cặp ngôn ngữ chính quy.
Hoàn thành luận văn này, em xin gửi lời cảm ơn chân thành đến
thầy giáo TS. Hồ Ngọc Vinh đã nhiệt tình giúp đỡ, hướng dẫn. Cảm ơn
Tập thể giảng viên Viện CNTT&TT - Trường Đại học Bách Khoa Hà
Nội; Cán bộ, công chức Sở Giáo dục và Đào tạo Nghệ An; bạn bè, đồng
nghiệp và gia đình đã luôn động viên, hỗ trợ tôi trong thời gian qua.


-7-

Chƣơng 1
KHÁI NIỆM VÀ KẾT QUẢ LIÊN QUAN
Chương này trình bày các kiến thức cơ sở được sử dụng trong
luận văn. Cụ thể sẽ nhắc lại một số khái niệm và tính chất cơ bản của đại
số, ngôn ngữ hình thức và otomat. Về các kiến thức cơ sở có liên quan,
xin xem thêm trong [1], [3], [5], [9], [11], [13], [16].

1.1 Một số khái niệm
1.1.1 Cấu trúc đại số cơ bản
Cho M là một tập. Một phép toán hai ngôi trên M là một ánh xạ
T : M × M  M. Thay vì viết T(x, y), ta viết xTy, với mọi x, y M. Khi
T được viết theo lối nhân “.” thì ta viết đơn giản T(x, y) là x y (gọi là tích
của x và y), còn khi T được viết theo lối cộng “+” thì ta viết T(x, y) là
x + y (gọi là tổng của x và y).
Trong toàn bộ luận văn, theo thông lệ, nếu không nói gì khác ta quy
ước phép toán hai ngôi T luôn được viết theo lối nhân.
Một phép toán hai ngôi T trên M gọi là kết hợp nếu, x, y, z M,

(x y)z = x(yz); gọi là giao hoán nếu, x, y M, x y = y x.
Một tập khác rỗng M được gọi là nửa nhóm nếu trên M được trang
bị phép toán hai ngôi kết hợp. Nửa nhóm là giao hoán nếu phép toán của
nó là giao hoán.
Một phần tử e của nửa nhóm M được gọi là phần tử đơn vị nếu,
x M, x e = x = ex. Phần tử đơn vị của M nếu có thì xác định một
cách duy nhất. Do vậy, ta thường ký hiệu đơn vị của M là 1M .


-8Một tập khác rỗng M được gọi là vị nhóm nếu M là một nửa nhóm
và có phần tử đơn vị. Vị nhóm con của M là tập con N, đóng kín đối với
phép toán của M và chứa phần tử đơn vị của M , nghĩa là NN  N và
1M N.
Một phần tử x của vị nhóm M được gọi là khả nghịch nếu tồn tại
phần tử x   M sao cho x x  = 1M = x x. Khi đó, x  được xác định duy
nhất bởi x và được gọi là phần tử nghịch đảo của x, ký hiệu là x –1 (nếu
phép toán T được viết theo lối cộng thì phần tử nghịch đảo của x được
gọi là phần tử đối của x, ký hiệu là -x ). Một vị nhóm được gọi là nhóm
nếu mỗi phần tử của nó đều khả nghịch.

1.1.2 Đồng cấu
Một cách tổng quát, một đồng cấu giữa hai cấu trúc đại số là một
ánh xạ bảo toàn các phép toán. Nghĩa là, một đồng cấu nửa nhóm là một
ánh xạ  từ một nửa nhóm M vào một nửa nhóm N sao cho m1, m2 M

 (m1 m2) =  (m1)  (m2)
Nếu M = N thì đồng cấu  gọi là tự đồng cấu. Nếu  là đơn ánh
(t.ứng, toàn ánh, song ánh) thì gọi là đơn cấu (t.ứng, toàn cấu, đẳng
cấu), một tự đồng cấu song ánh gọi là một tự đẳng cấu.
Tương tự, một đồng cấu vị nhóm là một ánh xạ  từ một vị nhóm M

vào một vị nhóm N thỏa mãn điều kiện trên và

 (1M) = 1N
với 1M là đơn vị của M , 1N là đơn vị của N.
Đặc biệt, khi hai nửa nhóm M, N là nhóm thì mọi đồng cấu nửa
nhóm từ M đến N là đồng cấu vị nhóm và là đồng cấu nhóm từ M đến N.
Một đồng cấu  : M  N là một đẳng cấu nếu tồn tại một đồng cấu
 : N  M sao cho  ∘ = IdN và  ∘ = IdM .


-9Mộ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
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 −1 y = { z  M | x.z = y } và x y −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 −1S = { u  M | t  T : t.u  S },
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.1 (xem [3]) Cho M là một vị nhóm, P, K  M, P = K * và m
 M. Khi đó

P −1(m −1 K) = (m.P )−1 K.
Chứng minh.
Chứng minh P −1(m −1 K)  (m.P )−1 K. Ta có w  P −1(m −1 K)  (p
 P, k  K : w = p −1 (m −1 k)  k = m.p.w). Vì vậy w = (m.p)−1 k 
(m.P )−1 K.
Chứng minh (m.P )−1 K  P −1(m −1 K). 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 −1 k) 
P −1(m −1 K).



- 10 -

1.1.3 Từ và ngôn ngữ
Cho tập hợp các ký tự A gọi là bảng chữ cái. Một từ w trên A là một
xâu hữu hạn các phần tử của A, w = (a1, a2, ..., an), ai A. Một ngôn ngữ
(hình thức) L là một tập hợp các từ của bảng chữ cái A nào đó. Tập tất
cả các từ trên bảng chữ cái A, ký hiệu là A* và được trang bị phép toán
kết hợp  là phép ghép nối hai xâu:
(a1, a2, ..., an) (b1, b2, ..., bm) = (a1, a2, ..., an , b1, b2, ..., bm).
Phép toán ghép nối có tính kết hợp. Do đó, ta có thể viết:
w = a1 a2 ... an thay cho cách viết w = (a1, a2, ..., an)
Mỗi phần tử a A được gọi là một chữ cái. Xâu không chứa chữ cái
nào được gọi là xâu rỗng (hay từ rỗng), ký hiệu là 1 hoặc  . Từ rỗng là
phần tử đơn vị của phép ghép nối. Vì vậy, tập A* được trang bị cấu trúc
của một vị nhóm và được gọi là vị nhóm tự do sinh bởi A. Có thể thấy
A* = A0  A1  A2 … An … , với A0 = { }, A1 = A và An = An –1 A. Tập
tất cả các từ khác rỗng trên A được ký hiệu là A+. Do đó, ta có:
A+ = A*  { }.
Số tất cả các xuất hiện của các chữ trong từ w là độ dài của w, ký

hiệu là w, quy ước   = 0. Với mỗi số nguyên dương n, ký hiệu A[n ] là
tập tất cả các từ trong A* có độ dài nhỏ hơn hoặc bằng n.
Ký hiệu wa là số lần xuất hiện của chữ cái a A trong w. Khi đó:

w 

 wa

aA

Ta nói, từ w A* là một khúc con (factor) của một từ x A* nếu u,
v  A* sao cho: x = uwv. Một từ w A* là một khúc đầu (prefix) của một
từ x A* nếu v A* sao cho: x = wv. Tương tự, một từ w A* là một
khúc đuôi (suffix) của một từ x A* nếu u A* sao cho: x = uw. Một
khúc con (khúc đầu, khúc đuôi) là thực sự nếu uv   (t.ứng, v   , u   ).


- 11 Một phân tích của một từ w A* là một dãy {u1, u2, ..., un}, với n  0,
un A*, i = 1,...,n sao cho w = u1 u2 ... un . Với X  A*, ta biểu diễn X * là
vị nhóm con sinh bởi X, với đơn vị là  .
X * = { x1 x2 . . . xn  n  0, xi X }
Tương tự, ta biểu diễn X + là nửa nhóm con sinh bởi X.
X + = { x1 x2 . . . xn  n  1, xi X }
Vì vậy, ta có
X

+

=


X *  { }
X*

Nếu   X
Ngược lại

Giả sử X và Y là các ngôn ngữ trên A. Ta gọi thương trái (thương phải)
của X với Y là ngôn ngữ Y –1 X (tương ứng XY –1) được xác định bởi:
Y –1 X = { w A* | y w X, y Y }
X Y –1 = { w A* | w y X, y Y }
Nếu Y = {u} chỉ có một phần tử thì ta ký hiệu Xu, uX u–1 X, Xu–1
thay cho XY, YX, Y –1 X, XY –1 tương ứng.

1.2

Ngôn ngữ chính quy và Otomat hữu hạn

1.2.1 Ngôn ngữ chính quy
Cho A là bảng chữ cái hữu hạn. Biểu thức rỗng ( ) và các biểu thức
a  A hoặc a =  được gọi là các biểu thức sơ cấp trên A.
 Các biểu thức chính quy trên A là các biểu thức được định nghĩa đệ
quy như sau:
+ Các biểu thức sơ cấp trên A là các biểu thức chính quy trên A,


- 12 + Nếu E1 và E2 là các biểu thức chính quy trên A, thì các biểu thức
E1 + E2 , E1 .E2 và E1* là các biểu thức chính quy.
Nói cách khác, một biểu thức trên A được gọi là biểu thức chính quy
nếu nó được xây dựng từ các biểu thức sơ cấp bằng cách dùng một số hữu
hạn lần các phép toán hợp, phép tích ghép và phép lặp.

 Một ngôn ngữ chính quy trên A được biểu diễn bởi một biểu thức
chính quy E trên A, ký hiệu L(E), được định nghĩa đệ quy như sau:
+ L( ) = , L( ) = { }, L(a) = {a }, với mọi a A,
+ Nếu E1 biểu diễn ngôn ngữ L1, E2 biểu diễn ngôn ngữ L2 thì
L(E1 + E2) = L 1  L2, L(E 1.E2) = L 1.L2, L(E 1*) = L1*.
Ta nói rằng ngôn ngữ được định nghĩa L(E) như trên là giá trị của
biểu thức chính quy E. Do đó, mỗi tập dạng {w}, w A*, là ngôn ngữ
chính quy trên A. (xem thêm [1, tr. 46]).
Như vậy, tập hợp các ngôn ngữ được biểu diễn bởi các biểu thức
chính quy trên A trùng với tập hợp các ngôn ngữ chính quy khác rỗng
trên A. Khi đó, ta có:
+ Một ngôn ngữ chính quy là vô hạn khi và chỉ khi biểu thức chính
quy biểu diễn nó có chứa phép lặp.
+ Mọi tập hữu hạn các từ trong A* đều là các ngôn ngữ chính quy
trên A. Như vậy từ định nghĩa suy ra: lớp các ngôn ngữ chính quy
trên A là lớp bé nhất chứa các ngôn ngữ hữu hạn và ngôn ngữ
trống, đóng đối với các phép hợp, phép tích ghép và phép lặp.
 Biểu diễn đại số của ngôn ngữ chính quy:
Cho  : A*  M là đồng cấu vị nhóm (ta có thể xem đồng cấu vị
nhóm  là toàn cấu vì nếu không thì ta thay M bởi vị nhóm con  (A*)
của M). Nếu L  A* thỏa mãn  –1 ((L)) = L thì ta nói rằng L thỏa bởi
đồng cấu vị nhóm  . Vậy L thỏa bởi đồng cấu   N  M sao cho
L =  –1 (N).


- 13 Khi đó, ta cũng nói L thỏa bởi M và L cho bởi một bộ ba ( , M, B ).
Cho X, Y  A* là các ngôn ngữ. Ta thiết lập bổ đề kỹ thuật sau đây
về tính thỏa được làm cơ sở xây dựng các thuật toán trên vị nhóm trong
các chương tiếp theo.
Bổ đề 1.2.1. (xem [3]) Giả sử h : A*  M là một toàn cấu vị nhóm thỏa X

+

và Y và giả sử X = h−1(K ), Y = h−1(L ), h(X ) = T với K, L, T  M. Khi
đó
X  Y = h−1(K  L),

X  Y = h−1(K  L ),

X  Y = h−1(K  L ),

X −1 Y = h−1(K −1 L ),

X Y −1 = h−1(K L −1),

+

+

(X )−1Y = h−1(T −1 L ),

Y (X )−1 = h−1(LT −1).

Chứng minh. Giả sử X = h−1(K ), Y = h−1(L ), với K, L  P, ta chứng
minh X  Y = h−1(K  L ).
Trước hết, ta chứng minh X Y  h−1(K L ). Thật vậy, với mọi w
 X Y ta có h(w)  K hoặc h(w)  L. Vậy X Y  h−1(K L ). Ngược
lại, ta chứng minh h−1(K L )  X Y. Thật vậy, với mọi w  h−1(K L ),
ta có h(w)  K L. Nghĩa là w  X Y. Vậy h−1(K L )  X Y.
Ta chứng minh tương tự cho các quan hệ X  Y = h−1(K  L ), X  Y
= h−1(K  L ), X −1 Y = h−1(K −1 L ) và X Y −1 = h−1(K L −1),

+

+

Từ giả thiết h(X ) = T và X = h−1(K ) ta có K = T. Để chứng minh
+

(X )−1Y

+

= h−1(T −1 L ), ta chứng minh (X )−1Y  h−1(T −1 L ) và
+

h−1(T −1 L )  (X )−1Y.
+

Trước hết, ta chứng minh (X )−1Y  h−1(T −1 L ). Thật vậy, với mọi
+

w  (X )−1Y, tồn tại x 1, x 2, …, x n  X, y  Y sao cho x 1, x 2, …, x nw = y.
Từ đó suy ra h(x 1).h(x 2) … h(x n).h(w) = h(y)  L. Hơn nữa, từ h(x i) 
+

K suy ra h(w)  (K )−1L. Vậy w  h−1(T −1 L ).
+

Ngược lại, ta chứng minh h−1(T −1 L )  (X )−1Y. Đặt w  h−1(T −1 L ),
+


+

ta có h(w)  T −1 L = (K )−1L    K : .h(w)  L.


- 14 +

Từ   K suy ra  = 1.2 … p , i  K, i = 1,..., p. Từ giả thiết
h là toàn cấu và X = h−1(K ) suy ra tồn tại x i  X, i = 1,..., p sao cho i =
h(x i). Ta có  = h(x 1 x 2 … x p), khi đó .h(w) = h(x 1 x 2 … x p w). Từ đó
+

suy ra x 1 x 2 … x p w  h−1(L) = Y và ta có w  (X )−1Y.
+

Chứng minh Y (X )−1 = h−1(LT −1) tương tự.
Vậy chứng minh được hoàn thành.



Ta có tính chất sau:
Định lý 1.2.2. (xem [11]) Cho L  A*, L là ngôn ngữ chính quy khi và chỉ
khi L thỏa bởi một đồng cấu vị nhóm  : A*  M, với M là một vị nhóm hữu
hạn.
Khi đó, vị nhóm hữu hạn M được gọi là vị nhóm biểu diễn ngôn ngữ L.
Từ định nghĩa của đồng cấu và định nghĩa của ngôn ngữ chính quy, ta có
một số kết quả sau:
Mệnh đề 1.2.2. Cho X, Y  A* là hai ngôn ngữ chính quy, và hai đồng
cấu vị nhóm  : A*  M và  : A*  N lần lượt thỏa X và Y. Khi đó, ta
luôn xây dựng được một đồng cấu (toàn cấu) vị nhóm  : A*  P, với P là

một vị nhóm hữu hạn, thỏa đồng thời cả X và Y.
Chứng minh. Xét   =    : A*  M × N = P
u  ( (u),  (u))

  (1M, 1N) = 1P , với 1P là đơn vị của P 
Theo giả thiết, tồn tại C  M, D  N mà X =  –1 (C), Y =  –1 (D). Đặt
C  = C × N = { (c, n) | c C, n N },
D = M × D = { (m, d) | m M, d D }
Sau đây ta sẽ chứng minh:  –1 (C ) = X,  –1 (D) = Y. Thật vậy,
với X =  –1 (C), x  X, ta có c =  (x), c  C,  (x) = ( (x),  (x)) =
(c,  (x))  C  như vậy  (X)  C .


- 15 Ngược lại, với y   (C )  A*,  (y) C ,  (y) = ( (y),  (y)) =
(c, n)  C . Từ đó ta có thể viết:

 (C ) = X =  –1 (C  P),

C = C  P  P

 (D) = Y =  –1 (D P),

D = D P  P

X =  –1 (C), Y =  –1 (D)
Suy ra X và Y đồng thời thỏa bởi  . Từ  (A*) = P  P và
 : A*  P là toàn cấu, suy ra  (u) =  (u). Vậy  : A*  P thỏa đồng
thời cả X và Y.

Ví dụ 1.2.4. Cho vị nhóm U1 = {0, 1}, với phần tử đơn vị là 1 và phần tử

zero là 0 và cho ngôn ngữ X thỏa bởi một đồng cấu vị nhóm  : A*  M ,
ngôn ngữ Y = { } thỏa bởi đồng cấu vị nhóm  : A*  U1, được xác định
bởi:  ( ) = 1, u A*,  (u) = 0. Dễ thấy rằng, cả X và Y cùng thỏa bởi
toàn cấu  : A*  P, với P  M ×U1 , được xác định bởi: u A*,  (u) =
( (u), 0), 1P =  ( ) = (1M , 1). Khi đó, P là vị nhóm được sinh bởi  (u),
u A*. Nếu |M| là hữu hạn thì |P|  2.|M|.
Từ Mệnh đề 1.2.3, ta có kết quả sau:
Hệ quả 1.2.5. Cho X, Y  A* là hai ngôn ngữ chính quy. Nếu X và Y cùng
thỏa bởi toàn cấu vị nhóm  : A*  P, với P là một vị nhóm hữu hạn,
thì  cũng thỏa mọi L (X,Y), trong đó (X,Y) là lớp ngôn ngữ sinh
bởi X, Y nhờ sử dụng hữu hạn các phép , ,  và các phép thương trái,
thương phải.
Chứng minh. Theo giả thiết X =  –1 (C), Y =  –1 (D), C, D  P.
Với mọi x X  Y, ta có  (x) C hoặc  (x) D. Suy ra X  Y =
 (C  D) =  –1 (C)   –1 (D). Do đó,  thỏa ngôn ngữ X  Y. Lập luận
tương tự với phép  và phép  .
–1

Theo định nghĩa: C –1D = { m P | c C, c m = d D  P } 
X –1 Y =  –1 (C –1D). Do đó  thỏa ngôn ngữ X –1 Y. Lập luận tương tự với
phép XY –1.



- 16 Từ kết quả trên, ta có nhận xét sau:
Nhận xét 1.2.6. Cho X, Y là hai ngôn ngữ chính quy trên A và toàn cấu
vị nhóm  : A*  P thỏa đồng thời cả X và Y, với P có cỡ |M|.|N|. Theo
Hệ quả 1.2.5,  thỏa đồng thời cả L = X  Y, L = X  Y, L = XY,
L = X –1 Y, L = XY –1. Đặt X =  –1 (C), Y =  –1 (D), với C, D  P. Suy
ra L =  –1 (K), với K = C  D, K = C  D, K = C  D, K = C –1D,

K = CD –1, K  P. Khi đó, để tính K thì mất không quá |P|2 bước thực
hiện. Còn đối với vị nhóm X +, ta thực hiện như sau:
Theo giả thiết X =  –1 (C), đặt K =  (X +) và K1 = C, khi đó ta có
K = C +. Từ K1 = C, ta có K 2 = (K 1  {1P}).C  P, K 3 = (K 2  {1P}).C
 P, . . . , K i +1 = (K i  {1P}).C  P. Nếu K i +1 = K i thì dừng và ta thu
được nửa nhóm K = Ki = C 1  C 2  ... là nửa nhóm đoán nhận X +.
Độ phức tạp tính toán của mỗi bước tính K i +1 từ K i có cỡ |P|2. Vì
dãy K i là dãy tăng dần và bị chặn bởi |P|, do đó số bước tính các tập K i
không vượt quá |P| bước, i  1. Vì vậy, độ phức tạp để tính nửa nhóm
K = C + có cỡ |P|3.
Bổ đề 1.2.7. Cho X, Y  A* là hai ngôn ngữ chính quy và  : A*  P là
toàn cấu vị nhóm. Nếu X, Y thỏa bởi  thì (X +) –1 Y, Y (X +) –1 cũng thỏa
bởi  .
Chứng minh. Theo giả thiết X =  –1 (C), Y =  –1 (D), với C, D  P. Đặt

 (X +) = K, khi đó C + = K. Ta chứng minh (X +) –1 Y =  –1 (K –1 D).
Với mọi w (X +) –1 Y, ta có x1 x2 ... xn w = y, xi X, y Y, i = 1,...,n .
Suy ra  (x1)  (x2) ...  (xn)  (w) =  (y) D. Từ  (xi) C, ta có  (w)
(C +) –1 D. Vì vậy, w   –1 (K –1 D).
Ngược lại, chọn w   –1 (K –1 D), ta có  (w) K –1 D = (C +) –1 D, suy
ra tồn tại c  C + sao cho c. (w) D. Từ c  C +, suy ra c = c1c2 ... cp, với
ci C, i = 1,...,p. Theo giả thiết,  là toàn cấu và X =  –1 (C), tồn tại


- 17 xi X sao cho ci =  (xi), suy ra c =  (x1 x2 ... xp). Do đó, c. (w) =  (x1 x2
... xp w), suy ra x1 x2 ... xp w   –1 (D) = Y. Vì vậy w (X +) –1 Y.
Chứng minh tương tự cho trường hợp Y (X +) –1 thỏa bởi  .




1.2.2 Otomat hữu hạn
Cho A là bảng chữ cái hữu hạn. Một otomat đa định hữu hạn trên A
là một bộ gồm 5 thành phần A = (A, Q, E, I, T), với Q là tập hữu hạn
các trạng thái; I  Q là tập các trạng thái khởi đầu; T  Q là tập các
trạng thái kết thúc; E  QAQ là tập các cung, xác định hàm chuyển
trạng thái của otomat.
Mỗi cung là một bộ (qi , a, qj ), với a A, qi , qj Q. Khi đó, ta gọi là
đường đi từ trạng thái qi đến trạng thái qj với nhãn a và được biểu diễn là:
a
 qj
qi 

Hai cung chuyển (p, a, q) và (p, a, q ) là kế tiếp (liền nhau)
nếu q = p. Một đường đi trong otomat A là một dãy các cung kế tiếp
a1
a2
a3
an
 q1 
 q2 
 . . . qn –1 
q0 
qn

trong đó, n gọi là độ dài của đường đi P, từ w = a1 a2 … an tạo thành bởi
các nhãn ai được gọi là nhãn của đường đi P. q0 là trạng thái bắt đầu của P,
qn là trạng thái kết thúc của P. Ta ký hiệu:
w
P : q0  qn


Quy ước rằng, q Q, đường đi từ q đến q có độ dài 0. Nhãn của nó là
 qn được gọi là đường đi thành công nếu
từ rỗng. Một đường đi P : q0 
q0 I, qn T. Tập tất cả các đường đi thành công của otomat A được ký
hiệu là L(A ) và được gọi là ngôn ngữ đoán nhận bởi A. Một trạng thái
 qi ,
qi Q được gọi là trạng thái đạt được nếu có một đường đi P : q0 
với q0 I.


- 18 Hàm chuyển trạng thái  : Q  A  Q được xác định bởi q   (p, a),
với (p, a, q) E. Ta có thể mở rộng hàm  : QA  Q thành hàm  :
QA*  Q, gọi là hàm chuyển mở rộng của otomat A, được định nghĩa quy
nạp theo độ dài của từ w A*:  (p,  ) = p và  (p, wa) =  ( (p, w), a).
Do đó,

L (A )

= { w A* | q0 I sao cho  (q0, w) T }

Một otomat hữu hạn A = (A, Q, E, I, T) được gọi là otomat đơn
định hữu hạn nếu I là một phần tử và nếu điều kiện (p, a, q), (p, a, q )
E suy ra q = q . Do đó, ta có thể xem các otomat đơn định hữu hạn như
là các trường hợp đặc biệt của otomat đa định hữu hạn, với các hạn chế
 (p,  ) =  và | (p, a)| = 1.
Một ngôn ngữ L  A* được gọi là đoán nhận được nếu L = L (A ), với
A là otomat đa định (đơn định) hữu hạn nào đó.
Định lý 1.2.8. (xem [16]) Một ngôn ngữ L là đoán nhận được khi và chỉ
khi L là ngôn ngữ chính quy.
Cho L  A* là một ngôn ngữ chính quy. Ta định nghĩa một otomat

hữu hạn đặc biệt A (L) = (A, Q, E, I, T) như sau. Các trạng thái của
A (L) là các tập khác rỗng
u−1 X
với u  A*. Trạng thái khởi đầu là L =  −1 L, và các trạng thái kết thúc
có chứa từ rỗng. Hàm chuyển cho một trạng thái M = u−1 L và một chữ
cái a  A được cho bởi
a
 a−1 M
M 

Đây là một hàm bộ phận và ta có L (A (L)) = L.
Ta biết rằng theo [9], otomat A (L) được gọi là otomat tối tiểu của L
theo nghĩa đơn định, có số trạng thái ít nhất mà đoán nhận L.


- 19 Cho A = (A, Q, E, I, T) là một otomat đơn định. Ta xem xét tập E
của các hàm bộ phận từ Q đến Q. Các hàm này được viết về phía bên
phải: nếu q  Q và m  E khi đó ảnh của q bởi m được ký hiệu là qm.
Hàm hợp được định nghĩa bởi q (mn) = (qm)n. Vì vậy E có cấu trúc vị
nhóm.
Xét  là một ánh xạ cho tương ứng mỗi từ w  A* một hàm bộ phận
từ Q đến Q định nghĩa bởi
q  (w ) = q .w.
Khi đó, ánh xạ  là một đồng cấu từ A* đến vị nhóm E, và vị nhóm
 (A*) của E được gọi là vị nhóm các phép chuyển dịch của otomat A.
Cho L  A* là một ngôn ngữ. Với w  A*, ta định nghĩa tập ngữ cảnh
Context (w) = {(u , v)  A* ×A* | uwv  L }.
Tương đẳng cú pháp của L là một quan hệ tương đương L trên A*
được định nghĩa bởi
w L w




Context (w) = Context (w).

Tập thương của A*/ L được gọi là vị nhóm cú pháp của L. Ta ký
hiệu vị nhóm cú pháp của L là ML và ký hiệu  L là đồng cấu chính tắc từ
A* đến ML , gọi là đồng cấu cú pháp của L.
Cho L  A* là một ngôn ngữ, ta có các kết quả sau đây về tính thỏa
được theo  L , mối liên hệ giữa vị nhóm cú pháp của L và otomat tối tiểu
A (L)
Mệnh đề 1.2.9. (xem [9]) Cho L  A* là một ngôn ngữ và cho  : A*  M
là một toàn cấu vị nhóm. Nếu  thỏa L thì tồn tại một đồng cấu  từ M
đến vị nhóm cú pháp ML sao cho  L =  . 
Mệnh đề 1.2.10. (xem [9]) Cho L  A* là một ngôn ngữ. Vị nhóm cú pháp
của L đẳng cấu với vị nhóm các phép chuyển dịch của otomat tối tiểu
A (L).


- 20 +

Lớp các ngôn ngữ chính quy trên A* (trên A ) được ký hiệu là RecA*
+
(RecA ). Ta biết rằng RecA* là lớp các ngôn ngữ sinh bởi các ngôn ngữ
{ a }, với a là một chữ cái thuộc A, các phép toán Boole ( ,  , −), phép
nhân ghép và phép lặp *, và cũng là lớp các ngôn ngữ đoán nhận được
+
+
bởi otomat hữu hạn, RecA = {L  RecA* | L  A }. Ta có
Mệnh đề 1.2.11. (xem [9]) Lớp các ngôn ngữ chính quy trên A* đóng đối

với phép toán Boole: phép hợp (), phép giao (), phép lấy phần bù (−).
Định lý sau đây đặc trưng các tính chất của otomat hữu hạn
Mệnh đề 1.2.12. (xem [9]) Cho L  A* là một ngôn ngữ. Các mệnh đề sau
đây là tương đương
(i) L là ngôn ngữ chính quy.
(ii) L đoán nhận được bởi một otomat hữu hạn (hoặc L là đoán
nhận được).
(iii) Otomat tối tiểu A (L) là hữu hạn.
(iv) Họ các tập u−1 X (với u  A*) là hữu hạn.
(v) Vị nhóm cú pháp ML là hữu hạn.
(vi) L thỏa bởi một đồng cấu từ A* đến một vị nhóm hữu hạn M.
+

Nhận xét 1.2.13. Giả sử L  A thỏa bởi một đồng cấu vị nhóm  : A* 
M từ A* đến một vị nhóm hữu hạn M. Nếu L là ngôn ngữ chính quy, ta
có thể chọn M là vị nhóm các phép chuyển dịch của otomat tối tiểu đoán
nhận L, hoặc vị nhóm cú pháp ML hữu hạn của L. Ta gọi m = Card (ML )
là chỉ số của tương đẳng cú pháp của L, hay đơn giản, m là chỉ số của L,
hoặc L có chỉ số m.


- 21 -

Chƣơng 2
MÃ CỦA CÁC TỪ HỮU HẠN
Chương này trình bày một số khái niệm và tính chất cơ bản của mã,
mối quan hệ giữa lý thuyết mã với đại số, thuật toán kiểm tra tính chất
mã của ngôn ngữ chính quy, độ trễ giải mã. Về các kiến thức cơ sở có liên
quan, xin xem thêm trong [1], [9], [11], [13], [16].


2.1 Mã và các tính chất của mã
2.1.1 Mã và vị nhóm tự do
Định nghĩa 2.1.1. Cho A là một bảng chữ cái. Một tập con X của vị
nhóm tự do A* được gọi là mã trên A nếu n, m  1 và x1, x2, ..., xn ,
x1, x2, ..., xm X,
x1 x2 ... xn = x1x2 ... xm

 m = n và xi = xi (với i = 1, ..., n).

Nói cách khác, một tập X là mã nếu mọi từ trong A* có không quá một
cách phân tích thành các từ trong X. Dễ thấy rằng, mỗi tập con của một
mã là mã, đặc biệt tập rỗng cũng là mã và mọi từ mã đều không chứa từ
rỗng (do  . =  ).
Một đơn cấu  : B *  A* được gọi là đồng cấu mã hay một phép mã
hóa. Điều kiện cần và đủ về phép mã hoá, biểu diễn qua đơn cấu vị nhóm
được thể hiện qua mệnh đề sau.
Mệnh đề 2.1.2. (xem [9]) Nếu tập con X của A* là mã thì mọi đồng cấu  :
B *  A*, cảm sinh một song ánh từ bảng chữ cái B nào đó lên X, sẽ là
đơn cấu. Ngược lại, nếu tồn tại một đơn cấu  : B *  A* sao cho  (B) = X
thì X là mã.


- 22 Với khái niệm trên, quá trình mã hoá có thể coi là việc thay thế mỗi
từ b1 b2 ... bn thuộc B * bằng từ mã  (b1)  (b2) ...  (bn) được xác định bởi
đồng cấu mã  . Sự kiện  là đơn ánh đảm bảo rằng từ mã có thể được
giải mã duy nhất để thu được bản rõ ban đầu.
Ví dụ 2.1.3. (a) Mã Morse XM là mã trên bảng chữ { . ,  ,  } dùng để
mã hóa các chữ a, b, …, z.
(b) Mã ASCII XA là một mã trên {0, 1}. Ta thấy các từ của XM có độ
dài khác nhau, còn mọi từ của XA có độ dài là 8.

Từ Mệnh đề 2.1.2, ta có hệ quả sau:
Hệ quả 2.1.4. (xem [9]) Cho  : 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ả 2.1.5. (xem [9]) Nếu X  A+ là mã thì X n là mã, với mọi số
nguyên n > 0.
Cho tập X  A*, khi đó X gọi là tập prefix nếu không có từ nào trong
X là khúc đầu thực sự của một từ khác trong X. Nói cách khác, tập X là
prefix nếu với mọi x, y X, nếu x là prefix của y thì x = y. Hoặc X là
prefix nếu X –1 X = .
Ta có thể thấy rằng nếu X là tập prefix và chứa từ rỗng thì X = { }.
Ngược lại với định nghĩa tập prefix ta có định nghĩa tập suffix. Tập X
được gọi là tập suffix nếu không có từ x nào trong X là khúc đuôi thực sự
của một từ y khác trong X. Tập X được gọi là tập bifix nếu nó vừa là tập
prefix, vừa là tập suffix. Tập các prefix thực sự của tập X bất kỳ được ký
hiệu là Pref(X), tương tự ta có tập Suff(X). Dễ thấy rằng Pref(X) =
X(A+)1 và Suff(X)=(A+)1 X.
Ví dụ 2.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 khúc đầu cũng là từ trong X. Tuy


- 23 nhiên X không phải là suffix vì từ abb thuộc X có khúc đuôi bb thuộc X.
Do đó X không phải là tập suffix.
Ví dụ 2.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 khúc đầu cũng là từ trong X và
X cũng là suffix. Do đó X là tập bifix.
Từ định nghĩa mã và tập prefix, suffix và bifix, ta có các mệnh đề sau:
Mệnh đề 2.1.8. (xem [9]) Mọi tập prefix (suffix, bifix) khác { } đều là mã.
Mã X được gọi là mã prefix (t.ứng, suffix, bifix) nếu nó là tập prefix
(t.ứng, suffix, bifix). Ta có mệnh đề sau:

Mệnh đề 2.1.9. (xem [21]) Cho X là mã trên A. Khi đó, X là mã prefix
(t.ứng, suffix) khi và chỉ khi XA+  X =  (t.ứng, A+ X  X =  ).
Tính chất của mã có quan hệ rất gần với khái niệm vị nhóm tự do
bởi vì nếu X là mã thì X * là vị nhóm tự do và nếu M là vị nhóm tự do thì
tập sinh cực tiểu của M là mã. Do đó, tiếp theo sau đây, ta sẽ trình bày
một số kết quả cơ sở của vị nhóm tự do và mối quan hệ giữa vị nhóm tự
do và mã.
Mệnh đề 2.1.10. (xem [21]) Một vị nhóm con M của A* là vị nhóm tự do
khi và chỉ khi, với mọi w   thuộc M, w có duy nhất một phân tích thành
tích của các phần tử của X, với X = (M – { })  (M  { })2.
Cho M là một vị nhóm con của vị nhóm tự do A*. Với mọi w  
thuộc M, ta có thể viết w = w1 w2 . . . wn , với wi X = (M  { }) 
(M  { })2, i = 1,…,n. Do đó, tập X là tập sinh của M. Nếu X  
(M  { }) là một tập sinh khác của M thì, với mọi w  X, w có thể viết
thành w = w1w2 … wn, với wi X. Hơn nữa, nếu n = 1 và w  X  thì
X  X . Ta có mệnh đề sau:


- 24 Mệnh đề 2.1.11. (xem [16]) Mọi vị nhóm con M của vị nhóm tự do A* có
tập sinh cực tiểu duy nhất X = (M  { })  (M  { })2. Khi đó, X được
gọi là cơ sở của M.
Ví dụ 2.1.12. Cho A = {a, b }, với tập M = {ai | i  ℕ0, i  1}. Tập X =
{ a 2, a 3 } là cơ sở của M. Dễ thấy, M không là vị nhóm tự do trên X,
vì a6 M thừa nhận hai phân tích trong C : a 6 = a 2 a 2 a 2 = a 3 a 3 . Theo
Mệnh đề 2.1.11, M không là vị nhóm tự do.
Ví dụ 2.1.13. Cho A = {a, b }, với tập M = {w | |w|a  0 mod 2 }. Ta có
X = (M  { })  (M  { })2 = b  ab*a.
Từ định nghĩa của vị nhóm con tự do, ta có các kết quả sau :
Mệnh đề 2.1.14. (xem [17]) Cho M là vị nhóm con của vị nhóm tự do A*.
Khi đó, X là tập sinh cực tiểu của M khi và chỉ khi

X  X (M  { }) = .
Mệnh đề 2.1.15. (xem [16]) Cho M là vị nhóm con của vị nhóm tự do A*.
Các điều kiện sau là tương đương :
(i) M là vị nhóm tự do.
(ii) Với mọi w A*, Mw  M   và wM  M   , suy ra w M.
(iii) Với mọi w A*, Mw  M  wM   , suy ra w M.
Tính chất X là mã tương đương với tập X * là vị nhóm tự do. Từ đó,
ta có mệnh đề sau:
Mệnh đề 2.1.16. (xem [9]) Cho M là vị nhóm con của vị nhóm tự do A*.
Nếu M là vị nhóm tự do thì tập sinh nhỏ nhất của M là mã. Ngược lại, nếu
X  A* là mã, khi đó vị nhóm con X * của A* là vị nhóm con tự do và X là
tập sinh nhỏ nhất.


- 25 Một vị nhóm con M của A* là vị nhóm con tự do nếu tồn tại một
đẳng cấu  : B *  M, với B *  A*. Trong trường hợp này thì  được gọi
là phép mã hóa của B trên A.
Từ các mệnh đề trên, ta có hệ quả sau:
Hệ quả 2.1.17. (xem [9]) Cho X và Y là mã trên A. Nếu X * =Y * thì X = Y.
Cho X  A* và đặt U0 = X, Ui = { w A+ | Ui –1 w  X   hoặc
X w  Ui–1   }, với mọi i  1. Mệnh đề sau là cơ sở để xây dựng thủ tục
kiểm tra một tập X có là mã hay không (A. A. Sardinas và C. W.
Patterson [21]).
Mệnh đề 2.1.18. (xem [16]) Cho X  A+. Khi đó, X là mã khi và chỉ khi
X  Ui =  , với mọi i  1.
Chú ý rằng, nếu X là hữu hạn thì độ dài của các từ trong Ui ,
i = 0,1,... là giới nội bởi độ dài lớn nhất của các từ trong X. Vì vậy, tồn
tại một số hữu hạn các Ui khác nhau.
Ví dụ 2.1.19. Cho A = {a, b } và X = {a, aaab, aba }. Ta có
U0 = X,


U1 = {aab, ba },

U2 = {ab },

U3 = {a, b };

Vì X  U3   , suy ra X không là mã.
Ví dụ 2.1.20. Cho A = {a, b } và X = {a, aab, bab, bb }. Ta có
U0 = X,

U1 = {ab },

U2 = {b },

U3 = {ab, b } = U4 = … ;

Từ X  Ui =  , với i  1, suy ra X là mã.

2.1.2 Thủ tục kiểm tra tính chất mã
Cho tập các từ X trên bảng chữ A, bài toán kiểm tra tính chất mã
của X là một bài toán cơ bản khi nghiên cứu mã. Trong mục này ta đề
cập đến thủ tục Sardinas–Patterson ( [21]). Thủ tục này không cần sử


×