Chuỗi vòng nhị phân đối xứng Phạm Lan Anh, Lê Ngọc Khang Tóm tắt: Chuỗi vòng k-phân là một đối tượng tổ hợp cơ bản được ứng dụng rộng rãi trong nhiều lĩnh vực như đại số Lie tự do, mã
Trang 1Chuỗi vòng nhị phân đối xứng
Phạm Lan Anh, Lê Ngọc Khang
Tóm tắt: Chuỗi vòng k-phân là một đối tượng
tổ hợp cơ bản được ứng dụng rộng rãi trong nhiều
lĩnh vực như đại số Lie tự do, mã hóa Gray, lý
thuyết thống kê hay trong sinh học phân tử Một
chuỗi vòng phân là một là một lớp các xâu
k-phân tương đương với nhau khi quay vòng chúng
Ví dụ chuỗi vòng tam phân 0123 là một lớp các
xâu tương đương sau: 0123, 3012, 2301, 1230
Chuỗi vòng phân đối xứng là một chuỗi vòng
k-phân mà khi ta đọc chuỗi đó từ trái qua phải hay
từ phải qua trái đều được chính chuỗi vòng ấy Ví
dụ 0011 là một chuỗi vòng nhị phân đối xứng vì
0011 và 1100 là hai chuỗi nhị phân tương đương
khi quay vòng Trong báo cáo này, chúng tôi đưa
ra một số tính chất về chuỗi vòng nhị phân đối
xứng và đề xuất thuật toán đệ quy sinh toàn bộ
các xâu nhị phân đối xứng cùng độ dài với thời
gian là hằng số theo phân tích khấu trừ
Từ khóa: CAT, chuỗi vòng, thuật toán sinh
I Giới thiệu
Có rất nhiều lý do để phát triển các thuật toán sinh
một dãy các đối tượng tổ hợp cơ bản Thứ nhất, các
thuật toán này thực sự hữu ích cho rất nhiều lĩnh vực
như kiểm thử phần mềm, phần cứng hay xác suất
thống kê Thứ hai, có được những thuật toán này sẽ
Công trình được thực hiện dưới sự hướng dẫn của
thầy Đỗ Phan Thuận, Bộ môn Khoa học máy tính,
Viện CNTT&TT, ĐH Bách Khoa Hà Nội
(email:dophanthuan@gmail.com)
Phạm Lan Anh, sinh viên lớp KSTN_CNTT_K54,
Viện Công nghệ thông tin và Truyền thông, trường
Đại học Bách Khoa Hà Nội ( e-mail:
lananh2734@gmail.com )
KSTN_CNTT_K54, Viện Công nghệ thông tin và
Truyền thông, trường Đại học Bách Khoa Hà Nội (
e-mail: khangngocless@gmail.com )
© Viện Công nghệ thông tin và Truyền thông,
trường Đại học Bách Khoa Hà Nội
giúp ta tìm được các định lý, tính chất toán học khác liên quan đến đối tượng nghiên cứu bằng cách thông gian tính của thuật toán phải tỉ lệ thuận với số lượng đối tượng được sinh ra Trong báo cáo này một thuật
toán được gọi là hiệu quả nếu như trung bình thuật
toán chỉ sử dụng số lượng hằng số các phép toán để sinh ra một đối tượng Ta gọi thuật toán đó là thuật toán thuật toán CAT (Constant Amortized Time), nghĩa là thuật toán có thời gian tính hằng số theo phân tích khấu trừ
Chuỗi vòng k-phân là một đối tượng tổ hợp cơ
bản được ứng dụng rộng rãi trong nhiều lĩnh vực như đại số Lie tự do [9], mã Gray [ ] hay trong lý thuyết thống kê, trong sinh học phân tử Các công trình nghiên cứu hiện biết đều tìm cách đếm số lượng chuỗi vòng và đề xuất các thuật toán CAT sinh chuỗi vòng Công thức hiện đếm số lượng chuỗi vòng cùng
độ dài có thể được tính toán nhờ định lý Burnside [1] Các thuật toán CAT sinh chuỗi vòng hiện biết đều dựa trên một định lý rất mạnh sử dụng chuỗi Lyndon như một chuỗi vòng tiền tố [3, ] Từ đó rất nhiều công trình đã phát triển các thuật toán sinh chuỗi vòng để sinh các chuỗi vòng đặc biệt như chuỗi
Unlabelled [ ], chuỗi Baraclet [ ], chuỗi vòng k-phân
với trình tự bị cấm hay sinh chuỗi vòng theo thứ tự
mã Gray [4,5,6,…]
Một chuỗi vòng có tính chất đối xứng qua một trục bất kỳ được gọi là chuỗi vòng đối xứng Chuỗi vòng đối xứng có ứng dụng quan trọng trong sinh học phân tử để nghiên cứu các chuỗi vòng ADN có tính chất đối xứng Theo tìm hiểu của chúng tôi, hiện nay vẫn chưa có công trình nào công bố về bài toán đếm
và bài toán sinh các chuỗi vòng đối xứng Trong báo cáo này, chúng tôi đưa ra và chứng minh một số định
lý, tính chất về chuỗi vòng nhị phân đối xứng có mật
độ cố định Từ đó chúng tôi đề xuất ra thuật toán sinh toàn bộ các chuỗi vòng nhị phân đối xứng cùng độ dài và chứng minh tính CAT hiệu quả của thuật toán
đề xuất
Trang 2II Định nghĩa
Định nghĩa 1: Một chuỗi vòng k-phân độ dài
là một xâu đại diện của một lớp các xâu k-phân tạo
nên từ các số nguyên dương có độ dài n
tương đương với nhau khi quay vòng chúng
Ví dụ 1: trong hệ tam phân (hệ
sau là tương đương: 0123, 3012, 2301, 1230 khi quay
vòng Ta có thể chọn một xâu đại diện bất kì trong
các xâu trên để làm chuỗi vòng tương ứng
Ví dụ 2: các chuỗi vòng nhị phân độ dài
4là:0000, 0001, 0011, 0101, 0111,1111 Ta có lớp
xâu: 0001, 0100, 0010,1000 cùng là những xâu nhị
phân độ dài 4, tuy nhiên 4 xâu trên là tương đương
khi quay vòng, chính vì vậy, ta chỉ có 1xâu đại diện
là 0001 trong bài toán liệt kê các chuỗi vòng nhị phân
độ dài 4
Hình 1.1.Các chuỗi vòng nhị phân độ dài 4
Từ đinh nghĩa ta dễ dàng suy ra bổ đề sau
Bổ đề 1: Bài toán liệt kê tất cả các chuỗi vòng
k-phân độ dài n cũng tương đương với bài toán liệt kê
các cách sắp xếp n số, các số được chọn trong khoảng
từ 0 tới k-1 trên một đường tròn
Với bài toán liệt kê các chuỗi vòng thì với mỗi
lớp xâu tương đương khi quay vòng, ta chỉ cần liệt kê
một xâu đại diện trong lớp ấy là được Thông thường
xâu đại diện là xâu có thứ tự từ điển nhỏ nhất.Tuy
nhiên, người ta có thể có rất nhiều cách chọn xâu đại
diện trong lớp xâu tương đương để làm chuỗi vòng,
tùy theo thuật toán sinh, vì vậy nếu gặp
xâu…… bất kì thì chưa thể kết luận nó là
chuỗi vòng Và nếu giả thiết đã cho ……là
chuỗi vòng thì không thể là chuỗi
vòng với mọi
Định nghĩa 2: Nếu A được gọi là một tập chuỗi
vòng độ dài n thì trong A không tồn tại 2 chuỗi khác
nhau …… và mà khi một chuỗi
quay đi một số nguyên lần ta được chuỗi còn lại
Bổ đề sau đây được suy ra trực tiếp từ định nghĩa 2 sẽ được sử dụng để chứng minh các định lý tính chất trong phần sau
Bổ đề 2: Xét một tập A các chuỗi vòng khác nhau
độ dài n có cùng tính chất (α) nào đó đảm bảo rằng mỗi chuỗi vòng trong A là đại diện của một lớp xâu
có duy nhất một phần tử Khi đó bài toán sinh chuỗi vòng có tính chất (α) tương đương với bài toán sinh các xâu có tính chất (α)
Ví dụ 3: Liệt kê các chuỗi vòng thỏa mãn
kê các xâu thỏa mãn
Định nghĩa 3: Mật độ chuỗi vòng:
Mật độ của chuỗi vòng là số các số khác 0 xác định trong chuỗi Ví dụ chuỗi 10012012 có mật độ là
5
Nhận xét 1: Mật độ của chuỗi vòng nhị phân đối
xứng là số các số 1 trong chuỗi
Nhận xét 2: Với các bài toán liệt kê chuỗi vòng,
ta chỉ cần liệt kê chuỗi vòng mật độ cố định d rồi cho
d chạy từ 1 tới độ dài chuỗi vòng sẽ được tất cả các chuỗi vòng cần sinh
Định nghĩa 4: Chuỗi vòng đối xứng là những
chuỗi vòng mà khi đọc chuỗi đó từ trái qua phải hay
từ phải qua trái ta đều được chính chuỗi vòng ấy
Ví dụ 4: a Chuỗi vòng nhị phân độ dài 4 khi đọc
từ phải qua trái là: 0011 Khi ta đọc từ phải qua trái là
1100 Tuy nhiên, theo định nghĩa thì chuỗi 1100 chính là chuỗi 0011 khi quay vòng nên 0011 là chuỗi vòng nhị phân đối xứng
b Chuỗi vòng tam phân độ dài 6 khi đọc từ trái qua phải là 001102
Khi ta đọc từ phải qua trái là 201100, chuỗi
201100 khi quay vòng khác với chuỗi 001102 nên
001102 không phải là chuỗi vòng nhị phân đối xứng
Nhận xét 3: Các tính chất của chuỗi vòng đối
xứng giống với tính chất của chuỗi vòng do chuỗi vòng đối xứng là một trường hợp đặc biệt của chuỗi vòng
Bài toán đề xuất: Sinh toàn bộ các chuỗi vòng
nhị phân đối xứng
Nhận xét 4: Dựa vào nhận xét 3 ta có thể chuyển
về bài toán sinh chuỗi vòng nhị phân đối xứng mật độ
d cố định Từ đó phát triển thành bài toán sinh toàn
bộ chuỗi vòng nhị phân đối xứng
Trang 3III Các định lý và tính chất liên quan tới
chuỗi vòng đối xứng
Định lý 1: Bài toán sinh các chuỗi nhị phân đối
xứng mật độ cố định tương đương với bài toán sắp
xếp số 1 và n - d số 0 trên một đường tròn sao cho
đường tròn này tồn tại ít nhất 1 trục đối xứng
Định lý 2: Sinh một chuỗi vòng nhị phân đối
xứng mật độ d cố định …… tương đương với
việc sinh một chuỗi vòng đối xứng thỏa
mãn điều kiện: với mọi 0< i≤ d và
+
Chứng minh:
Phần thuận:
Xét một chuỗi vòng nhị phân đối xứng mật độ d
hay chính là xét một cách xếp d số 1 và n-d số 0 trên
một đường tròn sao cho đường tròn này tồn tại ít nhất
1 trục đối xứng.(theo định lý 1)
Gọi là khoảng cách giữa số thứ và số
thứ trên đường tròn.(với điều kiện số
thứ chính là số 1 thứ nhất) với
Trên vòng tròn có số nên có khoảng cách hay
khoảng cách giữa các số 1 là Từ đó ta có:
+
Do đường tròn này có ít nhất 1 trục đối xứng nên
các số 1 đối xứng qua trục này suy ra khoảng cách
giữa các số 1 cũng đối xứng qua trục này, vì vậy
cũng là một chuỗi vòng đối xứng
Phần đảo: Chứng minh tương tự
Định lý 3: Không tồn tại 2 xâu khác nhau có
…. ! mà chúng cùng là biểu diễn của
một chuỗi vòng đối xứng α độ dài n (dễ thấy n phải
lẻ)
Nói cách khác không tồn tại chuỗi
…. mà sau khi quay nó đi 1 số vị
trí nhất định thì được chuỗi …. !
Chứng minh: Giả sử tồn tại 2 xâu khác nhau có
! mà chúng cùng là biểu diễn
của một chuỗi vòng đối xứng α Dễ thấy ! và
chuỗi vòng đối xứng α khi biểu diễn trên đường tròn
phải có ít nhất 2 trục đối xứng Gọi 2 trục đối xứng
gần nhất cách nhau 1 khoảng m Có thể nói xâu
…. ! có thể sinh ra được từ xâu
…. sau khi quay đi m vị trí
Quy ước : Đánh tọa độ các điểm trên vòng tròn
độ dài n (vòng tròn được chia đều bởi n điểm) bắt đầu
từ 0 theo chiều ngược chiều kim đồng hồ (tọa độ
" và" chỉ cùng 1 điểm với mọi "nguyên)
Bổ đề : Cho vòng tròn độ dài Cho # , viết lên vòng tròn số x ở tất cả các tọa $ộ% % # %
&'()*# +thì khi đó số, sẽ được viết tại tất
cả các điểm có tọa độ % "*"nguyên) Do đó đường tròn sẽ được chia thành
đoạn bằng nhau có
độ dài
Đánh toạ độ 0 tại điểm thuộc 1 trục đối xứng.Khi
đó 1 điểm A có tọa độ x thì điểm có tọa độ , và
, # , #cũng scó giá trị A.( do tính chất đối xứng qua trục đi qua điểm có tọa độ 0 và m) Xét 1 điểm K có tọa độ # => có 1 điểm K có tọa độ# => Các điểm K có tọa độ # -#( - nguyên , khoảng cách giữa 2 số K liên tiếp là 2m) .Gọi &'()*# + => &'()*# +( do
lẻ) Áp dụng bổ đề ta có các điểm có tọa độ ./# -( - nguyên) đều là K Như vậy xét các điểm "này chia đường tròn thành đoạn ( số lẻ đoạn ) mỗi đoạn có độ dài
Xét 1 điểm C có tọa độ , bất kì ( , ) Tương tự ta có , - (- nguyên) đều là điểm C ( như vậy điểm C có mặt ở cả đoạn ở cùng vị trí tương đối trên đoạn đó) Vì vậy, tất cả các chuỗi trên các đoạn có độ dài d là như nhau
Do đối xứng nên tọa độ,cững là điểm C
=> , - đều là điểm C Như vậy trên mỗi đoạn thẳng đều có 1 điểm C khác ở vị trí đối xứng với điểm trước đó trên mỗi đoạn thẳng Vậy các chuỗi trên các đoạn có độ dài d là các chuỗi đối xứng
Suy ra α có dạng 0 00 0 0 0 Kể cả khi ta xoay chuỗi thẳng này đi m (m chia hết cho d) vị trí nhau thì ta vẫn được chính chuỗi đó Vậy giả sử là vô lý
=> đpcm
Định lý 4: Không tồn tại 2 chuỗi thẳng khác nhau
có dạng …. và
Trang 4…. ! ! mà chúng cùng là biểu diễn
của một chuỗi vòng đối xứng.(y và ! !)
Chứng minh: Tương tự Định lý 3
Dựa vào định lý 3 và 4 và định nghĩa 3 ta nhận
thấy việc sinh chuỗi vòng đối xứng có dạng
…. (hoặc …. +
tương đương với việc sinh các xâu có dạng
…. (hoặc …. )
Định lý 5: a Nếu lẻ, tập các chuỗi vòng đối
xứng chính là tập các xâu có dạng
….
Ta gọi các xâu….1 (trong đó ….1 là
xâu không đối xứng và xâu ….1 khác xâu
1 ) là các xâu không đối xứng và không lật
b Nếu chẵn, tập các chuỗi vòng đối
xứng được chia làm các tập sau:
Tập các xâu có dạng ….
(y +
…. (trong đó
…. là xâu không đối xứng và không lật)
Tập các xâu có dạng ….
(trong đó …. là xâu không đối xứng và không
lật)
…. …. (trong đó
…. là một chuỗi vòng đối xứng)
Chứng minh:
+ Nếu lẻ, theo định lý 3 có điều phải chứng minh
+ Nếu chẵn, dễ thấy chuỗi vòng đối xứng sẽ chỉ có
1 trong 3 dạng :
Dạng 1: …. (y + (do chuỗi
vòng đối xứng nên luôn có thể quay được về dạng
+
Dạng 2: ….
Dạng 3: ….
Trong đó các chuỗi vòng dạng 1 là độc lập hoàn
toàn, không trùng với chuỗi dạng 2 và 3, mặt khác
theo định lý 4, khi sinh một chuỗi vòng dạng 1 chính
là sinh một xâu dạng 1
Các chuỗi vòng dạng 2 thì vẫn thể có dạng 3 và
ngược lại
Xét các chuỗi dạng 2 và dạng 3; ta chia các chuỗi này
ra thành 3 dạng:
-Dạng 2.1: Các chuỗi vòng dạng
…. (D1)(trong đó
…. là xâu không đối xứng và không lật) -Dạng 2.2: Tập các chuỗi vòng có dạng
…. (D2)(trong đó …. là xâu không đối xứng và không lật)
Dễ chứng minh không tồn tại 2 xâu dạng D1(hoặc dạng D2) mà khi quay đi cùng là 1 chuỗi vòng nên tập này tương đương với các xâu dạng D1(hoặc dạng D2)
-Dạng 2.3: là tập các chuỗi vòng dạng
…. + , trong đó
…. (hoặc …. + là xâu đối xứng
Để tránh bị lặp lại thì (hoặc
…. + phải là các chuỗi vòng đối xứng Vậy tập này tương đương với tập các chuỗi vòng dạng …. *22+(trong
đó …. là một chuỗi vòng đối xứng).Mà không tồn tại 2 chuỗi vòng dạng(**) nên tập này tương đương với tập xâu dạng (**)
IV Thuật toán sinh chuỗi vòng nhị phân đối xứng
1 Thuật toán sinh sinh các xâu dạng :
…. sao cho
2 * …. ++y =n, 3 " Dùng mảng để ghi nhớ các phần tử sinh được trong dãy và mảng 4 để nhớ tổng các phần tử đã sinh Chúng ta thừa nhận 45 và lời gọi ban đầu Gen1(1,n,d)
Procedure Gen1(i,n,d: interger);
local j: integer;
Begin
if 6 then for j{1,2,….,7189:
} do ;< ;<
4 47 ; 3 <
Gen1(i+1,n,d);
endfor;
endif;
else
Trang 547<
if duaketqua();
endelse;
End;
2 Thuật toán sinh các xâu có dạng
…. ( ) sao cho
2 * ++ , 3 "
Dùng mảng để ghi nhớ các phần tử sinh được
trong dãy và mảng 4để nhớ tổng các phần tử đã sinh
Chúng ta thừa nhận 45 và lời gọi ban đầu
Gen2( )
Procedure Gen2(i,n,d: interger);
local j,= ": interger;
Begin
if 6 then
for j{1,2,….,7189:
} do
;< 7 ;<
4 47 ; 3 <
Gen2(i+1,n,d);
endfor;
endif;
else
if 47> then
= 7189:
<
for " = do
"< = "<
if ? duaketqua();
endfor;
endelse;
End;
3 Thuật toán sinh xâu dạng ….(trong
đó ….là xâu không đối xứng và không lật và
* ….+ 0 (c cho trước)
Dùng mảng để ghi nhớ các phần tử sinh được
trong dãy và mảng 4 để nhớ tổng các phần tử đã sinh,
dùng mảng 0@A0" để lưu xem thời điểm sinh hiện tại
chuỗi là đối xứng hay không Chúng ta thừa nhận
45 0@A0"5 và lời gọi ban đầu Gen3(1,c,n)
Procedure Gen3(i,c,n: interger);
local j,l:interger;
Begin
if * B+ then for ; 0 47 do begin
;< 4 47 ;<
Gen3(i+1,c,n);
end; end;
else begin
if then 0 47<
if 0@A0"7?
then duaketqua();
if 0@A0"7 CC
then duaketqua();
end;
else begin (nếu ? +
if 0@A0"7 then for
0 47 do begin
<4 47 "<
if ? then
0@A0" 0@A0"7 <
if then 0 4;
if0@A0"7?
then duaketqua();
if 0@A0"7
CC then duaketqua();
endif;
else begin (nếu
i? +
Gen3(i+1,c,n);
endelse ;endif;
endfor;
else begin (nếu check? +
for 47 do begin
"< 4 47 "<
if then
0 47 ; duaketqua();
endif; else
Gen3(i+1,c,n); endfor;endelse;endelse;endelse; End;
Trang 6Dựa vào định lý 5 ta có thuật toán
sinh chuỗi vòng nhị phân đối xứng
Procedure GEN(n,d: interger);
local l:interger;
Begin
if B then Gen1(1,n,d);
else begin
Gen2(1,n,d);
if B then
- Gen3(1,
+ được chuỗi
…. ( 3 *" + +
Inchuoi
…. ;
for D E do begin
Gen3(1,
, ); được chuỗi
…. ;
Inchuoi …. ;
endfor;
+< được chuỗi
…. ;
Inchuoi
…. …. ;
endif;
endelse;
End;
Chứng minh thuật toán hiệu quả
Phần này chúng tôi chứng minh ngắn gọn thuật
toán đề xuất trên là thuật toán có thời gian tính khấu
trừ là hằng số (CAT) Các hàm của thuật toán sinh
chuỗi vòng đối xứng trên đều dựa vào bài toán cơ bản
trong lý thuyết tổ hợp sau: Liệt kê các cách phân tích
n thành tổng các số nguyên dương ,,…,
Thuật toán sinh sau đây giải quyết bài toán cơ
bản này được biết đến như một thuật toán CAT
Procedure Phantich(i);
local j: integer;
Begin
if " then
for j{1,2,…., 47 } do begin
;<
4 47 ;<
Phantich(i+1);
endfor; endif;
else begin
47<
if duaketqua();
endelse;
End;
Nhận thấy: Thuật toán Gen1 được viết dựa trên việc sinh các chuỗi F 4<
4<
Thuật toán Gen2 được viết dựa trên sinh các chuỗi
F 4< 4<
Thuật toán Gen3 được viết dựa trên sinh các chuỗi
F 0 và đưa thêm mảng check để
kiểm tra xem chuỗi có thỏa mãn hay không
Vì vậy thuật toán Gen1, Gen2, Gen3 dựa trên bài toán cơ bản trên nên thuật toán Gen1,Gen2,Gen3 là CAT
Từ đó suy ra GEN là CAT suy ra điều phải chứng minh
V Kết luận và hướng phát triển
Qua công trình này chúng tôi đã xây dựng được một thuật toán CAT hiệu quả để sinh toàn bộ các chuỗi vòng nhị phân đối xứng cùng độ dài Điều này cũng có nghĩa là ta có thể đếm chính xác số lượng chuỗi vòng này bằng thuật toán sinh Tuy nhiên do thời gian hạn chế, chúng tôi chưa kịp xây dựng công thức đệ quy hay công thức hiện cho chúng Trong thời gian tới chúng tôi sẽ hoàn thiện công thức đếm
và mở rộng kết quả cho chuỗi vòng k-phân đối xứng
Báo cáo sẽ được hoàn thiện và gửi vào tạp chí chuyên ngành giải thuật và tổ hợp
VI Lời tri ân
Chúng tôi gửi lời cám ơn sâu sắc tới PGS TS Nguyễn Đức Nghĩa người đã gợi mở cho chúng tôi
đề tài này và TS Đỗ Phan Thuận - người đã giúp đỡ chúng tôi rất nhiều trong quá trình thực hiện đề tài Tài liệu tham khảo
[1] R Lyndon, On Burnside problem I, Trans American Math Soc 77 (1954) 202–215
[2] T M Y WANG and C D SAVEGE, A Gray code for necklaces of fixed density, SIAM J Discrete Math., 9 (1996), pp 654-673
[3] F RUSKEY, C D SAVEGE, and
T M Y WANG,Generating
[4] Gray-ordered Binary Necklaces Christopher Degnil
Trang 7[5] A Gray code for fixed-density necklaces and
Lyndon words in Constant amortized time J Sawada
A Williams
[6] Gray codes for necklaces and Lyndon words
ofarbitrary base Mark Weston
...Chứng minh thuật toán hiệu
Phần chúng tơi chứng minh ngắn gọn thuật
tốn đề xuất thuật tốn có thời gian tính khấu
trừ số (CAT) Các hàm thuật tốn sinh
chuỗi... tổng số nguyên dương ,,…,
Thuật toán sinh sau giải toán
bản biết đến thuật toán CAT
Procedure Phantich(i);
local j: integer;...
kiểm tra xem chuỗi có thỏa mãn hay khơng
Vì thuật tốn Gen1, Gen2, Gen3 dựa toán nên thuật toán Gen1,Gen2,Gen3 CAT
Từ suy GEN CAT suy điều phải chứng minh
V Kết luận hướng