Mã luân phiên

Một phần của tài liệu THUẬT TOÁN mới KIỂM ĐỊNH và mã mở RỘNG (Trang 43)

Một hình thức mở rộng khác của tích không nhập nhằng đã được đề xuất bởi P. T. Huy, V. T. Nam (xem [4], 2004) bằng cách tích lặp nhiều lần. Từ đó cho phép thiết lập hai lớp mã mới (gọi là mã luân phiên, mã luân phiên chẵn) và một số tính chất đặc trưng của mã luân phiên, mã luân phiên chẵn với cặp ngôn ngữ có tích không nhập nhằng. Sau đây, ta sẽ trình bày lại một số kết quả trong [4] và thiết lập mới một số kết quả nhằm làm phong phú thêm cho các lớp mới này.

Cho X, YA+, ta định nghĩa phân tích luân phiên theo hai tập ngôn ngữ X, Y như sau:

Định nghĩa 3.2.1. Cho bảng chữ AX, YA+, wA+. Ta nói rằng: (i) Từ w có một phân tích luân phiên theo (X,Y) nếu w = u1u2 ... un

(n2), trong đó, u1 X, nếu ui X thì ui+1 Y và nếu ui Y thì

ui+1X, với i = 1,...,n1.

(ii) Từ w có một phân tích luân phiên theo {X,Y} nếu w có một phân tích luân phiên theo (X,Y) hoặc (Y,X).

(iii) Hai phân tích luân phiên theo {X,Y} được gọi là cùng kiểu trái (t.ứng, cùng kiểu phải) nếu chúng cùng bắt đầu (t.ứng, cùng kết thúc) với các từ trong X hoặc trong Y.

(iv) Hai phân tích luân phiên theo {X,Y} được gọi là cùng kiểu nếu chúng vừa là cùng kiểu trái, vừa là cùng kiểu phải.

Ví dụ 3.2.2. Cho X = {a, ba} và Y = {b, aba}. Khi đó, từ w = ababa có hai phân tích luân phiên theo {X,Y} như sau:

f1 : (a).(b).(a).(b).(a) là một phân tích luân phiên theo (X,Y).

f2 : (aba).(ba) là một phân tích luân phiên theo (Y,X).

Dựa trên khái niệm tích không nhập nhằng và khái niệm phân tích luân phiên, cho phép ta định nghĩa lại một cách chặt chẽ khái niệm mã luân phiên, mã luân phiên yếu trái (yếu phải) và mã luân phiên chẵn như sau:

- 44 -

Định nghĩa 3.2.3. Cho X, YA+. Cặp {X,Y} được gọi là mã luân phiên nếu, với mỗi từ wA+, w có không quá một phân tích luân phiên theo {X,Y}.

Ta ký hiệu LC là lớp mã (thông thường) và LALT là lớp mã luân phiên. Theo định nghĩa dễ thấy rằng, điều kiện cần để {X,Y}  LALT

XY = . Do đó, từ nay trở đi, khi nghiên cứu về mã luân phiên thì ta luôn quy ước điều kiện cần này luôn được thỏa mãn.

Trong trường hợp {X,Y}  LALT thì tồn tại từ wA+ sao cho các Overlap của hai phân tích của từ w là khác  (xem Hình 3.1).

y1 . . . . y1 x1 x1 . . . . Overlap Overlap x2 x2 Overlap w

Hình 3.1. Các Overlap của hai phân tích của từ w.

Các ví dụ sau cho ta thấy rằng: có {X,Y}  LALT cho dù X, Y  LC, và có X, YLC nhưng {X,Y}  LALT.

Ví dụ 3.2.4. Cho X = {ab, ba}, Y = {a} LC, nhưng {X,Y}  LALT. Vì,

với từ w = aba A+ có hai phân tích luân phiên khác nhau theo {X,Y}:

w = (ab).(a) = (a).(ba)

Ví dụ 3.2.5. Cho X = {a, aa}, Y = {b, bb} LC, nhưng {X,Y}LALT. Ví dụ sau cho ta thấy rằng, XYLC nhưng {X,Y} LALT.

Ví dụ 3.2.6. Cho X = {a, aa}, Y = {b, ab}, dễ thấy XY = {ab, aab,

aaab} là mã prefix, suy ra XY  LC, nhưng {X,Y}  LALT. Vì, với từ w

= abaA+ có hai phân tích luân phiên khác nhau theo {X,Y} là:

- 45 -

Định nghĩa 3.2.7. Cho X, YA+. Cặp {X,Y} được gọi là mã luân phiên yếu trái (t.ứng, yếu phải) nếu không có từ nào trong A+ có hai phân tích luân phiên cùng kiểu trái (t.ứng, cùng kiểu phải) khác nhau theo {X,Y}.

Định nghĩa 3.2.8. Cho X, YA+. Cặp {X,Y} được gọi là mã luân phiên chẵn hay mã luân phiên cùng kiểu nếu không có từ nào trong A+ có hai phân tích luân phiên cùng kiểu khác nhau theo {X,Y}.

Từ Định nghĩa 3.2.7 và Định nghĩa 3.2.8 dễ thấy rằng, nếu cặp {X,Y} là mã luân phiên chẵn thì cặp {Y,X} cũng là mã luân phiên chẵn, và nếu cặp {X,Y} là mã luân phiên yếu trái (yếu phải) thì cặp {Y,X} là mã luân phiên yếu trái (yếu phải).

Ta ký hiệu LWLALT (t.ứng, LWRALT, LEALT) là lớp mã luân phiên yếu

trái (t.ứng, mã luân phiên yếu phải, mã luân phiên chẵn).

Ví dụ sau thể hiện tính phổ dụng của mã luân phiên, mã luân phiên chẵn đối với biểu diễn thông tin trong máy tính:

Ví dụ 3.2.9. (a) Với mỗi tệp nhị phân có thể biểu diễn như một xâu các bit 0, 1. Chẳng hạn:

w = 101011000011001101100001011101

Đặt X = {1}+, Y = {0}+, khi đó w là một phân tích luân phiên theo {X,Y}. Nếu ta bổ sung một bit 1 vào đầu w và một bit 0 vào cuối w thì xâu kết quả luôn là một xâu phân tích luân phiên theo {X,Y}. Cụ thể, với w ở trên, ta có

w = 11010110000110011011000010111010.

(b) Bộ mã Unicode là bộ mã chuẩn quốc tế được thiết kế để dùng làm bộ mã duy nhất cho tất cả các ngôn ngữ khác nhau trên thế giới. Mỗi chữ được mã hóa bởi 2 byte (x,y), trong đó byte x thể hiện mã chữ và byte y thể hiện mã trang - quốc gia. Như vậy, có thể xem các xâu thông tin được mã hóa bằng bộ mã Unicode là các xâu được biểu diễn theo mã

- 46 -

luân phiên chẵn {X,Y}, với X = Y = {0, 1}8 là tập các xâu 8 bít trên bảng chữ nhị phân.

Các ví dụ sau cho ta thấy, có {X,Y} LEALT nhưng {X,Y} LWLALT. Và có {X,Y} LWLALT nhưng {X,Y} LALT.

Ví dụ 3.2.10. Cho X = {ab, abba}, Y = {b}, dễ thấy {X,Y}  LEALT nhưng {X,Y}  LWLALT. Vì, với từ w = abbabA+ có hai phân tích luân phiên cùng kiểu trái khác nhau theo {X,Y} là:

w = (ab).(b).(ab) = (abba).(b)

Ví dụ 3.2.11. Cho X = {b}, Y = {ab, ba}, dễ thấy {X,Y}  LWLALT nhưng {X,Y}  LALT. Vì, với từ w = babA+ có hai phân tích luân phiên khác nhau theo {X,Y} là:

w = (b).(ab) = (ba).(b)

Trong Mục 1.2.1 Chương 1, ta đã xét tính chất mã trong quan hệ với phép đồng cấu (xem Mệnh đề 1.2.2, Hệ quả 1.2.4). Tiếp theo, ta sẽ thiết lập một kết quả tương tự cho mã luân phiên, mã luân phiên chẵn.

Cho bảng chữ A. Đặt B = A {e, f}, với e, f, (e f) là các chữ cái mới không thuộc A. Khi đó, ta định nghĩa đồng cấu xóa  : B* A* được cho bởi:

(1) (e) = (f) = . (2) (a) = a , aA.

Đặt S = {ewf , ewe , fwe , fwf | w A+}  B+. Trên S, ta định nghĩa một phép tích “.” : x = i1u j1, y = i2vj2B+,

với 0  B+ là phần tử zero mới, 1 là phần tử đơn vị mới của S^ = S

{1,0}. Dễ kiểm tra, S^ là một vị nhóm.

x . y =

i1uv j2 nếu j1 = i2

- 47 -

Cho X, YA+, ta xét UX,Y = {exf , fye | xX, yY }  S

VX,Y = <UX,Y> là vị nhóm con của S^ sinh bởi UX,Y, khi đó VX,Y = U+X,Y

Mệnh đề 3.2.12. {X,Y} LALT khi và chỉ khi |VX,Ylà đơn ánh.

Chứng minh. () Ta chứng minh {X,Y}  LALT thì |VX,Y là đơn ánh. Thật vậy, giả sử ngược lại |VX,Y không là đơn ánh. Khi đó ta có thể chọn hai phần tử khác nhau, chẳng hạn u = ex1fy1ex2fy2 ... v = f y1e x1

f y2e x2 ... và (u) = (v). Suy ra x1y1x2y2 ... = y1x1y2x2..., mâu thuẫn với giả thiết {X,Y}  LALT. Các trường hợp còn lại ta cũng suy ra được mâu thuẫn.

() Ta chứng minh |VX,Y là đơn ánh thì {X,Y}  LALT.

Thật vậy, giả sử ngược lại {X,Y}  LALT. Khi đó, tồn tại từ wA+

có hai phân tích luân phiên khác nhau theo {X,Y}. Chẳng hạn, xét trường hợp x1y1x2y2 . . . = y1x1y2x2 . . .

Xét hai từ u = e x1f y1e x2f y2 ... , v = f y1e x1f y2e x2... trong VX,Y .Ta có (u) = x1y1x2y2 ... = y1x1y2x2 ... = (v). Suy ra (u) = (v), mâu thuẫn với giả thiết |VX,Y là đơn ánh. Các trường hợp còn lại ta cũng suy

ra được mâu thuẫn. 

Mệnh đề 3.2.13. Cho A, B là hai bảng chữ rời nhau, khác rỗng và C =AB. Cho đồng cấu vị nhóm : C*  D*, D là bảng chữ hữu hạn,

đặt X=(A), Y=(B), XY = , U là tập tất cả các từ u C+, u có ít nhất một phân tích luân phiên theo {A,B}, và V U là tập tất cả các từ có dạng a1b1 ... anbn , n1, aiA, biB, i=1,...,n. Khi đó:

(i) |U là đơn ánh khi và chỉ khi {X,Y}LALT |C là đơn ánh.

(ii) |V là đơn ánh khi và chỉ khi {X,Y}LEALT |C là đơn ánh. Chứng minh. (i) |U là đơn ánh khi và chỉ khi {X,Y} LALT và |C là đơn ánh.

- 48 -

() Ta chứng minh, nếu |U là đơn ánh thì {X,Y} LALT và |C là đơn ánh. Thật vậy, giả sử ngược lại {X,Y}  LALT hoặc |C không là đơn ánh. Xét hai trường hợp sau:

+ Trường hợp 1: {X,Y}  LALT. Khi đó, tồn tại từ w C+ có hai phân tích luân phiên khác nhau theo {X,Y}. Chẳng hạn, như trường hợp sau:

