Bài tập cấu trúc dữ liệu giải thuật CAT

7 438 0
Bài tập cấu trúc dữ liệu giải thuật  CAT

Đang tải... (xem toàn văn)

Thông tin tài liệu

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 đối tượng tổ hợp ứng dụng rộng rãi nhiều lĩnh vực đại số Lie tự do, mã hóa Gray, lý thuyết thống kê hay sinh học phân tử Một chuỗi vòng k-phân một lớp xâu kphân tương đương với quay vòng chúng Ví dụ chuỗi vòng tam phân 0123 lớp xâu tương đương sau: 0123, 3012, 2301, 1230 Chuỗi vòng k-phân đối xứng chuỗi vòng kphân mà ta đọc chuỗi từ trái qua phải hay từ phải qua trái chuỗi vòng Ví dụ 0011 chuỗi vòng nhị phân đối xứng 0011 1100 hai chuỗi nhị phân tương đương quay vòng Trong báo cáo này, đưa số tính chất chuỗi vòng nhị phân đối xứng đề xuất thuật toán đệ quy sinh toàn xâu nhị phân đối xứng độ dài với thời gian 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ó nhiều lý để phát triển thuật toán sinh dãy đối tượng tổ hợp Thứ nhất, thuật toán thực hữu ích cho nhiều lĩnh vực kiểm thử phần mềm, phần cứng hay xác suất thống kê Thứ hai, có thuật toán Công trình thực hướng dẫn 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 Truyền thông, trường Đại học Bách Khoa Hà Nội ( e-mail: lananh2734@gmail.com ) Lê Ngọc Khang, sinh viên lớp KSTN_CNTT_K54, Viện Công nghệ thông tin 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 Truyền thông, trường Đại học Bách Khoa Hà Nội giúp ta tìm định lý, tính chất toán học khác liên quan đến đối tượng nghiên cứu cách thông gian tính thuật toán phải tỉ lệ thuận với số lượng đối tượng sinh Trong báo cáo thuật toán gọi hiệu trung bình thuật toán sử dụng số lượng số phép toán để sinh đối tượng Ta gọi thuật toán thuật toán thuật toán CAT (Constant Amortized Time), nghĩa thuật toán có thời gian tính số theo phân tích khấu trừ Chuỗi vòng k-phân đối tượng tổ hợp ứng dụng rộng rãi nhiều lĩnh vực đại số Lie tự [9], mã Gray [ ] hay lý thuyết thống kê, sinh học phân tử Các công trình nghiên cứu biết tìm cách đếm số lượng chuỗi vòng đề xuất thuật toán CAT sinh chuỗi vòng Công thức đếm số lượng chuỗi vòng độ dài tính toán nhờ định lý Burnside [1] Các thuật toán CAT sinh chuỗi vòng biết dựa định lý mạnh sử dụng chuỗi Lyndon chuỗi vòng tiền tố [3, ] Từ nhiều công trình phát triển thuật toán sinh chuỗi vòng để sinh chuỗi vòng đặc biệt 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 trục gọi chuỗi vòng đối xứng Chuỗi vòng đối xứng có ứng dụng quan trọng sinh học phân tử để nghiên cứu chuỗi vòng ADN có tính chất đối xứng Theo tìm hiểu chúng tôi, chưa có công trình công bố toán đếm toán sinh chuỗi vòng đối xứng Trong báo cáo này, đưa chứng minh số định lý, tính chất chuỗi vòng nhị phân đối xứng có mật độ cố định Từ đề xuất thuật toán sinh toàn chuỗi vòng nhị phân đối xứng độ dài chứng minh tính CAT hiệu thuật toán đề xuất II Định nghĩa Định nghĩa 1: Một chuỗi vòng k-phân độ dài J xâu đại diện lớp xâu k-phân tạo nên từ số nguyên dương I# I$ I có độ dài n tương đương với quay vòng chúng Ví dụ 1: hệ tam phân (hệ ŷ-phân) xâu sau tương đương: 0123, 3012, 2301, 1230 quay vòng Ta chọn xâu đại diện xâu để làm chuỗi vòng tương ứng Ví dụ 2: chuỗi vòng nhị phân độ dài là: 0000, 0001, 0011, 0101, 0111,1111 Ta có lớp xâu: 0001, 0100, 0010,1000 xâu nhị phân độ dài 4, nhiên xâu tương đương quay vòng, vậy, ta có xâu đại diện 0001 toán liệt kê chuỗi vòng nhị phân độ dài Hình 1.1.Các chuỗi vòng nhị phân độ dài Từ đinh nghĩa ta dễ dàng suy bổ đề sau Bổ đề 1: Bài toán liệt kê tất chuỗi vòng kphân độ dài n tương đương với toán liệt kê cách xếp n số, số chọn khoảng từ tới k-1 đường tròn Với toán liệt kê chuỗi vòng với lớp xâu tương đương quay vòng, ta cần liệt kê xâu đại diện lớp Thông thường xâu đại diện xâu có thứ tự từ điển nhỏ nhất.Tuy nhiên, người ta có nhiều cách chọn xâu đại diện lớp xâu tương đương để làm chuỗi vòng, tùy theo thuật toán sinh, gặp xâu I# I$ ……I chưa thể kết luận chuỗi vòng Và giả thiết cho I# I$ ……I chuỗi vòng I # I I# I chuỗi vòng với ŵ ˩ J ŵ Định nghĩa 2: Nếu A gọi tập chuỗi vòng độ dài n A không tồn chuỗi khác I# I$ …… I I# I$ I mà chuỗi quay số nguyên lần ta chuỗi lại Bổ đề sau suy trực tiếp từ định nghĩa sử dụng để chứng minh định lý tính chất phần sau Bổ đề 2: Xét tập A chuỗi vòng khác độ dài n có tính chất (α) đảm bảo chuỗi vòng A đại diện lớp xâu có phần tử Khi toán sinh chuỗi vòng có tính chất (α) tương đương với toán sinh xâu có tính chất (α) Ví dụ 3: Liệt kê chuỗi vòng I# I$ I% thỏa mãn I# I$ I% {ŵ Ŷ ŷ Ÿ{,tương đương với việc liệt kê xâu I# I$ I% thỏa mãn I# I$ I% {ŵ Ŷ ŷ Ÿ{ :ŵŵŵ, ŶŶŶ, ŷŷŷ, ŸŸŸ Định nghĩa 3: Mật độ chuỗi vòng: Mật độ chuỗi vòng số số khác xác định chuỗi Ví dụ chuỗi 10012012 có mật độ Nhận xét 1: Mật độ chuỗi vòng nhị phân đối xứng số số chuỗi Nhận xét 2: Với toán liệt kê chuỗi vòng, ta cần liệt kê chuỗi vòng mật độ cố định d cho d chạy từ tới độ dài chuỗi vòng tất chuỗi vòng cần sinh Định nghĩa 4: Chuỗi vòng đối xứng chuỗi vòng mà đọc chuỗi từ trái qua phải hay từ phải qua trái ta chuỗi vòng Ví dụ 4: a Chuỗi vòng nhị phân độ dài đọc từ phải qua trái là: 0011 Khi ta đọc từ phải qua trái 1100 Tuy nhiên, theo định nghĩa chuỗi 1100 chuỗi 0011 quay vòng nên 0011 chuỗi vòng nhị phân đối xứng b Chuỗi vòng tam phân độ dài đọc từ trái qua phải 001102 Khi ta đọc từ phải qua trái 201100, chuỗi 201100 quay vòng khác với chuỗi 001102 nên 001102 chuỗi vòng nhị phân đối xứng Nhận xét 3: Các tính chất chuỗi vòng đối xứng giống với tính chất chuỗi vòng chuỗi vòng đối xứng trường hợp đặc biệt chuỗi vòng Bài toán đề xuất: Sinh toàn chuỗi vòng nhị phân đối xứng Nhận xét 4: Dựa vào nhận xét ta chuyển 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 toán sinh toàn chuỗi vòng nhị phân đối xứng III Các định lý tính chất liên quan tới chuỗi vòng đối xứng Định lý 1: Bài toán sinh chuỗi nhị phân đối xứng mật độ ˤ cố định tương đương với toán xếp ˤ số n - d số đường tròn cho đường tròn tồn trục đối xứng Định lý 2: Sinh chuỗi vòng nhị phân đối xứng mật độ d cố định I# I$ ……I tương đương với việc sinh chuỗi vòng đối xứng I# I$ .I thỏa mãn điều kiện: I Ŵ với 0< i≤ d J I# - I$ .+ I Chứng minh: Phần thuận: Xét chuỗi vòng nhị phân đối xứng mật độ d xét cách xếp d số n-d số đường tròn cho đường tròn tồn trục đối xứng.(theo định lý 1) Gọi I khoảng cách số ŵ thứ ˩ số ŵ thứ ˩ - ŵ đường tròn.(với điều kiện số ŵ thứ ˤ - ŵ số thứ nhất) với Ŵ ˩ ˤ Trên vòng tròn có J số nên có J khoảng cách hay khoảng cách số J Từ ta có: J I# -I$ .+I Do đường tròn có trục đối xứng nên số đối xứng qua trục suy khoảng cách số đối xứng qua trục này, I# I$ .I chuỗi vòng đối xứng Phần đảo: Chứng minh tương tự Định lý 3: Không tồn xâu khác có … I ˳I I$ I# dạng I# I$ I# I$ ….I ˴I I$ I# mà chúng biểu diễn 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 chuỗi I# I$ ….I ˳I I$ I# mà sau quay số vị trí định chuỗi I# I$ ….I ˴I I$ I# Chứng minh: Giả sử tồn xâu khác có … I ˳I I$ I# dạng I# I$ I# I$ I ˴I I$ I# mà chúng biểu diễn chuỗi vòng đối xứng α Dễ thấy ˳ ˴ chuỗi vòng đối xứng α biểu diễn đường tròn phải có trục đối xứng Gọi trục đối xứng gần cách khoảng m Có thể nói xâu I# I$ … I ˴I I$ I# sinh từ xâu I# I$ ….I ˳I I$ I# sau quay m vị trí Quy ước : Đánh tọa độ điểm vòng tròn độ dài n (vòng tròn chia n điểm) theo chiều ngược chiều kim đồng hồ (tọa độ ˫ - J ˫ điểm với ˫ nguyên) Bổ đề : Cho vòng tròn độ dài J Cho ˭ Ŵ , viết lên vòng tròn số x tất tọa ¯ộ J J - ˭ J Ŷ˭ J - ŷ˭ (J - ˫˭ với ˫ nguyên dương) Gọi ˤ ˡ˕H˚{˭ J{ số ˲ viết tất điểm có tọa độ J - ˫ˤ {˫ nguyên) Do đường tròn chia thành đoạn có độ dài ˤ Đánh toạ độ điểm thuộc trục đối xứng.Khi điểm A có tọa độ x điểm có tọa độ ˲ ˲ Ŷ˭ ˲ - Ŷ˭ scó giá trị A.( tính chất đối xứng qua trục qua điểm có tọa độ m) Xét điểm K có tọa độ ˭ => có điểm K có tọa độ ˭ => Các điểm K có tọa độ ˭ - ŶJ˭( J nguyên , khoảng cách số K liên tiếp 2m) Gọi ˤ ˡ˕H˚{˭ J{ => ˤ ˡ˕H˚{Ŷ˭ J{ ( J lẻ) Áp dụng bổ đề ta có điểm có tọa độ ˬ ˭ - ˤJ ( J nguyên) K Như xét điểm ˫ chia đường tròn thành đoạn ) đoạn có độ dài ˤ J# đoạn ( số lẻ Xét điểm C có tọa độ ˲ (Ŵ ˲ ˤ) Tương tự ta có ˲ - Jˤ (J nguyên) điểm C ( điểm C có mặt J# đoạn vị trí tương đối đoạn đó) Vì vậy, tất chuỗi đoạn có độ dài d Do đối xứng nên tọa độ ˲ cững điểm C => ˲ - Jˤ điểm C Như đoạn thẳng có điểm C khác vị trí đối xứng với điểm trước đoạn thẳng Vậy chuỗi đoạn có độ dài d chuỗi đối xứng Suy α có dạng II# I# I Kể ta xoay I# I# II# I# I chuỗi thẳng m (m chia hết cho d) vị trí ta chuỗi Vậy giả sử vô lý => đpcm Định lý 4: Không tồn chuỗi thẳng khác có dạng I# I$ … I ˳I I$ I# ˳# I# I$ ….I ˴I I$ I# ˴# mà chúng biểu diễn chuỗi vòng đối xứng.(y ˳# ˴ ˴# ) Chứng minh: Tương tự Định lý Dựa vào định lý và định nghĩa ta nhận thấy việc sinh chuỗi vòng đối xứng có dạng I# I$ ….I ˳I I$ I# (hoặc I# I$ ….I ˳I I$ I# ˳# { tương đương với việc sinh xâu có dạng I# I$ ….I ˳I I$ I# (hoặc I# I$ ….I ˳I I$ I# ˳# ) Định lý 5: a Nếu ˤ lẻ, tập chuỗi vòng đối xứng tập xâu có dạng I# I$ ….I ˳I I$ I# Ta gọi xâu I# I$ ….I (trong I# I$ ….I xâu không đối xứng xâu I# I$ … I khác xâu I I$ I# ) xâu không đối xứng không lật b Nếu ˤ chẵn, tập chuỗi vòng đối xứng chia làm tập sau: Tập xâu có dạng I# I$ ….I ˳I I$ I# ˳# (y ˳# { Tập xâu có dạng I# I$ … I I # I # I I$ I# (trong I# I$ ….I I # xâu không đối xứng không lật) Tập xâu có dạng I# I$ … I ˳I I$ I# ˳ (trong I# I$ ….I xâu không đối xứng không lật) Xét chuỗi dạng dạng 3; ta chia chuỗi thành dạng: -Dạng 2.1: Các chuỗi vòng dạng I# I$ … I I # I # I I$ I# (D1)(trong I# I$ ….I I # xâu không đối xứng không lật) -Dạng 2.2: Tập chuỗi vòng có dạng I# I$ ….I ˳I I$ I# ˳ (D2)(trong I# I$ ….I xâu không đối xứng không lật) Dễ chứng minh không tồn xâu dạng D1(hoặc dạng D2) mà quay chuỗi vòng nên tập tương đương với xâu dạng D1(hoặc dạng D2) -Dạng 2.3: tập chuỗi vòng dạng … I ˳I I$ I# ˳ (hoặc I# I$ I# I$ … I I # I # I I$ I# { , I# I$ ….I (hoặc I# I$ ….I I # { xâu đối xứng I ˳ (hoặc Để tránh bị lặp lại I# I$ I# I$ ….I I # { phải chuỗi vòng đối xứng Vậy tập tương đương với tập chuỗi vòng dạng I# I$ ….I I # I# I$ I I # { { (trong I# I$ ….I I # chuỗi vòng đối xứng).Mà không tồn chuỗi vòng dạng(**) nên tập 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 Tập xâu dạng I# I$ … I I # I# I$ … I I # (trong I# I$ ….I I # chuỗi vòng đối xứng) Chứng minh: + Nếu ˤ lẻ, theo định lý có điều phải chứng minh + Nếu ˤ chẵn, dễ thấy chuỗi vòng đối xứng có dạng : Dạng 1: I# I$ ….I ˳I I$ I# ˳# (y ˳# { (do chuỗi vòng đối xứng nên quay dạng ˳ ˳# { Dạng 2: I# I$ ….I ˳I I$ I# ˳ Dạng 3: I# I$ ….I I # I # I I$ I# Trong chuỗi vòng dạng độc lập hoàn toàn, không trùng với chuỗi dạng 3, mặt khác theo định lý 4, sinh chuỗi vòng dạng sinh xâu dạng Các chuỗi vòng dạng thể có dạng ngược lại Thuật toán sinh sinh xâu dạng : I# I$ ….I ˳I I$ I# cho Ŷ {I# - I$ ….I {+y =n, Ŷ ˫ - ŵ ˤ Dùng mảng I để ghi nhớ phần tử sinh dãy mảng ˮ để nhớ tổng phần tử sinh Chúng ta thừa nhận ˮ" Ŵ lời gọi ban đầu Gen1(1,n,d) Procedure Gen1(i,n,d: interger); local j: integer; Begin if ˩ ˤÈŶ then for j {1,2,…., $ % } ˪ I ˪ I # ˮ #-˪0Ŷ ˮ Gen1(i+1,n,d); endfor; endif; else I J.ˮ # if I Ŵ duaketqua(); endelse; End; Procedure Gen3(i,c,n: interger); local j,l:interger; Begin if ˩ { - J Ŷ{ then $ Thuật toán sinh xâu có dạng I# I$ … I ˳I I$ I# ˳# ( ˳ ˳# ) cho Ŷ {I# - I {+˳ - ˳# J, Ŷ ˫ - Ŷ ˤ Dùng mảng I để ghi nhớ phần tử sinh dãy mảng ˮ để nhớ tổng phần tử sinh Chúng ta thừa nhận ˮ" Ŵ lời gọi ban đầu Gen2(ŵ J ˤ) Procedure Gen2(i,n,d: interger); local j,˯ ˫: interger; Begin if ˩ ˤÈŶ then for j {1,2,…., $ % } ˪ I ˪ I ˮ #-˪0Ŷ ˮ Gen2(i+1,n,d); endfor; endif; else if J ˮ # Ŷ then ˯ $ % for ˫ {ŵ Ŷ I ˫ I I if I endfor; endelse; ˯{ ˯.˫ duaketqua(); End; Thuật toán sinh xâu dạng I# I$ … I (trong I# I$ ….I xâu không đối xứng không lật {I# - I$ ….I { I (c cho trước) Dùng mảng I để ghi nhớ phần tử sinh dãy mảng ˮ để nhớ tổng phần tử sinh, dùng mảng I˨˥I˫ để lưu xem thời điểm sinh chuỗi đối xứng hay không Chúng ta thừa nhận ˮ" Ŵ I˨˥I˫" Ŵ lời gọi ban đầu Gen3(1,c,n) {ŵ Ŷ I ˮ # { begin ˪ ˮ ˮ #-˪ I Gen3(i+1,c,n); end; end; else begin if ˩ J then I.ˮ # I if I˨˥I˫ # Ŵ then duaketqua(); I 2I if I˨˥I˫ # Ŵ # then duaketqua(); end; else begin (nếu ˩ J{ if I˨˥I˫ # Ŵ then for ˬ {I # I #ŵ I ˮ # { begin ˬ ˮ ˮ #-˫ I then if ˬ I # I˨˥I˫ # - ŵ I˨˥I˫ if ˩ J ŵ then I.ˮ ; I if I˨˥I˫ # Ŵ then duaketqua(); if I˨˥I˫ # Ŵ I 2I # then duaketqua(); endif; else begin (nếu i J ŵ{ Gen3(i+1,c,n); endelse ;endif; endfor; else begin (nếu check Ŵ{ for ˬ {ŵ Ŷ ˮ # { begin ˫ ˮ ˮ #-˫ I if ˩ J ŵ then I.ˮ #; I duaketqua(); endif; else Gen3(i+1,c,n); endfor;endelse;endelse;endelse; for ˪ End; Dựa vào định lý 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 ˤ Ŷ ŵ then Gen1(1,n,d); else begin Gen2(1,n,d); if J Ŷ Ŵ then - Gen3(1, I# I$ ….I I $ $ { chuỗi ˤ { # ( Ŷ {˫ - ŵ{ Inchuoi I# I$ ….I I # I # I I$ I# ; for ˬ Ӝŵ Ŷ $ ŵӝ begin $ I# I$ ….I ; Inchuoi I# I$ ….I ˬI I$ I# ˬ ; endfor; GEN( $ $ { I# I$ ….I I # ; Inchuoi I# I$ ….I I # I# I$ ….I I endif; endelse; else begin I J.ˮ # if I Ŵ duaketqua(); endelse; End; Nhận thấy: Thuật toán Gen1 viết dựa ˮ việc sinh chuỗi I# - I$ - - I ˳ J.ˮ Thuật toán Gen2 viết dựa sinh chuỗi ˮ ˳ - ˳# J ˮ I# - I$ - - I Gen3(1, ˬ, ŵ); chuỗi $ endfor; endif; chuỗi #; End; Chứng minh thuật toán hiệu Phần chứng minh ngắn gọn thuật toán đề xuất thuật toán có thời gian tính khấu trừ số (CAT) Các hàm thuật toán sinh chuỗi vòng đối xứng dựa vào toán lý thuyết tổ hợp sau: Liệt kê cách phân tích n thành tổng số nguyên dương I# ,I$ ,…,I Thuật toán sinh sau giải toán biết đến thuật toán CAT Procedure Phantich(i); local j: integer; Begin if ˩ ˫ then for j {1,2,….,J ˮ # } begin ˪ I ˮ #-˪ ˮ Phantich(i+1); Thuật toán Gen3 viết dựa sinh chuỗi I# - I$ - - I I đưa thêm mảng check để kiểm tra xem chuỗi có thỏa mãn hay không Vì thuật toá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 phát triển Qua công trình xây dựng thuật toán CAT hiệu để sinh toàn chuỗi vòng nhị phân đối xứng độ dài Điều có nghĩa ta đếm xác số lượng chuỗi vòng thuật toán sinh Tuy nhiên thời gian hạn chế, chưa kịp xây dựng công thức đệ quy hay công thức cho chúng Trong thời gian tới hoàn thiện công thức đếm mở rộng kết cho chuỗi vòng k-phân đối xứng Báo cáo hoàn thiện gửi vào tạp chí chuyên ngành giải thuật tổ hợp VI Lời tri ân Chúng 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 đề tài TS Đỗ Phan Thuận - người giúp đỡ nhiều trình thực đề 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., (1996), pp 654-673 [3] F RUSKEY, C D SAVEGE, and T M Y WANG,Generating [4] Gray-ordered Binary Necklaces Christopher Degnil [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

Ngày đăng: 08/01/2016, 11:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan