Các từ Grand Dyck

Một phần của tài liệu Phương pháp sinh toàn bộ một số đối tượng tổ hợp (Trang 39)

Các từ Grand Dyck chính là một song ánh của các từ Dyck 2- màu. Trên lưới ô vuông, bước(1,−1)gọi là bước đi xuống, bước(1,1)gọi là bước đi lên. Cách xây dựng các từ Grand Dyck theo quy luật kế tiếp như sau:

Định lý 3.4. Cho từ Grand Dyck α∈GD(2n), ta xây dựng các từβ ∈GD(2n+ 2)theo quy luật đường chạy cuối cùng:

- Nếu đường chạy cuối cùng của α là một bước đi xuống thì ta thêm một cặp bước vào một vị trí đầu tiên trên đường đi xuống cuối cùng của α hoặc vị trí cuối cùng củaα. Hoặc đảoα sau thêm một cặp bước vào tại vị trí đầu tiên của đường đi xuống trên đường chạy cuối cùng của α. Trong trường hợp nếu k là số điểm trên đường chạy cuối cùng đi xuống của α

thì có2ktừ β được sinh ra.

- Ngược lại, ta có thể chèn một cặp bước vào vị trí cuối cùng trên đường chạy cuối cùng củaα.

Ta có quy luật đường chạy cuối cùng cho các từ Grand Dyck: 

(2)

(2k) (2)k(4)(6). . .(2k)(2k+ 2) Ví dụ 3.4. Sinh các từ Grand Dyck trong các trường hợp sau:

(a) Cho từ α=aabbbbabaa∈D(10), theo quy luật xây dựng trên cho các từ Grand Dyck

β∈(12) được sinh ra:

β =aabbbbabaaab và β=aabbbbabaaba.

(b) Cho từ α=bbabaaaabb∈D(10), như vậyα có 3 điểm nằm trên đường đi xuống cuối cùng do đó ta thu được 6 từbeta∈D(12) theo quy luật trên:

Thêm cặp bước abvào điểm đầu tiên trên đường chạy cuối cùng của α:

β =bbabaaaaabbb.

Thêm cặp bước bavào điểm đầu tiên trên đường chạy cuối cùng của α:

β=bbabaaaababb.

Thêm cặp bước abvào điểm cuối trên đường chạy cuối cùng của α:

β=bbabaaaabbab.

Thêm cặp bước bavào điểm cuối trên đường chạy cuối cùng của α:

β =bbabaaaabbba.

Thêm cặp bước bavào điểm đầu tiên trên đường chạy cuối cùng của α:

β=aababbbbbaaa.

Thêm cặp bước abvào điểm đầu tiên trên đường chạy cuối cùng của α:

β=aababbbbabaa. 3.2.4. Các từ Dyck k - phân

Định lý 3.5. Cho α ∈D(k, kn) là một từ Dyck k - phân vàα = σabp, σ ∈ {a, b}∗. Khi đó

Hình 3.4 : Minh họa sinh các từ Grand Dyck (a) Đường chạy cuối cùng là đường đi lên (b) Đường chạy cuối cùng là đường đi xuống đường chạy cuối cùng của β làp−`+k−1 .

Chú ý 3.4.

(1) Nếuα∈D(k, kn) vàplà độ dài của đường chạy cuối cùng của αthì αcó p+ 1 từ kế tiếp có độ dàikn+k theo cách xây dựng ở trên.

(2) Từ abk−1 ∈D(k, k) có k từ kế tiếp. Vậy, theo cách xây dựng trên cho các từ Dyck k

- phân đưa ra quy luật kế tiếp sau:

 

(k)

(p) (k)(k+ 1). . .(p+k−1)

Ví dụ 3.5. Nếu α=ababbb∈D(3,6)thì theo quy luật trên ta thu được các từ Dyckk - phân

β∈D(3,9)như sau:

β=abaabbbbb với `= 0

β=abababbbb với `= 1

β=ababbabbb với `= 2

β=ababbbabb với `= 3

3.2.5. Các từ Dyck k - phân m - màu

Định lý 3.6. Cho từ α∈ D(k, m, kn) là một từ Dyck k - phân m - màu trên bảng chữ cái

T. Ta luôn cój ∈ {1, ..., m}, p >0 và σ∈T∗ sao cho

Hình 3.5 : Bốn từ kế tiếp của từ Dyck 3 - phân α = ababbb ∈ D(3,6): abaabbbbb, abababbbb, ababbabbb, ababbbabb. Các ký tự được chèn vào là những đường chấm.

Với các ký hiệu trên, mỗi từ β được định nghĩa dưới đây là một từ Dyck k - phân m - màu có độ dài(kn+k) trên bẳng chữ cái T:

(1)β =αaibk

i, i∈ {1, ..., m} \ {j}, độ dài đường chạy cuối cùng của β làk. (2) β = σajb`jajbjp+k−1−`, với 0 ≤ ` ≤ p, độ dài đường chạy cuối cùng của β là

p+k−1−`. Chú ý 3.5.

(1) Theo cách xây dựng trên, nếu α∈ D(k, m, kn) và p là độ dài đường chạy cuối cùng củaα thìα có p+m từ kế tiếp thuộcD(k, m, kn+k).

(2) Từδ ∈D(k, m,0)có mtừ kế tiếp thuộcD(k, m, k). Từ đó, ta có thể đưa ra quy luật kế tiếp:    (m) (p) (k+m−1)m(k+m)(k+m+ 1). . .(p+k−1)

Ví dụ 3.6. Nếu α = a1b1b1a2b2b2 ∈ D(3,2,6) thì theo cách xây dựng trên ta thu được

β∈D(3,2,9) gồm:

β=a1b1b1a2a2b2b2b2b2 với `= 0

β=a1b1b1a2b2a2b2b2b2 với `= 1

β=a1b1b1a2b2b2a2b2b2 với `= 2

Hình 3.6 : Bốn từ kế tiếpβcủa từ Dyck 3 - phân 2 -màuα=a1b1b1a2b2b2 ∈D(3,2,6)có độ dài 9: a1b1b1a2a2b2b2b2b2, a1b1b1a2b2a2b2b2b2, a1b1b1a2b2b2a2b2b2, a1b1b1a2b2b2a1b1b1 3.2.6. Các từ Motzkin

Với các lớp từ còn lại ta xét chúng trên tập {a, b,0}.

Lớp từ Motzkin có hai quy luật tăng trưởng đều dựa trên đường chạy cuối cùng:

Định lý 3.7. Quy luật tăng trưởng đầu tiên

Quy luật tăng trưởng này được đưa ra bởi Barcucci et al:

Cho α ∈ M(n) là một từ Motzkin và α =σaτ, σ ∈ {a, b,0}∗, τ ∈ {b,0}∗;τ được gọi là đường chạy cuối cùng của α. Thì với mỗi từ β được định nghĩa dưới đây là một từ Motzkin có độ dài n+ 1 :

(1) Nếu τ chứa ít nhất một kí tự 0, τ0, τ00 là một phần trong cách phân tích của τ:

τ =τ00τ00. Trong trường hợp nàyβ =σaτ0aτ00b, đường chạy cuối cùng của β là τ00b. (2) β=σaτ0, đường chạy cuối cùng của β là τ0 .

Chú ý 3.6.

(1) Nếuα∈M(n) cóp chữ số0trên đường chạy cuối cùng thì αcó p+ 1từ kế tiếp theo cách xây dựng trên.

(2) Từ Motzkin rỗngδ ∈M(0)chỉ có một từ kế tiếp, từ Motzkin 0∈M(1) có hai từ kế tiếp. Do đó, theo cách xây dựng trên ta có quy luật kế tiếp cho các từ Motzkin:

 

(1)

Ví dụ 3.7. Cho α =aa0baa0bb0b ∈M(11), theo cách xây dựng cho các từ Motzkin kế tiếp trên α có 2 chữ số 0 trên đường chạy cuối cùng do đó α có 3 từ kế tiếp β ∈M(12) bao gồm các từ sau:

β=aa0baaabb0bb với σ=aa0ba, τ = 0bb0b, τ0=∅, τ00=bb0b.

β=aa0baa0bbabb với σ=aa0ba, τ = 0bb0b, τ0= 0bb, τ00=b.

β=aa0baa0bb0b0 vớiσ =aa0ba, τ = 0bb0b.

Hình 3.7 : Ba từ Motzkin được sinh ra theo quy luật kế tiếp trên của từ α = aa0baa0bb0b ∈M(11): aa0baaabb0bb,aa0baa0bbabb, aa0baa0bb0b0 ∈M(12).

Định lý 3.8. Quy luật tăng trưởng thứ hai

Cho α ∈ M(n) là một từ Motzkin và α =σtbp, σ ∈ {a, b,0}∗, t =a hoặc t = 0. Thì với mỗi từβ=σtb`abp−`+1 là một từ Motzkin có độ dàin+ 2vàβ =σtb`0bp−` là một từ Motzkin có độ dài n+ 1, với mọi ` thỏa mãn 0≤`≤p.

Chú ý 3.7.

(1) Nếu α∈M(n)có độ dài đường chạy cuối cùng làpthì theo quy luật tăng trưởng thứ hai cho các từ Motzkin,α có p+ 1từ kế tiếp có độ dài (n+ 2) và có p+ 1từ kế tiếp có độ dài(n+ 1).

(2) Với từ Motzkin rỗng λ∈M(0) có hai từ kế tiếp. Do đó, theo cách xây dựng trên ta có thể đưa ra quy luật kế tiếp cho các từ Motzkin như sau:

         (2) (2k) 1 (2)(4). . .(2k) 2 (4)(6). . .(2k+ 2)

Ví dụ 3.8. Cho α = aa0b0b ∈ M(6), theo cách xây dựng cho các từ Motzkin kế tiếp trên

p= 1 do đó α có 2 từ kế tiếp β∈M(7) và 2 từ kế tiếp β ∈M(8) bao gồm các từ sau:

β=aa0b0abb với`= 0, t= 0.

β=aa0b0bab với`= 1, t= 0.

β=aa0b00b với `= 0, t= 0.

β=aa0b0b0 với `= 1, t= 0.

Hình 3.8 : Bốn từ kế tiếp của từ Motzkin α =aa0b0b ∈M(6) : aa0b0abb, aa0b0bab ∈ M(8), aa0b00b,aa0b0b0∈M(7). Các kí tự được chèn vào đánh dấu chấm chấm.

3.3. Các từ Grand Motzkin

Các từ Grand Motzkin có độ dàin được ký hiệuGM(n).

Định lý 3.9. Cho α ∈ GM(n) là một từ Grand Motzkin và α = σtxp và σ ∈ {a, b,0}∗;

x∈ {a, b}; t∈ {a, b,0} với t6=x thì với mọi `,0≤`≤(p+ 1):

• β =σtx`0xp−` là một từ Grand Motzkin có độ dài là n+ 1, đường chạy cuối cùng của

• β = σtx`yxp−`+1 là một từ Grand Motzkin có độ dài là n+ 2, với y ∈ {a, b}, y 6= x

đường chạy cuối cùng của β làp−`+ 1. Chú ý 3.8.

(1) Nếu α∈GM(n) có độ dài đường chạy cuối cùng làp, theo cách xây dựng trên thìα

có p+ 1từ kế tiếp có độ dài(n+ 1)và α cóp+ 2từ kế tiếp có độ dài (n+ 2).

(2) Với từ rỗng δ ∈ GM(0) có 3 từ kế tiếp. Vì vậy, theo cách xây dựng trên ta có quy luật kế tiếp:          (1) (2k+ 1) 1 (3)(5). . .(2k+ 1) 2 (5)(5)(7). . .(2k+ 3)

Ví dụ 3.9. Cho α =abab∈GM(4), theo quy luật kế tiếp cho các từ Grand Motzkin trên ta cóp= 1 do đó α cóp+ 1 = 2 từ kế tiếpβ ∈M(5)và p+ 2 = 3từ kế tiếpβ ∈M(6) bao gồm các từ sau: β=aba0b với `= 0. β=abab0 với `= 1. β=abaabb với `= 0. β=ababab với `= 1. β=ababba với `= 2. 3.4. Các từ Schr¨oder Định lý 3.10. Cho α∈S(n) là một từ Schr¨oder và α=σtbp, σ∈ {a, b,0}∗, t=a, t= 0thì

β =σtb`abp−`+1 hoặc β =σtb`00bp−` là từ Schr¨oder có độ dài (n+ 2) với mọi ` thỏa mãn 0≤`≤p.

Chú ý 3.9.

(1) Nếuα∈S(n)là một từ Schr¨oder có độ dài đường chạy cuối cùng làpthìαcó2(p+ 1)

từ kế tiếp có độ dàin+ 2.

(2) Từ rỗng δ ∈ S(0) có hai từ kế tiếp. Vậy theo cách xây dựng trên ta có quy luật kế tiếp cho các từ Schr¨oder:

 