w = x1y1 . . . xnyn = x1y1 . . . xmym (2.4) với m, n  1, xi, xj X, yi, yj Y, i = 1,...,n, j = 1,...,m. Không mất tính tổng quát, để xét hai phân tích khác nhau, ta có thể giả sử x1 x1. Xét các từ (ai) = xi, (bi) = yi, (aj) = xj, (bj) = yj, với ai,

aj A, bi, bj B, i = 1,...,n, j = 1,...,m. Từ hệ thức (2.4) và x1  x1, ta có: (a1)(b1) . . . (an)(bn) = (a1)(b1) . . . (am)(bm) và (a1) 

(a1).

Mặt khác,  là đồng cấu, suy ra:

(a1b1 ... anbn) = (a1b1 ... ambm) , a1 a1 (2.5) Do đó u = a1b1 ... anbn u = a1b1 ... ambm. Từ hệ thức (2.5), ta có (u) = (u), mâu thuẫn với giả thiết |U là đơn ánh.

Các trường hợp còn lại trong sự phân tích của w, chứng minh tương tự ta cũng suy ra được mâu thuẫn.

+ Trường hợp 2: |Ckhông là đơn ánh. Khi đó ta có thể chọn hai phần tử khác nhau u, vC sao cho (u) = (v). Theo giả thiết XY = , do đó u, v cùng thuộc A hoặc cùng thuộc B.

Xét trường hợp u = a1  v = a1, a1, a1  A. Từ (u) = (v), suy ra (a1b) = (a1b), với bB, mâu thuẫn với giả thiết |U là đơn ánh. Trường hợp u, vB ta cũng suy ra được mâu thuẫn.

() Ta chứng minh, nếu {X,Y} LALT và |Clà đơn ánh thì |U là đơn ánh.

- 49 -

Xét hai phân tích luân phiên của một từ theo {A,B}: c1c2 . . . cn =

c1c2 . . . cm, với m, n1, nếu ci A thì ci+1 B và nếu ci B thì ci+1A,

i= 1,...,n1. Và nếu cj A thì cj+1 B và nếu cjB thì cj+1A,

j= 1,...,m1.

Đặt u = c1c2 . . . cn , u = c1c2 . . . cm. Giả sử (u) = (u), suy ra (c1)(c2) . . . (cn) = (c1)(c2) . . . (cm) là hai phân tích luân phiên theo {X,Y}.

Theo giả thiết {X,Y}  LALT, suy ra m = n và (ui) = (ui),

i= 1,...,n. Mặt khác, |C là đơn ánh, suy ra ui = ui, i= 1,...,n hay u = u. (ii) |V là đơn ánh khi và chỉ khi {X,Y}LEALT |C là đơn ánh.

Chứng minh tương tự như trường hợp (i). 

2.3 Đặc trƣng của mã luân phiên

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 yếu trái (yếu phải), 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 yếu trái (yếu phải), mã luân phiên trong phần sau.

Định lý 2.3.1. Cho X, Y A+. Khi đó, {X,Y}  LEALT 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 LC.

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.

- 50 -

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 = XY  LC, khi đó tồn tại từ wZ+ có hai phân tích khác nhau trong Z: w = z1z2 . . . zn = z1z2 . . . 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 = XY

LC thì {X,Y} LEALT .

Giả sử (X,Y) có tích không nhập nhằng và Z = XY LC. Khi đó, từ

hệ thức x1y1x2y2 ... xnyn = x1y1x2y2 ... 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, i= 1,...,n ,suy ra xi = xi, yi = yi. Vì vậy, {X,Y} LEALT . 

Định lý 2.3.2. Cho X, Y A+. Khi đó, {X,Y} LWLALT khi và chỉ khi hai điều kiện sau được thỏa mãn:

(i) {X,Y} LEALT .

(ii) (XY)+X–1  (XY)+= .

Chứng minh. () Phản chứng, giả sử {X,Y}  LWLALT, nhưng {X,Y} 

LEALT hoặc (XY)+X–1  (XY)+. Xét hai trường hợp sau:

