Trong số các giải thuật đề xuất này, chúng tôi đã hiện thực được một giải thuật song song hóa, đó là Giải thuật song song hóa sử dụng lại các kết quả ma trận cũ, để tính toán nên các ma
Trang 1Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Trường Đại Học Bách Khoa
PHAN HỮU TRỌNG HIỀN
Trang 2ĐẠI HỌC QUỐC GIA TP HCM CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc Lập - Tự Do - Hạnh Phúc
- -oOo -
Tp HCM, ngày 05 tháng 11 năm 2007
NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ và tên học viên : Phan Hữu Trọng Hiền Giới tính : Nam ;/ Nữ Ngày, tháng, năm sinh : 17/08/1981 Nơi sinh : Bình Thuận
Chuyên ngành : Khoa học Máy tính
Khoá : 2005
1- TÊN ĐỀ TÀI :
TÌM HIỂU VÀ HIỆN THỰC CÁC PHƯƠNG PHÁP XÂY DỰNG CÁC MA TRẬN TRỰC GIAO MỚI
2- NHIỆM VỤ LUẬN VĂN :
3- NGÀY GIAO NHIỆM VỤ :
4- NGÀY HOÀN THÀNH NHIỆM VỤ :
5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : TS Nguyễn Văn Minh Mẫn TS Nguyễn Tuấn Anh
Nội dung và đề cương Luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua
CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN
(Họ tên và chữ ký)
TS Nguyễn Văn Minh Mẫn TS Đinh Đức Anh Vũ
Trang 3CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học : TS Nguyễn Văn Minh Mẫn
TS Nguyễn Tuấn Anh
Cán bộ chấm nhận xét 1 :
Cán bộ chấm nhận xét 2 :
Luận văn thạc sĩ được bảo vệ tại
HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ
TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày tháng năm 2007
Trang 4Phan Hữu Trọng Hiền Trang i
LỜI CAM ĐOAN
Tôi cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác như đã ghi
rõ trong luận văn, các công việc trình bày trong luận văn này là do chính tôi thực hiện
và chưa có phần nội dung nào của luận văn này được nộp để lấy một bằng cấp ở
trường này hoặc trường khác
Ngày 05 tháng 11 năm 2007
Trang 5LỜI CẢM ƠN
Tôi xin gởi lời cảm ơn chân thành nhất đến TS Nguyễn Văn Minh Mẫn, người thầy đã tận tình chỉ bảo, giúp đỡ tôi một cách sâu sát trong suốt quá trình thực hiện luận văn cao học này Ngoài ra tôi cũng xin gửi lời cảm ơn thầy đồng hướng dẫn luận văn, TS Nguyễn Tuấn Anh, chính thầy đã hướng dẫn cho tôi trong phần hiện thực chương trình song song hóa và cho tôi những góp ý, những lời khuyên rất hữu ích về đề tài này Cuối cùng tôi xin cảm ơn ba mẹ, các anh chị trong gia đình và bạn bè đã luôn bên cạnh, hỗ trợ, động viên tôi trong suốt quá trình thực hiện luận văn cao học Tôi sẽ phải
cố gắng hơn nhiều để không phụ niềm tin của tất cả các người thân yêu mình
Trang 6Phan Hữu Trọng Hiền Trang iii
TÓM TẮT LUẬN VĂN
Ma trận trực giao là một khái niệm trong lĩnh vực thiết kế thí nghiệm, có vai trò quan trọng trong sản xuất công nghiệp Chính nhờ ma trận trực giao, người ta đã có thể thiết kế các thí nghiệm trong công nghiệp với số thí nghiệm thiết kế nhỏ nhưng vẫn có thể khảo sát được các nhân tố ảnh hưởng đến chất lượng sản phẩm
Có nhiều công trình trên thế giới đã xây dựng các ma trận trực giao, tuy nhiên chỉ với các trọng 2, 3 Do đó đề tài luận văn này đã nghiên cứu các phương pháp để xây dựng các ma trận trực giao tổng quát, đồng thời đề xuất, hiện thực các phương pháp tìm kiếm mới để tính toán ra các ma trận trực giao trọng 3 và 4 mới
Trong quá trình thực hiện luận văn, chúng tôi đã tìm hiểu các phương pháp toán học để xây dựng các ma trận trực giao mới, các khái niệm lý thuyết nhóm về đếm các
ma trận trực giao (chương 2, 3) Ngoài ra luận văn cũng đã tìm hiểu, đề xuất các giải thuật song song hóa để tính toán các ma trận trực giao mới dựa trên một giải thuật
quan trọng: Giải thuật đếm sắp thứ tự ma trận (chương 4, 5, 6) Trong số các giải thuật đề xuất này, chúng tôi đã hiện thực được một giải thuật song song hóa, đó là Giải
thuật song song hóa sử dụng lại các kết quả ma trận cũ, để tính toán nên các ma
trận trực giao mới Giải thuật này sẽ được hiện thực bằng mô hình lập trình MPI và được thực thi trên hệ thống cluster SuperNode II, đại học Bách Khoa, thành phố Hồ Chí Minh Các kết quả thu được về speedup, effiency đã chứng minh tính hiệu quả của giải thuật song song này (chương 7) Tính đúng đắn của việc sử dụng các kết quả của
ma trận cũ để tính toán nên các ma trận trực giao mới đã được chúng tôi chứng minh bằng cả lý thuyết lẫn thực nghiệm (phần 6.1, 6.2)
Trong quá trình thực hiện tính toán, chúng tôi đã gặp phải nhiều khó khăn về sự bùng nổ tổ hợp khi đếm các ma trận trực giao mới, do bản chất NP-Complete của giải thuật đếm vét cạn các ma trận trực giao mới Luận văn đã tính toán, phát hiện ra được một vài ma trận trực giao trọng 4 mới (phần 7.4 và phụ lục B)
Luận văn vẫn còn một vài vấn đề cần hoàn thiện và phát triển, những vấn đề này sẽ được đề cập trong chương 8 của luận văn
Trang 7MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
TÓM TẮT LUẬN VĂN iii
1 TỔNG QUAN VỀ MA TRẬN TRỰC GIAO 1
1.1 Giới thiệu 1
1.2 Định nghĩa ma trận trực giao trọng t 3
1.3 Ý nghĩa thống kê của ma trận trực giao 6
1.4 Một vài ứng dụng và kết quả nghiên cứu mới nhất về ma trận trực giao 7
1.5 Sơ lượt các kết quả mới mà luận văn thực hiện được 8
2 CÁC PHƯƠNG PHÁP XÂY DỰNG MA TRẬN TRỰC GIAO 10
2.1 Phương pháp chia cột (splitting method) 10
2.2 Phương pháp chồng ma trận (concatenating method) 11
2.3 Phương pháp nhân (multiplying method) 12
2.4 Phương pháp đặt kề (juxtaposing method) 12
2.5 Phương pháp số học (arithmetic method) 13
2.6 Phương pháp hình vuông Latin (Latin square method) 14
2.7 Một vài đánh giá 16
3 ĐẾM CÁC MA TRẬN TRỰC GIAO 17
3.1 Đếm các lớp đẳng cấu 17
3.2 Đếm các nhóm tự đẳng cấu 19
3.3 Một số kết luận 20
4 GIẢI THUẬT ĐẾM SẮP THỨ TỰ MA TRẬN 22
4.1 Định nghĩa phép so sánh hai ma trận trực giao 22
4.2 Ý tưởng giải thuật 23
4.2.1 Giải thuật mở rộng cột 24
4.2.2 Đặc tả giải thuật đếm sắp thứ tự 26
4.3 Các kết quả đã sinh ra bằng phương pháp sắp thứ tự ma trận 27
4.4 Đánh giá về phương pháp sắp thứ tự ma trận 28
5 SONG SONG HÓA GIẢI THUẬT ĐẾM SẮP THỨ TỰ MA TRẬN TỪ GÓC ĐỘ BACKTRACK SEARCH 30
5.1 Phân loại backtrack search 30
5.2 Các phương pháp song song hóa tổng quát backtrack enumeration 33
5.2.1 Giải thuật phân phối xoay vòng 34
5.2.2 Giải thuật phân phối ngẫu nhiên 34
5.3 Kết luận về việc song song hóa backtrack enumeration 35
Trang 8Phan Hữu Trọng Hiền Trang v
6 SONG SONG HÓA SỬ DỤNG LẠI KẾT QUẢ TRUNG GIAN 37
6.1 Ý tưởng sử dụng lại kết quả tính toán trung gian 37
6.2 Bổ đề về việc sử dụng lại kết quả ma trận cũ 38
6.3 Phân tích về tính chính xác của giải thuật 41
6.4 Các ưu điểm của song song hóa từ các kết quả ma trận cũ 41
6.5 Kết luận 42
7 HIỆN THỰC VÀ ĐÁNH GIÁ GIẢI THUẬT SONG SONG HÓA ĐỂ TÍNH CÁC MA TRẬN TRỰC GIAO MỚI 44
7.1 Hiện thực giải thuật Song song hóa sử dụng lại ma trận nhỏ nhất 44
7.2 Các chỉ số speedup và effiency 47
7.3 Một vài nhận xét và đánh giá 50
8 HƯỚNG PHÁT TRIỂN ĐỀ TÀI 53
TÀI LIỆU THAM KHẢO 55
PHỤ LỤC 1: Một vài ma trận nhỏ nhất ứng với các thông số khác nhau 57
PHỤ LỤC 2: Bảng đối chiếu thuật ngữ Anh – Việt 61
Trang 9• 40 phần trăm chi phí để đưa một sản phẩm ra thị trường là trong giai đoạn thiết kế sản phẩm
• Hầu hết các nhà quản l ý đều mong muốn phòng ngừa hơn là khắc phục những sai sót
Từ những l ý do nêu trên, chúng ta thấy rằng việc tổ chức ra được một quy trình thiết kế sản phẩm thích hợp là vô cùng quan trọng đối với một công ty Trong ngành công nghiệp sản xuất hiện nay, trước khi bắt tay vào sản xuất bất kỳ sản phẩm mới nào đó, hầu hết các doanh nghiệp đều phải trải qua một quá trình xem xét, đánh giá đầy đủ các nhân tố ảnh hưởng đến chất lượng của sản phẩm đó Cách làm thông thường nhất, đó là họ sẽ thiết kế các thí nghiệm trước
để xem xét, đánh giá các tác nhân hay là cặp tác nhân nào đó sẽ có nhiều tác động đến sản phẩm
Ta xét một ví dụ sau:
Ban giám đốc của một công ty phần mềm XYZ cần xác định rằng các yếu tố nào là quan trọng để tạo ra một dự án thành công Các yếu tố cần được xem xét là: Nhân tố A (số năm kinh nghiệm của nhân viên), nhân tố B (ngôn ngữ lập trình
sử dụng trọng dự án), nhân tố C (loại ứng dụng của dự án, ví dụ loại phần mềm
về khoa học hay phần mềm về thương mại), nhân tố D (hệ thống sẽ chạy trên platform, hệ điều hành nào), nhân tố E (có sự hợp tác tốt với khách hàng hay không), nhân tố F (khoản thưởng hàng tuần có hay không), nhân tố G (có tổ chức
Trang 10Phan Hữu Trọng Hiền Trang 2
training cho nhân viên tốt án hay không), nhân tố H (có chính sách tốt cho việc làm thêm giờ hay không) Ở mỗi nhân tố, ta chỉ xem xét các giá trị cụ thể, ví dụ nhân tố A, số năm kinh nghiệm, chúng ta chỉ xem xét các giá trị là 1, 3, 5, 7, 9 năm, như vậy là chúng ta có tổng cộng 5 giá trị (level); ở nhân tố B, các ngôn ngữ lập trình có thể sử dụng trong dự án, ta chọn là C++, Java, Perl, C#, nhân tố
C, loại ứng dụng, ta chọn là Scientific, hoặc Business; ở nhân tố D, platform, ta chọn là Windows hoặc Linux, các nhân tố sau đó chúng ta xét chúng ở dạng nhị nguyên, yes hay no
Cụ thể ta có bảng sau:
Như vậy nếu để đánh giá đầy đủ các nhân tố này, số tổ hợp đầy đủ mà chúng
ta cần xem xét phải là 5.4.26=1280 trường hợp Rõ ràng phải thực hiện 1280 thí nghiệm như vậy là không khả thi về mặt kinh tế Mong muốn của ban giám đốc chính là giảm thiểu tối đa số thí nghiệm cần thực hiện xuống khoảng 100 trường hợp nhưng vẫn cho phép chúng ta đánh giá được đầy đủ các tác động của các nhân tố này đến các dự án Liệu điều này có khả thi hay không?
Câu trả lời rằng có Trong lĩnh vực thiết kế thí nghiệm, các nhà nghiên cứu
toán học ứng dụng đã đưa ra khái niệm ma trận trực giao đều trọng t nhằm chọn
ra một bộ các thí nghiệm phù hợp sao cho mặc dù ta chỉ thực hiện một số giới hạn số thí nghiệm này, chúng ta vẫn hoàn toàn có thể đánh giá tác động của các
nhân tố đến chất lượng sản phẩm Vậy ma trận trực giao đều trọng t là gì? Phần
kế tiếp chúng ta sẽ đi vào định nghĩa của ma trận trực giao đều trọng t
Trang 111.2 Định nghĩa ma trận trực giao trọng t
Ma trận trực giao trọng t (t-balanced Orthogonal Array) là một ma trận đặc
biệt và có nhiều ý nghĩa trong lĩnh vực "Thiết kế thí nghiệm" Trong định nghĩa này, chúng ta sẽ xem xét ma trận này trong ngữ cảnh của thiết kế thí nghiệm
Ta cho r 1 , r 2 , , r d là các số tự nhiên và với mỗi i thuộc 1, 2, …, d chúng ta gọi
Q i là tập hợp nào đó mà có số phần tử của nó là r i. Ở đây, chúng ta gọi Q i là
nhân tố (factor) Một nhân tố có r i phân từ và r i được gọi là mức (level) của nó Một thiết kế nhân tố đầy đủ (full factorial design) tương ứng vói các nhân tố Q i
này sẽ là một tích Đề-các (ta gọi tích này là D) của tập hợp Q i : D = Q 1 × ×
Q d
Ta có thể tưởng tượng các Q i như là các nhân tố mà chúng ta sẽ lưu ý trong việc thiết kế thí nghiệm cho một sản phẩm P nào đó Các giá trị của mỗi tập Q i có thể xem như là các giá trị mà chúng ta xem xét cho từng nhân tố đó
Một thiết kế riêng phần (fractional design) hay còn gọi là fraction F của D là một
tập con của tập tích Đề-các D
Nếu như chúng ta có r 1 = r 2 = … = r d thì chúng ta gọi F là đối xứng (symmetric) còn trong trường hợp ngược lại ta gọi F là không đối xứng (mixed) Gọi dãy có thứ tự s 1 , s 2 ,…, s m (s 1 > s 2 > · · · > s m ) là tập hợp các kích cỡ khác
nhau của các nhân tố và giả sử là có chính xác ai nhân tố có cùng level là s i Lúc
này chúng ta sẽ phân chia d nhân tố Q i mà có các mức r 1 , r 2 ,…, r d này thành m nhóm, bằng cách gom các nhân tố có cùng level vào một nhóm, và mỗi nhóm sẽ
có ai phần tử Chúng ta gọi
d
r r
r1, 2, , = a m
m a
s 1, 2, ,
2 1
là một kiểu thiết kế (design type) của F
Nếu chú giải rõ ràng hơn thì ta có:
Trang 12Phan Hữu Trọng Hiền Trang 4
2 1 1
a a
là một thiết kế riêng phần không đối xứng có kiểu thiết kế là (4, 23)
Thật ra chúng ta thường biểu diễn thiết kế F ở dạng ma trận, trong đó các hàng của ma trận tương ứng với các phần tử của F, và các cột tương ứng với các nhân tố của thiết kế Do đó thiết kế F trên nếu biểu diễn ở dạng ma trận sẽ có
dạng như sau
(lưu ý ở đây chúng ta vẽ ma trận trên theo hàng ngang và k ý hiệu T biểu thị cho
ma trận chuyển vị của nó)
Với cách biểu diễn này, chúng ta xem các hàng của ma trận sẽ là các run, và
số hàng của ma trận sẽ là run size Nếu nhìn theo hướng thiết kế thí nghiệm thì mỗi run sẽ đại diện cho một thí nghiệm, và run size sẽ đại diện cho tổng số thí
nghiệm mà ta sẽ thực hiện Rõ ràng, số hàng càng lớn chứng tỏ rằng việc thực hiện các thí nghiệm này càng nhiều và dĩ nhiên … càng tốn kém
Thông thường do mỗi tập Q i có r i phần tử nên ta thường biểu diễn ri phần tử
của tập Q i này là các số nguyên từ 0, 1,… cho đến r i - 1 Nói cách khác để tiện lợi, chúng ta thường xem xét: Q i =Z r = 1,2, ,r i − }
Trang 13Nếu ta chỉ lấy ra t cột của ma trận F, ta sẽ được một mảng con (subfraction) của F Nếu như mảng con này có một đặc điểm đặc biệt, đó là nó chứa đựng tất
cả các bộ (tuple) của thiết kế đều tương ứng và các bộ này có số lần xuất hiện
như nhau, thì lúc đó ta gọi mảng đó là trivial (tầm thường)
Một ma trận được gọi là trực giao đều trọng t, nếu như mọi mảng con gồm t cột cùa nó đều là trivial Đây chính là định nghĩa của ma trận trực giao trọng t
Định nghĩa ma trận trực giao trọng t một cách hình thức bằng tổ hợp như sau:
Ta đã biết D=Q1×Q2× ×Q d và F là một tập con của D Gọi tập chỉ số I là tập hợp con bất kỳ gồm t phần tử của tập {1,2,…,d} Số tập hợp I như vậy là t
F
I λ , với λIlà một số nguyên dương nào đó
Hình vẽ sau là ví dụ của một ma trận trực giao đều trọng 3: OA(16; 4.23;3)
Trang 14Phan Hữu Trọng Hiền Trang 6
Trong ma trận trên, bấy kỳ một bô ba các cột nào cũng đều chứa đựng tất cả các bộ của thiết kế nhân tố đầy đủ với số lần xuất hiện là như nhau Ví dụ nếu chúng ta lấy ba cột B, C, D thì chúng ta thấy rằng tất cả các bộ (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0, (1,0,1), (1,1,0) và (1,1,1) đều xuất hiện hai lần
1.3 Ý nghĩa thống kê của ma trận trực giao
Chúng ta thấy rằng số run size của một ma trận trực giao luôn nhỏ hơn số tổ hợp tối đa của kiểu thiết kế ma trận Ví dụ ta xét một thiết kế thí nghiệm gồm bốn nhân tố, với kiểu thiết kế là (4.23) Để thực hiện hết tất cả các thí nghiệm, ta
Trang 15sẽ cần ít nhất 32 run Tuy nhiên nếu như chúng ta dùng một ma trận trực giao với cùng kiểu thiết kế trên, chúng ta chỉ cần thực hiện 16 thí nghiệm là đủ Ma trận
tôi vừa nói đến là ma trận OA(16;4.2 3 ;3) ở trên
Về mặt hình học ta xem xét tập hợp đầy đủ 32 thí nghiệm sẽ là tập cha, tập hợp 16 thí nghiệm tương ứng với 16 run từ ma trận trực giao là tập con L ý thuyết thống kê đã chứng minh được rằng các kết quả thu được từ 16 thí nghiệm này đã cho phép chúng ta đánh giá được tác động của từng tác nhân đến sản phẩm và một vài tác động kép của cặp tác nhân [5] Đây là một điều hết sức ý nghĩa vì lưu ý một điều rằng chúng ta không cần thực hiện hết đầy đủ tất cả các thí nghiệm mà chỉ thực hiện một vài thí nghiệm mà thôi
Ngoài ra, các l ý thuyết thống kê cũng đã chứng minh được rằng ma trận trực
giao đều có trọng số t càng lớn thì càng có ý nghĩa Ví dụ các ma trận trực giao
trọng 2 chỉ cho phép chúng ta xác định các tác động của nhân tố chính, ma trận trực giao trọng 3 tốt hơn vì chúng cho phép chúng ta xác định sự tác động của tương tác cặp hai nhân tố (nhưng không đầy đủ hết tất cả), ma trận trực giao trọng 4 lại cho phép chúng ta xác định đầy đủ tất cả các tác động tương tác giữa các cặp nhân tố này ([5])
1.4 Một vài ứng dụng và kết quả nghiên cứu mới nhất về ma trận
Trang 16Phan Hữu Trọng Hiền Trang 8
vào kiểm định phần mềm ([6], [11]), ứng dụng ma trận trực giao vào thiết kế mạng Battlefield trong quân đội ([12]) Trong công nghiệp, năm 2005, một kết
quả ma trận trực giao trọng 3 (OA(96;4 2 2 6 ;3) do Nguyễn Văn Minh Mẫn tìm ra
đã được ứng dụng vào ngành công nghiệp chế biến sữa để sản xuất một loại yahourt mới ([14])
Trong các ứng dụng trên, các nhà nghiên cứu khoa học cũng như các chuyên gia công nghiệp đều chỉ sử dụng các các ma trận trọng 2 hoặc 3 mà thôi Các ma trận trực giao trọng 4 với ưu điểm vượt trội hơn các ma trận trực giao trọng 2 và
3 sẽ có thể đóng góp nhiều giá trị hữu ích hơn nữa cho việc nghiên cứu khoa học cũng như trong công nghiệp Do đó mục tiêu xây dựng nên các ma trận trực giao mới trọng 4 là điều mà luận văn này sẽ hướng đến
Tuy nhiên, các ma trận trực giao trọng 4 là một thánh thức thú vị nhưng không đơn giản Nguyên nhân là do ma trận trực giao trọng số càng cao thì càng đòi hỏi nhiều sự tính toán hơn, thời gian xử lý lâu hơn, tốn nhiều bộ nhớ hơn Hơn thế nữa, về mặt toán học, điều mà ta mong muốn là "đếm" hết tất cả các ma trận trực giao ứng với một kiểu thiết kế cụ thể, chứ không đơn giản chỉ là tạo ra một ma trận nào đó cho kiểu thiết kế đó (khái niệm "đếm" các ma trận trực giao
sẽ được trình bày cụ thể ở phần 3: Đếm các ma trận trực giao) Từ những khó khăn trên, một trong những hướng đi của đề tài luận văn tốt nghiệp này là tìm các biện pháp song song hóa để có thể kết hợp sức mạnh tính toán nhiều máy tính lại cho việc đếm các ma trận trực giao mới có trọng 3 hoặc trọng 4
1.5 Sơ lượt các kết quả mới mà luận văn thực hiện được
Luận văn này đã tìm hiểu các phương thức xây dựng ma trận trực giao mới, trong đó đã đề xuất ba phương pháp song song hóa mới để đếm các ma trận trực giao Trong ba phương thức này, chúng tôi đã hiện thực một giải thuật quan trọng nhất, giải thuật song song hóa sử dụng lại kết quả ma trận cũ trên mô hình lập trình song song MPI và sẽ tính toán trên hệ thống cluster SuperNode-II của
Trang 17trường đại học Bách Khoa thành phố Hồ Chí Minh Ngoài ra để bảo đảm cho tính đúng đắn của phương pháp này, chúng tôi đã phát hiện và chứng minh một
bổ đề toán học để chứng minh cho tính chính xác của việc sử dụng kết quả ma trận cũ để tính toán nên các ma trận trực giao mới (phần 6.2)
Trong quá trình thực hiện luận văn, đầu tiên chúng tôi đã sử dụng Giải thuật
sử dụng lại ma trận nhỏ nhất cũ để đếm các kết quả ma trận trọng 3, so sánh với
các kết quả đã tìm ra trong [1] Các so sánh cho thấy kết quả mới tìm ra và kết quả cũ là giống nhau Điều này đã chứng minh được tính đúng đắn của giải thuật song song Một điều quan trọng nữa là kết quả của việc đo đạc các chỉ số speedup, chỉ số effiency đã cho ta thấy sự hiệu quả của chương trình song song này Chúng tôi cũng đã có một số đánh giá, ước lượng về thời gian cần tính toán
để đếm các ma trận trực giao mới (phần 7.4) Kết quả cho thấy bài toán chúng ta
là một bài toán NP-Complete với sự bùng nổ tổ hợp rất lớn Điều này sẽ làm cho thời gian tính toán các ma trận mới là rất lớn
Cho đến thời điểm này, chúng tôi đã tìm hiểu và xây dựng được các ma trận
trực giao trọng 4 mới, đó là các ma trận OA(32;2 6 ;4), OA(96;3.2 5 ;4), OA(96;3.2 6 ;4) Hy vọng trong thời gian tới, chúng tôi sẽ có thể cập nhật thêm
nhiều kết quả nữa để bài báo cáo thêm hoàn thiện
Trang 18Phan Hữu Trọng Hiền Trang 10
2 C ÁC PHƯƠNG PHÁP XÂY DỰNG MA TRẬN TRỰC GIAO
Sau khi đã biết được định nghĩa của ma trận trực giao trọng t, chúng ta sẽ xem xét về các phương pháp toán học để xây dựng (construction) nên các ma trận trực giao trọng t này Có khá nhiều phương pháp như vậy, nhưng trong bài viết này, tôi chỉ trình bày bốn phương pháp thuộc nhóm cơ bản [1], đó là phương pháp chia cột (splitting method), phương pháp chồng ma trận (concatenating method), phương pháp nhân (multiplying method) và phương pháp xếp kề
(juxtaposing method) Cuối cùng sẽ là hai phương pháp mới và khá phức tạp, đó
là phương pháp số học (arithmetic method) và phương pháp hình vuông Latin
(Latin square method)
2.1 Phương pháp chia cột (splitting method)
Giả sử chúng ta có một ma trận OA(N; uv.r 1 r 2 …r d ; t), ta thấy cột đầu tiên của
nó là tích của hai số nguyên u, v nào đó Với ma trận như vậy, chúng ta có thể tạo
ra một ma trận trực giao trọng t mới mà cùng số hàng với nó bằng cách tách cột đầu tiên có mức (u*v) đó ra để tạo thành hai cột mới có các mức là u và v Nói cách khác, ta có thể dựa vào ma trận (N; uv.r 1 r 2 …r d ; t) để tạo ra một ma trận trực giao mới là OA(N; u.v r 1 r 2 …r d ; t)
Chẳng hạn, nếu chúng ta có một cột có mức là 6, chúng ta có thể tạo ra hai
cột mới có các mức là 2 và 3 Ta lấy ví dụ là từ một ma trận OA(16;4.2 3 ;3), chúng ta có thể tạo ra một ma trận mới là (16;2 5 ;3) như hình vẽ phía dưới
Trong ví dụ này, chúng ta đã chia cột A của ma trận đầu tiên và tạo ra hai cột A1, A2 có mức là 2 cho ma trận thứ hai bằng cách sau:
• Với ký hiệu 3, chúng ta thay thế nó bằng hai k ý hiệu 1 và 1 tương ứng
• Với k ý hiệu 2, ta thay bằng 1 và 0
• Với k ý hiệu 1, ta thay bằng 0 và 1
• Với k ý hiệu 0, ta thay bằng 0 và 0
Trang 19Tổng quát hóa, đối với mỗi giá trị của cột đầu tiên (thuộc Z uv), ta thay bằng
duy nhất một cặp giá trị thuộc tập Z u x Z v
1 0
0
1 1
0 0
1
1 1
0 1
0
1 1
1 1
1
1 1
1 0
0
0 1
0 0
1
0 1
0 1
0
0 1
1 1
1
0 1
0 1
1
1 0
1 1
0
1 0
1 0
1
1 0
0 0
0
1 0
0 1
1
0 0
1 1
0
0 0
1 0
1
0 0
0 0
0
0 0
D C
B
A2 A1
1 0
0
1 1
0 0
1
1 1
0 1
0
1 1
1 1
1
1 1
1 0
0
0 1
0 0
1
0 1
0 1
0
0 1
1 1
1
0 1
0 1
1
1 0
1 1
0
1 0
1 0
1
1 0
0 0
0
1 0
0 1
1
0 0
1 1
0
0 0
1 0
1
0 0
0 0
0
0 0
D C
B
A2 A1
Tạo ra một ma trận trực giao mới bằng phương pháp chia cột
2.2 Phương pháp chồng ma trận (concatenating method)
Phương pháp này dành riêng cho hai ma trận có cùng kiểu thiết kế (thuật ngữ cùng kiểu thiết kế có nghĩa là hai ma trận này có cùng trọng số t, có cùng số
factor và số mức của mỗi factor là giống nhau đôi một) Nếu chúng ta có hai ma trận có cùng kiểu thiết kế như vậy thì chúng ta có thể sinh ra một ma trận trực giao mới bằng cách đặt chồng ma trận này lên ma trận kia Lưu ý phép đặt chồng này giữ nguyên các ma trận thành phần, không hề làm thay đổi các giá trị của nó Chúng ta có thể biễu diễn điều này bằng k ý hiệu ⎥
D C
B
A
1 0
0
3
0 0
1
3
0 1
0
3
1 1
1
3
1 0
0
2
0 0
1
2
0 1
0
2
1 1
1
2
0 1
1
1
1 1
0
1
1 0
1
1
0 0
0
1
0 1
1
0
1 1
0
0
1 0
1
0
0 0
0
0
D C
B
A
1 0
0
3
0 0
1
3
0 1
0
3
1 1
1
3
1 0
0
2
0 0
1
2
0 1
0
2
1 1
1
2
0 1
1
1
1 1
0
1
1 0
1
1
0 0
0
1
0 1
1
0
1 1
0
0
1 0
1
0
0 0
0
0
Trang 20Phan Hữu Trọng Hiền Trang 12
2.3 Phương pháp nhân (multiplying method)
Cho một ma trận trực giao F = OA(N; r 1 r 2 …r d ; t), chúng ta có thể tạo nên một ma trận trực giao mới OA(sN; sr 1 r 2 …r d ; t) với s là một số nguyên dương bất kỳ bằng cách chồng s bản copy của F, thay đổi các k ý hiệu ở cột đầu tiên sao
cho chúng khác nhau đôi một
Lưu ý là phương pháp nhân này chính yếu giống như phương pháp chồng, tuy nhiên khác biệt ở chỗ là chúng ta chỉ sử dụng một ma trận khởi tạo ban đầu duy nhất để xây dựng nên một ma trận mới và ngoài ra, chúng ta còn thay đổi các k ý
hiệu của cột đầu tiên Ví dụ, các ma trận có dạng OA(sN;2 a ;3) có thể thu được từ
s bảng copy của ma trận OA(N;2 a ; 3) = OA(N;1.2 a ; 3), đối với a ≤ N/2 (ma trận OA(24; 3.2 4 ; 3) đã được tạo ra bằng cách này) Các ma trận OA(8s; 2s.2 3 ; 3) được thiết lập từ OA(8; 2 4 ; 3) = OA(8; 2.2 3 ; 3); ngoài ra chúng ta tạo ra ma trận OA(16; 4.2 3 ; 3) từ hai ma trận OA(8; 2.2 3 ; 3); và cuối cùng chúng ta khởi tạo ma trận OA(24; 6.2 3 ; 3) từ ba ma trận OA(8; 2.2 3 ; 3)
2.4 Phương pháp đặt kề (juxtaposing method)
Phương pháp đặt kề là phương pháp đặt hai ma trận ở kề nhau và nó là sự kết hợp của hai phương pháp chồng và nhân ma trận Ta cho hai ma trận trực giao
F1, F2 với cùng trọng số t, và có cùng số cột Nếu như hai ma trận này có cùng
số mức ở tất cả các cột ngoại trừ cột đầu thì chúng ta có thể tạo ra một ma trận trực giao mới bằng cách chồng môt ma trận này lên ma trận kia, với ký hiệu khác nhau ở cột đầu tiên và vẫn giữ nguyên các k ý hiệu ở các cột còn lại Một cách rõ
ràng hơn, với hai ma trận OA(N′; s′ r 2 …r d ; t) và OA(N′′; s′′ r 2 … r d ; t) chúng ta
có thể khởi tạo một ma trận OA(N′ + N′′; s′ + s′′ r 2 … r d ;t) bởi phương pháp xếp
kề này Rõ ràng hơn chúng ta có thể thực hiện như sau:
• Trong N' hàng đầu tiên, ta giữ nguyên N' hàng của ma trận F1
• Trong N'' hàng kế tiếp, ta tạo ra chúng bằng cách giữ nguyên N'' hàng của
ma trận trực giao thứ hai, chỉ cộng N' thêm vào giá trị của cột đầu tiên
Trang 21Ví dụ dùng phương pháp xếp kề này, chúng ta có thể tạo ra ma trận OA(56; 7,
2 a ; 3) từ hai ma trận OA(40; 5 2 a ; 3) và OA(16; 2 a+1 ; 3) với a ≤ 6
Phương pháp này hoàn toàn có thể mở rộng ra để xếp kề nhiều các ma trận trực giao với nhau, chứ không chỉ đơn giản là xếp kề hai ma trận
Bốn phương pháp nêu trên thuộc về nhóm các phương pháp cơ bản và chỉ là các phép biến đổi thông thường ở các ma trận trực giao Để tìm ra các ma trận trực giao khác, chúng ta cần các phương pháp phức tạp hơn sẽ được trình bày ở phần sau đây
2.5 Phương pháp số học (arithmetic method)
Phương pháp số học là một phương pháp được đề xuất đầu tiên trong [3] Phương pháp này khởi tạo nên các ma trận trực giao mới bằng cách mở rộng từ
các thiết kế nhân tố đầy đủ Gọi D = [S 1 | |S d ] là một thiết kế nhân tố đầy đủ không lặp lại với kiểu thiết kế là r 1 , r 2 ,…, r d , d >= 3, r 1 , r 2, …, r d >= 2 và cột S i
tương ứng với nhân tố Q i Chọn s>= 2 sao cho s là thừa số của N/ r i r j cho bất kỳ
cặp i, j nào vói i, j = 1, , d Phương pháp này sẽ tạo thêm một cột vector X cho
D, nghĩa là tạo ra [S 1 | |S d |X] sao cho ma trận này là ma trận trực giao có trọng
số là 3: OA(N; r 1 ,r 2 ,…,r d , s; 3) Chúng ta có thể mở rộng hơn để tìm ra các ma trận OA(N; r 1 ,r 2 ,…,r d , s m ; 3) vói m>1
Ta gọi u là một vector u bất kỳ thuộc D, ta có u:=(u 1 , u 2 , …, u d ) Bởi vì D là một thiết kế đầy đủ nên cột X sẽ được xác định
)
(,
Trang 22Phan Hữu Trọng Hiền Trang 14
X
f (u) = h(u) = c 1 u 1 + c 2 u 2 + …+ c d u d (mod n)
Ở đây, c 1 , c 2 , …, c d là các hệ số mà chúng ta sẽ xác định và n là bội số chung
nhỏ nhất của r 1 , r 2 , …, r d
Theo định nghĩa của ma trận trực giao trọng 3, với hai cột S i , S j bất kỳ trọng
D thì bộ ba S i , S j và X phải là trivial (bình thường) Nhìn kỹ hơn nữa, với hai k ý hiệu a, b bất kỳ thuộc S i , S j, chúng ta phải cấu hình f X (u) trong đó u là một vector chứa đựng a, b sao cho bộ ba (a,b, f X (u)) xuất hiện với cùng tần số Chúng ta gọi điều này là điều kiện phân bổ đồng nhất (uniform scattering condition) Điều kiện này là rất quan trọng để cho phép chúng ta xác định các hệ
số c 1 , c 2 , …, c d và f X
Bằng phương pháp số học, Nguyễn Văn Minh Mẫn đã tạo ra một vài ma trận
trực giao mới chẳng hạn như OA(96; 6.4 2 2 3 ; 3), OA(96; 3.4 2 2 5 ; 3) từ thiết kế đầy đủ D= OA(96;6.4 2 ;3) ban đầu
Phương pháp số học này là một phương pháp phức tạp, bài viết này chỉ trình bày những ý tưởng cơ bản của nó, nội dung chi tiết của nó xin xem thêm ở tài liệu tham khảo [3]
2.6 Phương pháp hình vuông Latin (Latin square method)
Hình vuông Latin là một hình vuông có kích thước n x n, các phần tử của hình vuông lấy giá trị trong khoảng 0, 1, , n-1 và mỗi giá trị này chỉ xuất hiện
2 1 0
0 2 1
Trang 23Chúng ta sẽ sử dụng các hình vuông Latin này để khởi tạo một vài ma trận trực giao trọng 3 Phương pháp này cũng áp dụng để mở rộng thêm vài cột vào
trong các thiết kế đều như phương pháp số học đã sử dụng Ví dụ, gọi k = OA(16;4 2 ;2) là thiết kế đầy đủ với kiểu thiết kế là 42 Chúng ta sẽ gắn thêm hai
cột g 1 , g 2 vào k để hình thành một ma trận mới:
[k|g 1 |g 2 ] = OA(16;4 2 2 2 ;2)
Ví dụ sau đây là một ví dụ của một ma trận trực giao có dạng mở rộng như vậy:
Bởi vì g1 và g2 có mức là 2 nên chúng sẽ lấy các giá trị nhị phân tập {0, 1}
Nếu chúng ta để ý đến các giá trị thập phân của từng bộ nhị phân g ij , h ij, chúng ta
sẽ tính toán ra một ma trận tương đương rất l ý thú sau đây: 1, 3, 2, 1, 3, 1, 0, 2, 2,
0, 1, 3, 0, 2, 3, 1 Điều lý thú ở đây là nếu chúng ta đặt dãy số kể trên vào một ma
trận 4 x 4, chúng ta sẽ có một hình vuông Latin:
Chúng ta định nghĩa khái niệm superimposed grid g*h là một ma trận 4 × 4 với các ô của nó lấy giá trị trong {0, 1, 2, 3} và cụ thể giá trị (g*h) tại hàng i, cột
j là giá trị dạng thập phân của số nhị phân (g ij h ij) Có một bổ đề đã chứng minh
rằng [k|g 1 |g 2 ] là một ma trận trực giao khi (g1*g2) là một hình vuông Latin
Thực tế phương pháp hình vuông Latin là một phương pháp phức tạp hơn phương pháp số học ở phần 4.5, tuy nhiên bài viết chỉ đưa ra một ví dụ cơ bản của phương pháp này Phương pháp này cũng được đề xướng đầu tiên trong [3]
Trang 24Phan Hữu Trọng Hiền Trang 16
Bằng việc sử dụng khái niệm hình vuông Latin, kết hợp với các phương pháp cơ bản khác như juxtaposing, tác giả đã xây dựng một vài ma trận trực giao mới như
OA(96; 6 4 2 2 a ; 3) cho a ≤ 5 và ma trận OA(80; 5 4 2 a ; 3) cho a ≤ 6
2.7 Một vài đánh giá
Các phương pháp xây dựng ma trận vừa nêu trên là các phương pháp toán học và cách thức hoạt động của chúng chính yếu là dựa vào định nghĩa của ma trận trực giao và cộng một vài giả định đặc biệt nào đó Ví dụ như chúng ta sử dụng giả định về hàm định nghĩa trong phương pháp số học là tuyến tính
Với việc sử dụng thêm các giả định đặc biệt như vậy, chúng ta đã làm hạn chế việc tìm kiếm tổng quan tất cả các ma trận trực giao Một nhược điểm khác của các phương pháp trên đó là chúng dựa trên l ý thuyết tổ hợp và chủ yếu là việc đếm các k ý hiệu Điều này đồng nghĩa với việc chúng luôn phụ thuộc vào một tập thông số cụ thể nào đó Điều này làm mất đi khả năng tổng quát hóa để có thể
áp dụng chúng trong các trường hợp khác Khi sử dụng các phương pháp này, chúng ta thu được một vài ma trận được mở rộng thêm từ các ma trận đã biết, tuy nhiên chúng ta vẫn không thể biết được là có bao nhiêu sự mở rộng có thể thu được
Thật ra cách tiếp cận xây dựng ma trận trực giao bằng các phương pháp tổ hợp đại số là một trong những phương pháp đầu tiên được sử dụng trên thế giới khi chúng ta làm việc với chúng Tuy nhiên phương pháp này như đã nói ở trên
đã tỏ ra là không thích hợp Do đó, chúng ta cần một phương pháp mới và tốt hơn để có thể tìm ra tất cả các ma trận được mở rộng Phương pháp này được gọi
là phương pháp đếm ma trận và sẽ được thảo luận ở phần sau
Trang 253 Đ ẾM CÁC MA TRẬN TRỰC GIAO
Sau khi chúng ta đã xem xét qua về các phương pháp cấu trúc nên các ma trận trực giao mới, chúng ta sẽ xem xét thêm một vấn đề khá thú vị, đó là đếm các ma trận trực giao Một câu hỏi được đặt ra, đó là có bao nhiêu ma trận trực giao với cùng một kiểu thiết kế và cùng một run size?
3.1 Đếm các lớp đẳng cấu
Một điều rất dễ nhận thấy, đó là số ma trận trực giao tồn tại ứng với cùng một kiểu thiết kế và một run size thông thường là rất lớn Nếu chúng ta muốn đếm hết tất cả các ma trận này, chúng ta phải dùng một phương pháp đặc biệt Và để giải
quyết cho vấn đề này, chúng ta cần phải sử dụng lý thuyết nhóm (group theory)
của toán học đại số Cụ thể ở đây ta sẽ phân loại các ma trận trực giao này vào
các lớp đẳng cấu (isomorphic class), và thay vì phải đếm hết tất cả các ma trận
như thế này, chúng ta chỉ cần đếm các lớp đẳng cấu này mà thôi
Ví dụ chúng ta xem xét một ma trận trực giao cụ thể OA(16;4.2 3 ;3) như hình
vẽ bên dưới Nếu chúng ta tráo đổi hai cột bất kỳ, hoặc trao đổi hai hàng bất kỳ hay hai k ý hiệu bất kỳ nào đó, ta sẽ tạo ra một vài ma trận trực giao mới Ta thấy rằng các ma trận trực giao này là tương đương và chúng ta có thể nói là các ma trận trực giao này đều thuộc vào một lớp đẳng cấu Đối với mỗi lớp đẳng cấu như vậy, chúng ta chỉ cần một phần tử bất kỳ để đại diện cho lớp đó Lúc này vấn đề
"Đếm ma trận trực giao" sẽ trở nên dễ dàng hơn: chúng ta chỉ cần đếm có bao nhiêu lớp đẳng cấu như vậy ứng với một bộ thông số cụ thể nào đó Ví dụ như hình vẽ bên dưới, chúng ta có rất nhiều ma trận trực giao ứng với một bộ thông
số cụ thể nào đó, tuy nhiên do có nhiều ma trận trực giao tương đương nhau nên thực sự chỉ có hai lớp ma trận trực giao đẳng cấu
Trang 26Phan Hữu Trọng Hiền Trang 18
Hiện nay, các cách thức đếm các lớp đẳng cấu được đưa ra trong [1] Phương pháp đầu tiên đó là phương pháp sắp thứ tự ma trận mà tôi sẽ trình bày trong chương 4: chúng ta sản sinh ra các ma trận trực giao “nhỏ nhất”, mỗi ma trận như vậy sẽ đại diện cho duy nhất một tập hợp các ma trận đẳng cấu với nhau (khái niệm ma trận nhỏ nhất sẽ trình bày kỹ trong chương 4) Phương pháp thứ hai là chúng ta chuyển đổi các ma trận trực giao thành một đồ thị và sau đó chúng ta sẽ dùng phương pháp "Tô màu đồ thị" để thực hiện tô màu các đồ thị này Việc kiểm tra tính đẳng cấu của các ma trận trực giao lúc này trở thành việc kiểm tra tính đẳng cấu của các đồ thị được tô màu của chúng Và lúc này việc đếm các lớp đẳng cấu ma trận trực giao được chuyển đổi thành đếm các đồ thị đẳng cấu được
tô màu
Trang 27Ma trận tạo ra khi trao đổi ký hiệu 1 và 3 ở cột đầu tiên
Bảng biểu diễn một vài ma trận trực giao tương đương nhau
3.2 Đếm các nhóm tự đẳng cấu
Thật ra việc đếm các ma trận trực giao không chỉ là đếm các lớp đẳng cấu
Đối với mỗi ma trận trực giao F, nhóm tự đẳng cấu (automorphism group) của
ma trận này, k ý hiệu Aut(F), là tập hợp tất cả các phép chuyển đổi (trao đổi hàng,
cột và ký hiệu) sao cho từ ma trận này có thể sinh ra lại chính nó:
Aut(F) = {g∈ G: F g = F}
Trang 28Phan Hữu Trọng Hiền Trang 20
trong đó G là tập hợp tất cả các phép chuyển đổi có thể có (trao đổi hàng, cột và
k ý hiệu) để tạo ra một ma trận trực giao này từ một ma trận trực giao khác
Như vậy từ mỗi lớp đẳng cấu, chúng ta sẽ phải đếm thêm số phần tử của nhóm tự đẳng cấu ứng với một ma trận trực giao đại diện cho lớp đẳng cấu đó là bao nhiêu
Một vài ví dụ của các kết quả đếm ma trận ứng với một vài ma trận có bộ thông số cụ thể trong [1] như sau:
N (run size) Kiểu thiết kế Số lớp đẳng
cấu
Kích cỡ của các nhóm tự đẳng cấu
Khái niệm nhóm tự đẳng cấu là một khái niệm phức tạp, do đó xin tham khảo thêm trong [1] để có thể hiểu rõ ràng hơn về khái niệm này Tuy nhiên do thời gian không cho phép, luận văn không thực hiện vào việc đếm các nhóm tự đẳng cấu này mà chỉ tập trung vào việc đếm các lớp đẳng cấu được nêu ra ở phần 3.1
3.3 Một số kết luận
Rõ ràng, vấn đề đếm các ma trận trực giao là một vấn đề rất thú vị và không
hề đơn giản Công trình mới nhất về việc đếm các ma trận trực giao là của tiến sĩ Nguyễn Văn Minh Mẫn, khoa Công nghệ thông tin, đại học Bách Khoa, thành phố Hồ Chí Minh Trong công trình này, ông đã tiến hành khảo sát gần hết tất cả các ma trận trực giao trọng 3 với run size N <=100 (cũng lưu ý rằng, vẫn còn một vài kết quả mở cho trường hợp các ma trận trọng 3 mà luận văn này sẽ cố gắng tìm ra được lời giải đó) Ngoài ra trong công trình của mình, ông cũng đã đề ra
Trang 29một phương pháp tổng quát để có thể đếm hết tất cả các ma trận trực giao Về tổng quan, phương pháp này có thể song song hóa được Do đó một hướng đi trong đề tài luận văn là nghiên cứu và hiện thực việc song song hóa giải thuật này
để có thể đếm được các ma trận trực giao mới chưa được xem xét có trọng 3 hay trọng 4
Trang 30Phan Hữu Trọng Hiền Trang 22
4 GIẢI THUẬT ĐẾM SẮP THỨ TỰ MA TRẬN
Nhiệm vụ của chính của luận văn là tìm ra các giải thuật song song hóa để có thể tìm ra các ma trận trực giao mới có trọng số là 3 và 4 Trong phần này tôi sẽ trình bày một giải thuật quan trọng để đếm các ma trận trực giao: phương pháp sắp thứ tự ma trận ([1]) Tuy nhiên trước khi giới thiệu về giải thuật này, trong phần 4.1 chúng ta sẽ định nghĩa một phép so sánh về mặt toán học hai ma trận trực giao bất kỳ có cùng run size và bộ thông số, sau đó chúng ta mới có thể tìm hiểu cặn kẽ về giải thuật sắp thứ tự ma trận trong phần 4.2 Phần 4.3 sẽ trình bày
sơ lược về các ma trận trực giao đã tìm ra được nhờ áp dụng phương pháp này Cuối cùng phần 4.4 sẽ đánh giá một cách sơ lược về phương pháp sắp thứ tự ma trận này
4.1 Định nghĩa phép so sánh hai ma trận trực giao
Các ma trận bao gồm nhiều cột Do đó để so sánh hai ma trận trực giao có cùng số run size và một bộ thông số cụ thể, chúng ta sẽ so sánh từng cột của chúng Việc so sánh này có tính chất giống hệt như là so sánh sắp xếp các từ trong từ điển: chúng ta so sánh tuần tự theo ưu tiên các cột từ trái qua phải, chỉ cần lần đầu tiên phát hiện ma trận nào có cột lớn hơn cột tương ứng của ma trận kia thì ma trận đó sẽ lớn hơn Còn việc so sánh cột thì chúng ta cũng so sánh theo dạng từ điển các ô theo tuần tự ưu tiên từ trên xuống dưới, chỉ cần lần đầu tiên một cột nào có một ô lớn hơn ô tương ứng của cột kia, ta sẽ nói cột đó lớn
hơn Định nghĩa cho phép so sánh hai cột (hai vector) như sau:
Cho hai vector u và v có cùng chiều dài N, ta nói u<v nếu và chỉ nếu tồn tại một chỉ số j, j∈{1,…, d-1} sao cho u[i]=v[i] ứng với tất cả 1≤i≤j và u[j]<u[j+1]
Định nghĩa cụ thể về sự so sánh hai ma trận như sau:
Trang 31Cho F = [c 1 , , c d ], F′ = [c′ 1 , , c′ d ] là hai ma trận bất kỳ có cùng một thông số, trong đó c i , c′ i là các cột Ta nói F nhỏ hơn F′, ký hiệu F<F′, nếu và chỉ nếu tồn tại một chỉ số j, j∈{1,…, d-1} sao cho c i = c′ I cho tất cả 1≤i≤j và
c j+1 <c′ j+1
Ví dụ sau sẽ chỉ ra hai cột u, v trong đó u<v:
1 0 0 0 U
1 0 0 0 U
1 1 0 0 V
1 1 0 0 V
U < V
Ví dụ sau đây sẽ chỉ ra hai ma trận F, F’ trong đó F<F’:
1 1
0 1
0 0
0 0
F
1 1
0 1
0 0
0 0
F
1 1
1 1
0 0
0 0
F’
1 1
1 1
0 0
0 0
F’
F < F’
Như vậy với định nghĩa phép so sánh như vậy, chúng ta luôn luôn có thể sắp thứ
tự hai ma trận bất kỳ có cùng chung một bộ thông số (cùng số hàng và bộ thiết kế) Điều này rất quan trọng để chúng ta có thể triển khai giải thuật đếm sắp thứ
tự ma trận
4.2 Ý tưởng giải thuật
Trong phương pháp này, chúng ta sẽ sản sinh ma trận mới bằng cách thêm lần lượt các cột mới vào Trong quá trình làm tìm kiếm này, chúng ta luôn bảm đảm rằng chỉ có các ma trận nhỏ nhất đại diện cho một lớp đẳng cấu ứng với một
Trang 32Phan Hữu Trọng Hiền Trang 24
bộ thông số được sinh ra Khi một ma trận được sinh ra, nó đã được so sánh với tất cả các ma trận đẳng cấu với nó (nhắc lại rằng khi chúng ta đảo các hàng, đảo cột của một ma trận trực giao, chúng ta sẽ thu được các ma trận đẳng cấu với ma trận ban đầu) Chỉ cần bất kỳ ma trận trực giao nào sinh ra lớn hơn một ma trận đẳng cấu với nó, nó sẽ bị loại Kết quả cuối cùng thu được của chúng ta luôn luôn là các ma trận nhỏ nhất vì nó nhỏ hơn tất cả các ma trận đẳng cấu với nó Mỗi ma trận nhỏ nhất như vậy đại diện duy nhất cho lớp đẳng cấu của nó Hình
vẽ sau đây sẽ cho ta thấy ý tưởng của giải thuật đếm sắp thứ tự ma trận
4.2.1 Giải thuật mở rộng cột
Giải thuật sắp thứ tự ma trận này sẽ dựa vào việc mở rộng từng cột của ma trận Do mỗi cột bao gồm nhiều giá trị trong mỗi hàng nên chúng ta sẽ thêm lần lượt các giá trị có thể có của mỗi ô trong cột mới Việc xem xét các giá trị ô ở hàng sau luôn phụ thuộc các giá trị đã được đặt vào các ô ở các hàng trước đó Nói rõ hơn là trong quá trình xem xét các giá trị cho từng ô, chúng ta luôn cố gắng làm cho các giá trị của hàng sau không nhỏ hơn các giá trị của hàng trước
Trang 33đó Khi đặt một giá trị vào một ô, chúng ta đếm xem tần suất của các bộ gồm t
giá trị của hàng đó đã vượt qua tần suất tối đa cho phép chưa Nếu tại mỗi ô có nhiều hơn một giá trị có thể đặt vào ô đó, ta sẽ lưu lại giá trị chưa xét trên Stack (để sau này quay lại) và tiếp tục chọn lựa một giá trị để phát sinh tiếp giá trị cho các ô tiếp theo Mô tả hình thức về giải thuật mở rộng cột như sau:
Tên giải thuật: Giải thuật mở rộng cột
Giả sử cột đang xét có mức là d, các giá trị có thể được xem
xét là j, j∈[0, d-1] Nếu hàng hiện hành khác với hàng trước nó, thì chúng ta sẽ xét các giá trị từ j từ 0 đến d-1 Tuy nhiên nếu hàng hiện hành bằng với hàng trước đó, chúng ta sẽ xét các giá trị j từ giá trị ô tướng ứng trước đó thêm một, cho đến giá trị d-1 (Điều này để đảm bảo hàng sau luôn có giá trị lớn hơn hàng trước đó)
Ta đặt lần lượt các giá trị j này vào, nếu như có bất kỳ bộ t
giá trị trong hàng hiện hành vượt quá tần suất tối đa cho phép thì giá trị j này vi phạm, ta xét cho các giá trị có thể khác của j (Xét cho j+1)
Nếu mỗi ô có nhiều hơn một giá trị có thể xem xét, cất các
giá trị này lên Stack
Lấy giá trị đầu tiên trên Stack ra, tiếp tục xét cho hàng kế
tiếp
o Khi đạt được đến hàng cuối cùng của cột, chúng ta sẽ có một ma trận trực giao mới có j cột, tuy nhiên nó phải là ma trận nhỏ nhất
Trang 34Phan Hữu Trọng Hiền Trang 26
để có thể chấp nhận là lời giải Do đó chúng ta sẽ đảo cột này với các cột khác có cùng mức với nó, ma trận đảo được đó lại được sắp xếp để xem có phải là ma trận nhỏ nhất hay không Nếu là ma trận nhỏ nhất thì chúng ta sẽ chấp nhận nó như là một lời giải tìm
ra ở cột mới đó
Lưu ý rằng việc mô tả giải thuật mở rộng cột này bằng toán học khá phức tạp ([1]), riêng trong tài liệu này, chúng tôi đã cố gắng trình bày giải thuật này dưới dạng lời viết cô đọng, tóm tắt Để tìm hiểu kỹ càng hơn, chúng ta có thể xem trong [1]
4.2.2 Đặc tả giải thuật đếm sắp thứ tự
Sau khi đã tìm hiểu được giải thuật mở rộng cột, chúng ta sẽ xem xét đặc tả hình thức của giải thuật đếm sắp thứ tự ma trận như sau:
Tên giải thuật: Giải thuật đếm sắp thứ tự ma trận
Input: Kiểu thiết kế U, run size N, trọng t
Output: Tất cả các ma trận trực giao nhỏ nhất ứng với bộ thông số U, N, t Process:
o Gọi F j là ma trận trực giao có j cột, d là số cột của các ma trận cần tính
o Khởi tạo ma trận đầu tiên có t cột, có nghĩa là ta có F t
o Khởi tạo stack Branch rỗng
Trang 35 Nếu j=d thì ghi nhận K là một lời giải
o Trả về tất cả các lời giải có được
4.3 Các kết quả đã sinh ra bằng phương pháp sắp thứ tự ma trận
Bằng phương pháp sắp thứ tự ma trận, nhiều ma trận mới đã được tìm ra
([1]) Có nhiều kết quả nhưng tôi chỉ xin liệt kê ra đây một số rất ít kết quả của
các ma trận trực giao trọng 3 có run size lớn hơn 64 như sau:
Run size (N) Kiểu thiết kế Trọng của ma
trận
Số lớp đẳng cấu đếm được