(2)

Hình 3.9 : Năm từ kế tiếp của từ Grand Motzkin α = abab ∈ GM(4): aba0b , abab0,abaabb, ababab,ababba

Ví dụ 3.10. Nếu từ α=aab00b∈S(6) thì ta thu được các từ β∈S(8)là các từ kế tiếp của

α theo quy luật trên: t= 0, p= 1

β=aab00abb với`= 0.

β=aab00bab với`= 1.

β=aab0000bvới `= 0.

β=aab00b00 với `= 1.

3.5. Các từ Grand Schr¨oder

Định lý 3.11. Cho α ∈ GS(n) là một từ Grand Schr¨oder có độ dài là n và α = σtxp với mọiσ ∈ {a, b,0}∗, x∈ {a, b}, t∈ {a, b,0}, t6=x thì mọi 0≤`≤(p+ 1) ta có:

• β=σtx`00xp−` là một từ Grand Schr¨oder có độ dài(n+ 2), độ dài đường chạy cuối cùng củaβ là p−`.

• β =σtx`yxp−`+1 là một từ Grand Schr¨oder có độ dài (n+ 2), y ∈ {a, b}, y 6=x, độ dài đường chạy cuối cùng củaβ là p−`+ 1.

Chú ý 3.10.

(1) Theo cách xây dựng trên, nếuα∈GS(n)có độ dài của đường chạy cuối cùng làpthì

Hình 3.10 : Bốn từ kế tiếp của từ Schr¨oder α = aab00b ∈ S(6) : aab00abb, aab00bab, aab0000b, aab00b00∈S(8). Các kí tự được chèn vào đánh dấu chấm chấm.

(2) Từ rỗng δ∈GS(0)có 3 từ kế tiếp. Vì vậy theo cách xây dựng trên ta có quy luật kế tiếp sau:    (3) (2k+ 1) (3)(5)(5)(5)(7)(7). . .(2k+ 1)(2k+ 1)(2k+ 3)

Ví dụ 3.11. Nếu từα =ab00ab∈GS(6)thì ta thu được các từ β∈GS(8) là các từ kế tiếp củaα theo quy luật trên:t= 0, p= 1.

β=ab00a00bvới `= 0. β=ab00ab00 với `= 1. β=ab00aabb với`= 0. β=ab00abab với`= 1. β=ab00abba với`= 2. 3.6. Các từ nhị phân mật độ cố định

Ngoài các lớp từ trên, các từ nhị phân mật độ cố định cũng được sinh ra theo cùng một quy luật. Mật độ của một từ α ∈ {a, b}∗ được ký hiệu là |a, b|b. Ta ký hiệu C(k, n) là tập hợp các từ độ dàintrên tập hợp {a, b}với trọng số k. Các từ thuộc C(k, n) là một đại diện phổ biến của các tổ hợp. Vậy cách xây dựng các từ kế tiếp cho C(n, k) như sau:

Định lý 3.12. Cho α ∈ C(k, n) với α =σbp, σ∈ {a, b}∗, p≥0 thì β =σb`abp−` là một từ có độ dài n+ 1 ký hiệu C(k+ 1, n+ 1) với mọi0≤`≤p, độ dài đường chạy cuối cùng của

β làp−`. Chú ý 3.11.

(1) Nếu α∈C(k, n) có độ dài đường chạy cuối cùng làp thìα có (p+ 1) từ kế tiếp theo cách xây dựng trên.

(2) Từ bk∈C(k, k) có (k+ 1)từ kế tiếp. Vậy quy luật kế tiếp cho lớp từ này:

 

(k+ 1)

(p) (1)(2)...(p)

Ví dụ 3.12. Nếu từ α =bbb ∈ C(3,3) thì ta thu được các từ β ∈C(4,4) là các từ kế tiếp củaα theo quy luật trên:

β=abbb với `= 0.

β=babb với `= 1.