+ Trường hợp 1: {X,Y}  LEALT . Từ Định nghĩa 3.2.7 và Đinh nghĩa 3.2.8, dễ dàng suy ra mâu thuẫn.

+ Trường hợp 2: (XY)+X–1 (XY)+  , khi đó sẽ tồn tại xX,

u(XY)+X–1  (XY)+ sao cho u = z1z2 ... zn và ux = z1z2 ... znx = z1z2

... zm , zi,zj XYzi = xiyi , zj = xjyj, xi , xjX, yi, yj Y, i=1,...,n,

- 51 - . . . . z2 zn . . . . z2 z1 z1 zmu x w

Hình 3.2. Hai phân tích của w trong (XY)+(XY)+X–1.

Đặt w = u x (XY)+, ta có w = z1z2 ... zm. Mà u (XY)+ suy ra

u = x1y1 ... xnyn. Do đó w = x1y1 ... xnynx = x1y1 ... xmym. Suy ra, {X,Y}LWLALT, mâu thuẫn. Vì vậy, (XY)+X–1  (XY)+.

() Phản chứng, giả sử {X,Y}  LEALT và (XY)+X–1  (XY)+ = , nhưng {X,Y} LWLALT.

Khi đó, tồn tại từ wA+ có hai phân tích luân phiên cùng kiểu trái khác nhau theo {X,Y}: w = u1u2 ... un = u1u2 ... um, với u1 u1, m, n1, nếu uiX thì ui+1 Y và nếu uiY thì ui+1 X, i= 1,...,n1. Và nếu

uj X thì uj+1 Y và nếu ujY thì uj+1X, j= 1,...,m1.

w có hai phân tích luân phiên cùng kiểu trái khác nhau, do đó ta có hai trường hợp: u1, u1 X hoặc u1, u1 Y,

+ Trường hợp 1: u1, u1X. Xét tính chẵn lẻ của nm, ta có:

 Với nm đều chẵn (n= 2l, m= 2k). Khi đó ta có: w = x1y1x2y2 . . .

xlyl = x1y1x2y2 . . . xkyk, suy ra Z = XY LC hay {X,Y}LEALT, mâu thuẫn.

 Với nm đều lẻ (n= 2l+1, m= 2k+1). Khi đó ta có: w = x1y1x2y2 . . .

xl+1 = x1y1x2y2 ... xk+1. Nhân yY vào cuối hai phân tích của từ w, ta có: w = x1y1x2y2 ... xl+1y = x1y1x2y2 ... xk+1y, đây là hai phân tích khác nhau trong Z=XY. Do đó Z=XYLC hay {X,Y}  LEALT , mâu thuẫn.

 Với n chẵn và m lẻ (n= 2l, m= 2k+1). Khi đó ta có: w = x1y1x2y2 . . .

ylxl = x1y1x2y2 . . . xk+1. Đặt u = x1y1x2y2 . . . xkyk (XY)+, thì

w = u xk+1 (XY)+. Khi đó u (XY)+X–1, mâu thuẫn với (XY)+X–1 

- 52 -

 Với n lẻ và m chẵn (n= 2l+1, m= 2k). Khi đó ta có: w = x1y1x2y2 . . .

xl+1 = x1y1x2y2 . . . xkyk. Đặt u = x1y1x2y2 . . . xlyl (XY)+, thì

w = u xl+1(XY)+. Khi đó u (XY)+X–1, mâu thuẫn với (XY)+X–1 

(XY)+ = .

+ Trường hợp 2: u1, u1 Y. Lập luận tương tự như trên với vai trò của

Y thay cho X, ta đạt được sự mâu thuẫn. Vì vậy, {X,Y} LWLALT. 

Tương tự như Định lý 2.3.2 về hệ hai điều kiện cần và đủ để cặp {X,Y} là mã luân phiên yếu trái, ta có định lý sau:

Một phần của tài liệu THUẬT TOÁN mới KIỂM ĐỊNH và mã mở RỘNG (Trang 43)

Tải bản đầy đủ (PDF)

(63 trang)