Khi xây dựng các lớp mã mới, một trong các bài toán cơ bản đặt ra là bài toán kiểm định tính chất mã của ngôn ngữ (chính quy) cho trước. Các định lý
sau thể hiện đặc trưng cần và đủ đối với một cặp ngôn ngữ X, Y cho trước có
là mã luân phiên chẵn, mã luân phiên hay không và các định lý này cũng tạo cơ sở cho ta thiết lập các thuật toán kiểm tra tính chất mã luân phiên chẵn, mã luân phiên trong phần sau.
Định lý 2.13. Cho X, Y A+. Khi đó, cặp (X, Y) là mã luân phiên chẵn khi và chỉ khi hai điều kiện sau được thỏa mãn:
(i) (X, Y) có tích không nhập nhằng. (ii) Z = XY là mã.
Chứng minh. () Ta chứng minh, nếu (X, Y) LEALT thì (X,Y) có tích không
nhập nhằng và Z = XY LC.
Theo định nghĩa tích không nhập nhằng và định nghĩa mã luân phiên chẵn, suy ra (X,Y) có tích không nhập nhằng.
Nếu Z = X Y LC, khi đó tồn tại từ w Z+ có hai phân tích khác nhau trong Z: w = z1z2 . . . zn = z1z2 . . . zm , trong đó zi = xiyi , zi = xiyi, với xi
, xj X , yi , yj Y , i = 1,...,n, j = 1,...,m. Rõ ràng, đây là hai phân tích luân phiên cùng kiểu khác nhau của từ w theo (X, Y), mâu thuẫn.
() Ta chứng minh, nếu (X, Y) có tích không nhập nhằng và Z = X YLC thì (X, Y) LEALT .
Giả sử Z = X Y LC và (X, Y) có tích không nhập nhằng. Khi đó, từ hệ
thức x1y1x2y2 ... xnyn = x1y1x2y2 ... xmym , đặt zi = xiyi , zj = xjyj, ta có z1 ... zn = z1... zm với zi , zj Z, i = 1,...,n , j = 1,...,m. Do Z LC nên m = n, zi =
zi hay xiyi = xiyi, i = 1,...,n.
Từ giả thiết (X,Y) có tích không nhập nhằng và từ hệ thức xiyi = xiyi,
Định lý 2.14. Cho X, Y A*. Khi đó, cặp {X, Y} LALT khi và chỉ khi bốn điều kiện sau đồng thời được thỏa mãn:
(i) XY là mã và X–1X Y Y–1 – {} = ; (ii) Y–1(X Y)+ (X Y)+ = ;
(iii) (XY)+X–1 (X Y)+ = ;
(iv) (XY)+ (YX)+ = .
Chứng minh. () Giả sử {X, Y} LALT. Ta chứng minh phản chứng:
(i) Giả sử {X, Y} LALT, khi đó có 2 khả năng xẩy ra:
Trường hợp 1: X-1X YY-1 – {}
Khi đó, tồn tại các từ u , x1, x2 X , y1, y2 Y sao cho x1 = x2u, uy1 = y2 , ta có x1y1 = x2y2 với x1 x2. Suy ra, cặp {X, Y} LALT, mâu thuẫn. Do đó X- 1
X YY-1 – {} =
Trường hợp 2: Tích Z = XY không là mã, nghĩa là tồn tại từ w A+ thừa nhận
hai sự phân tích khác nhau trong Z: w = z1z2 ... zn = z1’z2’ ... zm’ (z1 z1’), sao cho
z1 = x1y1, z2 = x2y2, ..., zn = xnyn , với xi X, yi Y
z1’ = x1’y1’, z2’ = x2’y2’, ..., zm’ = xm’ym’ , với xj’ X, yj’ Y
rõ ràng, đây là hai sự phân tích luân phiên khác nhau của w theo X, Y. Suy ra
(ii). Giả sử Y-1(XY)+ (XY)+ , khi đó sẽ tồn tại y Y , u Y-1(XY)+
(XY)+ sao cho: yz1z2 ... zn = z1’z2’ ... zm’ , zi ,zj’ XY , zi = xiyi , zj’ = xj’yj’, xi
,xj’ X, yi , yj’ Y, i=1,...,n , j=1,...,m.
Đặt w = yu (XY)+, ta có w = z1’z2’ ... zm’. Mà u (XY)+ suy ra u = x1y1 ...
xnyn. Do đó w = yx1y1 ... xnyn = x1’y1’ ... xm’ym’. Suy ra {X, Y} LALT, mâu thuẫn với giả thiết. Do đó Y-1(XY)+ (XY)+ = .
(iii). Giả sử (XY)+X-1 (XY)+ , khi đó sẽ tồn tại x X , u (XY)+X-1
(XY)+ sao cho u = z1z2 ... zn và ux = z1z2 ... znx = z1’z2’ ... zm’ , zi ,zj’ XY mà
zi = xiyi , zj’ = xj’yj’, xi ,xj’ X, yi , yj’ Y, i=1,...,n , j=1,...,m.
Đặt w = ux (XY)+, ta có w = z2’z2’ ... zm’. Mà u (XY)+ suy ra u = x1y1 ...
xnyn. Do đó w = x1y1 ... xnynx = x1’y1’ ... xm’ym’. Suy ra {X, Y} LALT, mâu thuẫn với giả thiết. Do đó (XY)+X-1 (XY)+ = .
(iv). Giả sử (XY)+ (YX)+ , khi đó sẽ tồn tại một từ w A+ thừa hai sự
phân tích khác nhau theo X, Y: w = x1y1 ... xnyn = y1’x1’... ym’xm’. Suy ra {X, Y}
LALT, mâu thuẫn với giả thiết. Do đó (XY)+ (YX)+ = . () Giả sử các điều kiện (i), (ii), (iii), (iv) đều được thỏa mãn.
Giả sử ngược lại {X, Y} LALT, khi đó sẽ tồn tại từ w A+ thừa nhận hai
sự phân tích luân phiên khác nhau theo X, Y: w = u1u2 ... ui = u1’u2’ ... uj’ , i, j
1, u1 u1’.
Xét tính chẵn lẻ của i, j ta có các trường hợp sau:
Trường hợp 1: u1 X, u1’ X
- Với i và j đều chẵn. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (X, Y): w = x1y1 ... xnyn = x1’y1’ ... xm’ym’ , thì tích XY không là mã, mâu thuẫn với (i).
- Với i và j đều lẻ. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (X, Y): w = x1y1 ... xn = x1’y1’ ... xm’. Ta thêm y vào cuối hai phân tích, ta có:
w’ = x1y1 ... xny = x1’y1’ ... xm’y
suy ra w’ thừa nhận hai sự phân tích luân phiên khác nhau trong XY. Do đó
XY không là mã, mâu thuẫn với (i).
- Với i chẵn và j lẻ. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (X, Y): w = x1y1 ... ynxn = x1’y1’ ... xm’. Đặt u = x1’y1’ ... ym-1’xm-1’ (XY)+, thì w = uxm’ (XY)+. Khi đó u (XY)+X-1, mâu thuẫn với (iii).
- Với i lẻ và j chẵn. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (X, Y): w = x1y1 ... xn = x1’y1’ ... xm’ym’. Đặt u = x1y1 ...
yn-1xn-1 (XY)+, thì w = uxn (XY)+. Khi đó u (XY)+X-1, mâu thuẫn với
(iii).
- Với i và j đều chẵn. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo X, Y: w = x1y1 ... xnyn = y1’x1’ ... ym’xm’ (XY)+
(YX)+. Suy ra (XY)+ (YX)+ , mâu thuẫn với (vi).
- Với i và j đều lẻ. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo X, Y: w = x1y1 ... xn = y1’x1’ ... ym’. Xét w’ = w.w =
x1y1 ... xny1’x1’ ... ym’ = y1’x1’ ... ym’x1y1 ... xn (XY)+ (YX)+. Suy ra (XY)+
(YX)+ , mâu thuẫn với (vi).
- Với i chẵn và j lẻ. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo X, Y: w = x1y1 ... ynxn = y1’x1’ ... ym’. Đặt u = x1’y2’ ...
xm-1’ym’ (XY)+ thì w = y1’u (XY)+. Khi đó u Y-1(XY)+, mâu thuẫn với
(ii).
- Với i lẻ và j chẵn. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo X, Y: w = x1y1 ... xn = y1’x1’ ... ym’xm’. Ta thêm y vào cuối hai phân tích, ta có:
w’ = x1y1 ... xny = y1’x1’ ... ym’xm’y.
Đặt u = x1’y2’ ... xm’y (XY)+ thì w’ = y1’u (XY)+. Do đó u Y-1(XY)+, mâu thuẫn với (ii).
Trường hợp 3: u1 Y, u1’ Y
- Với i và j đều chẵn. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (Y, X): w = y1x1 ... ynxn = y1’x1’ ... ym’xm’. Ta thêm x
vào đầu và y vào cuối hai phân tích, ta có:
w’ = x y1x1 ... yn xn y = x y1’x1’ ... ym’xm’y
suy ra w’ thừa nhận hai sự phân tích luân phiên trong XY. Do đó XY không
- Với i và j đều lẻ. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (Y, X): w = y1x1 ... yn = y1’x1’ ... ym’. Ta thêm x vào
đầu hai phân tích, ta có:
w’ = x y1x1 ... xn-1yn = x y1’x1’ ... xm-1’ym’
suy ra w’ thừa nhận hai sự phân tích luân phiên trong XY. Do đó XY không
là mã, mâu thuẫn với (i).
- Với i chẵn và j lẻ. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (Y, X): w = y1x1 ... ynxn = y1’x1’ ... ym’. Ta thêm x vào
đầu hai phân tích, ta có:
w’ = x y1x1 ... ynxn = x y1’x1’ ... ym’
Đặt u = x y1 ... xn-1yn (XY)+, thì w’ = u xn (XY)+. Do đó u(XY)+X-1, mâu thuẫn với (iii)
- Với i lẻ và j chẵn. Nếu tồn tại từ w A+ thừa nhận hai sự phân tích luân
phiên khác nhau theo (Y, X): w = y1x1 ... yn = y1’x1’ ... ym’xm’. Ta thêm x vào
đầu hai phân tích, ta có:
w’ = x y1x1 ... yn = x y1’x1’ ... ym’xm’
Đặt u = x y1’ ... xm-1’ym’, thì w’ = u xm’ (XY)+. Do đó u (XY)+X-1, mâu thuẫn với (iii).
Trường hợp 4: u1 Y, u1’ X
Chứng minh tương tự Trường hợp 2.