β=bbab với `= 2.

Chương 4

Giả mã và phân tích độ phức tạp các thuật toán sinh

4.1. Giải thuật chung cho một số lớp từ tổ hợp

Giải thuật chung cho một số từ tổ hợp dựa trên phương pháp đường chạy cuối cùng. Chương trình chính gọi genword(0). Biến nb và các hàm γ, χ dựa vào từng loại từ, hàm

γ(j) trả về một ký tự chèn vào vị trí đang xét, còn hàm χ(j) trả về độ dài của từ nối dài thêm. Từ được khởi tạo bằng một danh sáchn ký tự 0b0 (để tránh mỗi lần chèn ký tự 0b0), khi đónlà độ dài của từ được sinh ra. Thông thường, ta chỉ chèn một ký tự vào vị trí đang xem xét trên đường chạy cuối cùng.

Giải thuật sinh từ như sau:

Giải thuật 4.1.

procedure Genword(size) local i, j, k, c if size=n then output word else for i∈lastrun do for j= 1 to nb do c=γ(j) k=χ(j) word[i] =c Genword(size+k) word[i] := ’b’ end for

end for end if

end procedure

Với giải thuật sinh trên, khi kích thước của từ bằng nthì một từ mới có độ dài n được sinh ra, ngược lại nếu kích thước của từ chưa bằngnthì tiếp tục tìm bit tiếp theo của từ.Từ giải thuật chung này, ta đưa ra các giải thuật riêng cho từng lớp từ.

4.2. Giải thuật sinh cho các lớp từ

4.2.1. Giải thuật sinh cho lớp từ Dyck

Vấn đề sinh các từ Dyck có thể được mô tả giả mã như sau:

Giải thuật 4.2.

procedure Gen_Dyck(size) local i if size=n then Print(D) else D[size+ 2] := ’b’ i:=size+ 1 repeat D[i] := ’a’

Gen_Dyck(size+ 2)

D[i] := ’b’

i:=i−1 untilD[i]6= ’b’ end if

end procedure

Giải thuậtGen_Dyck(size) cho phép sinh vị trísizecủa từ Dyck, nếusize=nthì hiển thị từ Dyck có độ dàin qua thủ tụcPrint(D) ngược lại thì tiếp tục sinh các vị trí tiếp theo của từ Dyck. Phần tử D[i] chứa bit thứ i của từ Dyck. Sinh từ Dyck có độ dài n, trong chương trình chính ta gọiGen_Dyck(0).

4.2.2. Giải thuật sinh cho lớp từ Grand Dyck

Tương tự giải thuật sinh các từ Dyck, ta có giải thuật sinh cho lớp từ Grand Dyck:

Giải thuật 4.3.

procedure Gen_GDyck(size) local i, s, t if size=n then Print(GD) else GD[size+ 1] := ’a’ GD[size+ 2] := ’b’

Gen_GDyck(size+ 2)

GD[size+ 1] := ’b’

GD[size+ 2] := ’a’

Gen_GDyck(size+ 2) ifGD[size] = ’b’ then s:= ’b’ t:= ’a’ else s:= ’a’ t:= ’b’ end if i:=size GD[size+ 1] :=GD[size+ 2] :=s whileGD[i] :=s do GD[i] :=t

Gen_GDyck(size+ 2)

GD[i] :=s i:=i−1 end while end if

end procedure

4.2.3. Giải thuật sinh cho lớp từ Dyck k - phân m - màu

Với lớp từ Dyck k- phân m - màu được mã hóa như sau: a1 ∼1,b1∼2,a2∼3,b2 ∼4, ... , ai ∼i∗2−1,bi∼i∗2, vớii= 1,2, ..., m,mmàu tăng hay giảm được đặc trưng bởi các số1,2, ...,2∗m, vànluôn là bội của k(các từ Dyck k- phân m - màu có độ dài làn).

Giải thuật cho lớp từ này như sau:

Giải thuật 4.4.

procedure GenM KDyck(size) local i, j, c if size=n then Print(M KD) else c:=M KD[size] if c6= 0 then for j= 2 tok do M KD[size+j] :=c end for i:=m+ 1 repeat M KD[i] :=c−1

GenM KDyck(size+k)

M KD[i] :=c i:=i−1 untilM KD[i]6=c end if for i:= 1 tom do if i∗26=c then M KD[size+ 1] :=i∗2−1 for j := 2to k do M KD(size+j) end for

GenM KDyck(size+k) end if

end for end if

end procedure

4.2.4. Giải thuật sinh cho lớp từ Motzkin

Ở chương trước, xây dựng các từ Motzkin kế tiếp có hai cách xây dựng dựa trên quy luật kế vị. Tương ứng hai cách xây dựng đó, ta có hai giải thuật sinh cho lớp từ Motzkin.

Một phần của tài liệu Phương pháp sinh toàn bộ một số đối tượng tổ hợp (Trang 39)

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

(65 trang)