Một số phương pháp toán xây dựng các ma trận hadamard đến cấp 1000

103 46 0
Một số phương pháp toán xây dựng các ma trận hadamard đến cấp 1000

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA Khoa Khoa Học Ứng Dụng LUẬN VĂN THẠC SỸ Chuyên Nghành Toán Ứng Dụng Mã Nghành: 604636 Một số phương pháp Toán xây dựng ma trận Hadamard đến cấp 1000 GVHD: TS Nguyễn Văn Minh Mẫn HVTH: Nguyễn Trung Dũng MSHV: 02407156 TP.HỒ CHÍ MINH, - 2010 LỜI CẢM ƠN Lời xin trân trọng kính gửi đến Thầy hướng dẫn, TS Nguyễn Văn Minh Mẫn, lòng biết ơn chân thành sâu sắc Thầy ân cần tận tình hướng dẫn, giúp đỡ tơi nắm bước nghiên cứu giải đáp thắc mắc gặp phải Từ Thầy, tơi học lịng say mê nghiên cứu Toán học ứng dụng, tác phong làm việc khoa học nghiêm túc Tôi ghi nhớ lời dạy, bảo ân cần Thầy suốt q trình học tập hồn thành luận văn Tơi xin bày tỏ lịng biết ơn sâu sắc đến q Thầy, Cơ ngồi mơn Toán học ứng dụng trường Đại học Bách Khoa TP Hồ Chí Minh tận tình truyền đạt kiến thức, kinh nghiệm quý báu cho suốt thời gian học tập trường Chân thành cảm ơn Ban chủ nhiệm khoa khoa học ứng dụng, quý Thầy, Cô thuộc Phòng Quản lý Sau Đại học, thư viện trường Đại học Bách Khoa TP Hồ Chí Minh tạo điều kiện thuận lợi để tơi hồn thành chương trình học trình làm thủ tục bảo vệ luận văn tốt nghiệp Xin cảm ơn anh chị lớp Cao học Tốn Ứng Dụng Khóa 2007, anh chị nhóm SAM Thầy Mẫn Thầy Trần Nam Dũng tổ chức, động viên nhiệt tình giúp đỡ, đóng góp ý kiến quý báu cho báo cáo suốt thời gian qua Tôi xin gửi lời tri ơn đến gia đình tơi, người hết lịng lo lắng ln bên tơi lúc khó khăn nhất, người Cha già dù bị bệnh tật hành hạ động viên tơi n tâm cố gắng học Nay Cha khơng cịn để đền đáp công ơn trời biển Sau cùng, kiến thức thân cịn hạn chế nên luận văn khó tránh khỏi thiếu xót Tơi mong bảo quý Thầy, Cô góp ý chân thành bạn bè đồng nghiệp Tôi xin chân thành cảm ơn Thành phố Hồ Chí Minh, tháng năm 2010 Nguyễn Trung Dũng i TỔNG QUAN ĐỀ TÀI Luận văn hệ thống số kiến thức tảng tập trung vào phương pháp để xây dựng ma trận Hadamard có cấp đến 1000 trừ cấp chưa xây dựng 668, 716 892 Mỗi phương pháp chọn thích hợp để xây dựng số ma trận Hadamard khả vét cạn tất ma trận phương pháp xây dựng khơng khả thi Luận văn trình bày hai ứng dụng quan trọng ma trận Hadamard là: Ứng dụng 1: Xây dựng hàm Walsh xây dựng mã sửa lỗi truyền hình ảnh vệ tinh Ứng dụng 2: Xây dựng ma trận thiết kế thiết kế nhân tố nhị phân Việc lập trình tích hợp web bao gồm luận văn ii Mục lục KIẾN THỨC NỀN TẢNG 1.1 Ma trận Hadamard 1.2 Các tính chất phân loại 1.3 Lý Thuyết Ma Trận 1.4 Trường Hữu Hạn 1.5 Lý Thuyết Nhóm 10 1.5.1 1.5.2 Một số khái niệm Tác động nhóm lên tập hợp 10 12 1.6 Một Số Đối Tượng Thiết Kế Tổ Hợp 14 1.6.1 Thiết kế đối xứng 15 1.6.2 Các tập hiệu phụ 17 CÁC PHƯƠNG PHÁP XÂY DỰNG THÔNG DỤNG 19 2.1 Phương Pháp Sylvester 19 2.2 Phương Pháp Paley 20 2.3 Phương Pháp Williamson 27 2.4 Phương Pháp Baumert-Hall 36 2.5 Phương Pháp Goethals-Seidel 38 2.6 Phương Pháp Cooper-Wallis 43 2.7 Phương Pháp Miyamoto 44 MỘT SỐ PHƯƠNG PHÁP XÂY DỰNG ĐẶC BIỆT 3.1 Phương Pháp Phân Rã Chiến Thuật 47 47 3.1.1 Xây dựng ma trận Hadamard 51 3.1.2 Xây dựng ma trận Hadamard cấp 324 kiểu Bush 56 3.2 Phương Pháp Sử Dụng Các Tập Hiệu Phụ Nhau 58 iii MỤC LỤC MỘT SỐ ỨNG DỤNG 61 4.1 Trong Truyền Thơng Truyền Tín Hiệu 61 4.1.1 Hàm Walsh 61 4.1.2 Xây dựng mã sửa lỗi từ ma trận Hadamard 63 4.2 Ứng Dụng Trong Xây Dựng Thiết Kế Nhân Tố 66 4.2.1 Một số khái niệm mở đầu 67 4.2.2 Trong thiết kế nhân tố nhị phân đầy đủ 68 4.2.3 Trong thiết kế phần 69 CÁC TÍNH TỐN 72 5.1 Giới Thiệu GAP Và Các Tính Tốn 72 5.2 Giới Thiệu Trang Web Online Của Nhóm SAM 75 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 77 6.1 Kết Luận 77 6.2 Hướng Phát Triển 78 TÀI LIỆU THAM KHẢO 79 iv Danh sách hình vẽ 2.1 Phương pháp Paley 26 2.2 Phương pháp Williamson 35 2.3 Phương pháp Cooper-Wallis 44 2.4 Phương pháp Miyamoto 46 3.1 Phương pháp phân rã chiến thuật 51 4.1 Hàm Walsh xây dựng từ ma trận Sylvester-Hadamard cấp 62 5.1 Sơ đồ tính tốn xây dựng ma trận Hadamard 74 v DANH SÁCH HÌNH VẼ LỜI GIỚI THIỆU Trong khoa học kỹ thuật lĩnh vực kinh tế, sản xuất ta thường gặp toán như: làm để giảm thiểu tối đa lỗi truyền tín hiệu, thiết kế thí nghiệm cho chi phí thời gian ngân sách giảm thiểu cho kết tốt, Ma trận Hadamard sử dụng để giải toán Qua kỉ, kể từ Jacques Hadamard (1893) trước Sylvester (1867) đề cập đến toán ma trận Hadamard, ma trận ứng dụng rộng rãi nhiều lĩnh vực : điện tử, truyền hình ảnh, tin học, y học, sinh học, kinh tế, Do yêu cầu thực tế lượng thơng tin ngày tăng, địi hỏi cấp ma trận Hadamard xây dựng nâng lên bổ sung đầy đủ nhiều phương pháp toán học khác với trợ giúp hiệu máy tính Ngày nay, tốn xây dựng ma trận Hadamard thu hút nhiều nhà toán học quan tâm nghiên cứu ứng dụng quan trọng cấp chưa xây dựng với toán mở thú vị loại ma trận Các nghiên cứu nước: Trên giới có nhiều nhà tốn học Sylvester, Hadamard, J Seberry, Miyamoto, K.J Horadam, C Koukouvinos, Sloan, J Williamson, Paley, S.S Agaian, Dokovic, Janko, có nhiều đóng góp quan trọng nghiên cứu phương pháp xây dựng ma trận Bài toán viện nghiên cứu quan tâm Viện thống kê nông nghiệp Ấn Độ hoàn thành việc xây dựng ma trận Hadamard đến cấp 1000 từ năm 2007 (trừ số cấp đặc biệt chưa có phương pháp xây dựng 668, 716, 892) Ma trận Hadamard cấp 428 chưa xây dựng năm 2004 Trong nước, TS Nguyễn Văn Minh Mẫn xây dựng ma trận Hadamard đến cấp 600 năm 2005 (http://mathdox.org/mnguyen) Hiện có tài liệu nước viết ma trận Hadamard Nội dung nghiên cứu: Nghiên cứu chủ yếu tập trung vào việc xây dựng sở toán học cho số phương pháp xây dựng ma trận Hadamard đến cấp 1000 Mỗi phương pháp xây dựng họ ma trận Hadamard thoả mãn điều kiện cho trước Một ma trận Hadamard xây dựng từ nhiều phương pháp khác vi DANH SÁCH HÌNH VẼ Tùy theo dạng ma trận yêu cầu độ phức tạp thuật tốn mà ta chọn phương pháp phù hợp Ngồi việc xây dựng sở toán học cho phương pháp, nghiên cứu bao gồm việc lập trình, tích hợp kết lên trang web ứng dụng nhóm nghiên cứu SAM Các ứng dụng ma trận Hadamard có vai trị quan trọng nghiên cứu Luận văn giới thiệu hai ứng dụng : truyền hình ảnh thiết kế thí nghiệm nhân tố Phương pháp thực hiện: Các phương pháp xây dựng ma trận Hadamard dựa sở lý thuyết nhiều nhánh toán học như: Đại số tuyến tính, Lý thuyết số, Lý thuyết thiết kế tổ hợp, Do vậy, phương pháp thực đề tài sau : Các lý thuyết tảng thiết yếu tìm hiểu đề cập trước, thống ký hiệu cách gọi tên toàn luận văn Sau sâu tìm hiểu, chứng minh cho phương pháp xây dựng, nêu thuật toán lập trình kiểm thử Bố cục luận văn: • Chương 1: Trình bày khái quát ma trận Hadamard kiến thức sở cho phương pháp chương chương • Chương 2: Nêu phương pháp xây dựng thường dùng Các phương pháp chủ yếu dựa lý thuyết ma trận lý thuyết trường hữu hạn • Chương 3: Trình bày hai phương pháp sử dụng lý thuyết nhóm lý thuyết thiết kế tổ hợp là: Phương pháp dựa phân rã chiến thuật thiết kế đối xứng phương pháp dựa tập hiệu phụ • Chương 4: Giới thiệu hai ứng dụng quan trọng ma trận Hadamard • Chương 5: Trình bày tính tốn giới thiệu trang web online ma trận Hadamard • Chương 6: Nêu kết luận hướng phát triển đề tài vii Chương KIẾN THỨC NỀN TẢNG Chương trình bày lý thuyết ma trận Hadamard kiến thức sở để xây dựng phương pháp tìm kiếm 1.1 Ma trận Hadamard [TLTK : 1, 2, 3, 5, 11, 16, 19] Định nghĩa 1.1 Một ma trận vuông H cấp n , với phần tử hay −1 hai dịng (cột) phân biệt trực giao (theo nghĩa tích vơ hướng 0), gọi ma trận Hadamard Ví dụ Các ma trận sau ma trận Hadamard    −1 1     1    −1   [1] ;  ;    1 −1 1 −1    1 −1        ;      Từ trở ta kí hiệu: ’+’ thay cho ’1’ ’-’ thay cho ’-1’ biểu diễn ma trận Hadamard nhằm đảm bảo tính cân xứng Hn để ma trận Hadamard cấp n 1n vec tơ cột gồm n phần tử có giá trị 1; Jn ma trận vng cấp n có tất phần tử 1 1.2 CÁC TÍNH CHẤT VÀ PHÂN LOẠI Một ma trận có phần tử lấy giá trị tập S = {−1, 1} gọi (-1,1)-ma trận Tương tự S = {0, −1, 1} ta có (0,-1,1)-ma trận Tổng qt ta kí hiệu S-ma trận Năm 1893 Hadamard xét toán định thức lớn ma trận vng có phần tử thuộc đĩa trịn bán kính tập phức Định lý sau trường hợp riêng toán xét tập số thực với phần tử ma trận lấy tập {−1, 1} Định lý 1.2 Giả sử An = (aij ) ma trận vng thực cấp n có phần tử aij ∈ {−1, 1} với i, j = 1, 2, , n Thì |det (An ) | ≤ nn/2 Bất đẳng thức có dấu An ma trận Hadamard cấp n Chứng minh Giả sử An = [a1 a2 an ]t , với , i = 1, , n, dòng An Như hình học Euclide, |det(Hn )| thể tích khối hộp với kích thước chiều tương ứng |a1 |, |a2 |, , |an | , |.| độ dài Euclide Vậy |det(An )| = | σ∈Sn sgn(σ).a1σ(1) anσ(n) | ≤ |a1 | |a2 | |an | Biểu thức có dấu (đạt giá trị lớn nhất) a1 , a2 , , an đôi trực giao Vì aij ∈ {−1, 1} nên |ai | = a2i1 + a2i2 + + a2in = n1/2 Từ |det (A) | ≤ nn/2 , |det (An ) | = nn/2 An ma trận Hadamard Nhận xét: H ma trận Hadamard tương đương với điều kiện HH t = nIn Định nghĩa 1.3 Một ma trận Hadamard Hn có phần tử dòng đầu cột đầu , gọi ma trận Hadamard chuẩn hóa Nếu Hn có phần tử cột đầu gọi ma trận Hadamard bán chuẩn 1.2 Các tính chất phân loại Một số tính chất Cho ma trận Hadamard Hn Ta có n |det(Hn )| = n Hnt ma trận Hadamard Phụ lục: Chương Trình Tính Tốn fi; end; # lay tap thang du bac hai GetQuadSetPrime := function(q) local i, j, S; S:=[]; for i in GF(q) if quad_character(i,q)=1 then j:=Int(i); Add(S,j);fi; od; return S; end; # -sinh core -generate_core := function(s) local q, Q, W, e, b, i, h, h_index, f, j, H, G, a; q:= s; G := GF(q); a := Z(q); Q := NullMat(q,q); for i in [1 q-1] for j in [1 q-1] h := a^i - a^j; Q[i][j] := quad_character(h,q); od; od; for i in [1 q-1] h := a^i; h_index := LogFFE(h,a); if (h_index mod 2) = then if q mod = then Q[i][q] := 1; Q[q][i] := 1; fi; if q mod = then Q[i][q] := 1; Q[q][i] := -1; fi; else if q mod = then Q[i][q] := -1; Q[q][i] := -1; fi; if q mod = then Q[i][q] := -1; Q[q][i] := 1; fi; fi; od; return (Q); end; # generate_sym := function(s) local Q, e, i, j, q, P; q:= s; Q := generate_core(q); e := List([1 q], x->1); P := NullMat(q +1, q+1); P[1][1] := 0; for i in [2 q+1] P[1][i] := e[i-1]; P[i][1] := e[i-1]; od; for i in [2 q+1] for j in [2 q+1] P[i][j] := Q[i-1][j-1]; od; od; 83 Phụ lục: Chương Trình Tính Tốn return (P); end; # Kiem tra tinh doi xung SymTest := function (H) local i, j, n, flag; n:=Size(H[1]); flag := true; for i in [1 n] for j in [1 n] if H[i][j] = H[j][i] then continue; else flag := false; break; fi; od; od; return flag; end; # -Kiem tra tinh deu: tong dong, tong cot khong doi -RegularTest := function (H) local i, j, n, s1, s2, flag; n:=Size(H[1]); flag := true; s1:=0; for j in [1 n] s1:=s1 + H[1][j];od; for i in [2 n] s2:=0; for j in [1 n] s2:= s2 + H[i][j]; od; if s2 = s1 then continue; else flag := false; break; fi; od; return flag; end; # Kiem tra ma tran co tinh Conference : C*C^T = (n-1)I_n -ConferenTest := function(C) local n; n:=Size(C[1]); for i in[1 n] if C[i][i]0 then return false; fi; od; if (C*TransposedMat(C))= (n-1)*IdentityMat(n) then return true; else return false; fi; end; # Kiem tra cac T-ma tran :la cac ma tran {0,-1,1} thoa # (1) T_{i}T_{j} = 0; # (2) \sum_{i=1}^{4} |T_{i}| = J; # (3) \sum_{i=1}^{4} T_{i}T_{i}^{T} = nI_{n}; TMatricesTest := function(A,B,C,D) local i, j, n, t; n:=Size(A[1]); for i in[1 n] for j in [1 n] if (A[i][j]=B[i][j] and A[i][j] 0) or (B[i][j]=C[i][j] and B[i][j] 0) or (A[i][j]=C[i][j] and A[i][j] 0) then return false; fi; if (AbsInt(A[i][j]) + AbsInt(B[i][j]) + AbsInt(C[i][j]) + AbsInt(D[i][j])) then return false; fi; od; od; 84 Phụ lục: Chương Trình Tính Tốn if (A*TransposedMat(A) + B*TransposedMat(B) + C*TransposedMat(C) + D*TransposedMat(D)) n*IdentityMat(n) then return false; fi; return true; end; # -Kiem tra ma tran Hadamard kieu Bush -BushHadMatTest := function(M) local i,j,k,t,s,n,m,J,O,H, T; n:=Size(M[1]); m:= Sqrt(n/4); s:=2*m; if IsInt(m) then if RegularTest(M) then J:=NullMat(s,s); O := NullMat(s,s); for i in[1 s] for j in [1 s] J[i][j] := 1; od; od; #H:= AsBlockMatrix(M,2*m, 2*m); H:=NullMat(s,s);T:=NullMat(s,s); for i in[1 s] for j in [1 s] for k in[1 s] for t in [1 s] T[k][t]:= M[s*(i-1)+k][s*(j-1) + t]; od;od; H[i][j] :=T; od;od; for i in[1 s] for j in [1 s] if (H[i][i]= J) then continue; else return false; fi; if (ij) and (H[i][j]*J = O) and (J*H[i][j] = O) then continue; else return false; fi; od;od; return true; else return false; fi; else return false; fi; end; # - Kiem tra ma tran Hadamard : H_n*H_n^T = nI_n -HadamardTest := function (H) local n; n:=Size(H[1]); if (H*TransposedMat(H)) = (n*IdentityMat(n)) then return(true); else return(false); fi; end; # Phan tich 4n tong cua binh phuong # -foursq := function(n) local a,i,j, k,l,S; S :=[]; a:= n/4; if (a mod 2) = then else for i in [1 a] for j in [i a] 85 Phụ lục: Chương Trình Tính Tốn for k in [j a] for l in [k a] if (i*i + j*j + k*k + l*l = n) and (i mod = 1) and (j mod = 1) and (k mod = 1) and (l mod = 1) then Add(S,[i,j,k,l]); fi; od; od; od; od; fi; return S; end; # Tim cac dong dau cua cac ma tran Williamson: Find #-Input: so : a, b, c, d : a2 + b2 + c2 +d2 = 4m = n, voi m la cap cua cac ma tran Williamson A, B, C, D #-Output: Neu tim duoc lan dau, tra ve List chua cac phan tu dong dau cua A, B, C, D dang doi xung; signNum := function(a) if a mod = then return a; elif a mod = then return -a; fi; end; # -Xay dung mang Williamson tu ma tran A, B, C, D WillArray := function(A,B,C,D) local i, j,i1,j1, k,n, H1, H; n:=Size(A[1]); H1:=NullMat(4,4); # thay vao mang Will H1[1][1]:= A; H1[1][2]:= B; H1[1][3]:= C; H1[1][4]:= D; H1[2][1]:= -B; H1[2][2]:= A;H1[2][3]:= -D;H1[2][4]:= C; H1[3][1]:= -C; H1[3][2]:= D;H1[3][3]:=A;H1[3][4]:= -B; H1[4][1]:= -D; H1[4][2]:= -C;H1[4][3]:=B;H1[4][4]:=A; #thu duoc ma tran H H:=NullMat(4*n, 4*n); for i in [1 4] for j in [1 4] for i1 in [1 n] for j1 in [1 n] H[n*(i-1)+i1][n*(j-1)+j1]:= H1[i][j][i1][j1]; od;od;od;od; if HadamardTest(H) then return H; else return false; fi; end; # Ham tuong quan khong tuan hoan: NPA NPA := function(L, s) #-Input: List L = [a1, a2, ,an] dong dau cua matran A # - va s: vi tri tuong quan List L #-Output: \sum {i = 1} {n-s} {ai*ai+s} ung voi gia tri s {0, ,n1} local i,j,n,S; S:=0; n:= Size(L); if s > (n-1) then return 0; else 86 Phụ lục: Chương Trình Tính Tốn for i in [1 (n-s)] S:= S + L[i]*L[i+s]; od; return S; fi; end; # Cac day co ban : BS -BS := function(A,B,C,D) #-Input: List A, B, C,D dai n+p, n+p, n, n : {+1,-1} #-Output: Tra ve true neu la day co ban; false: nguoc lai; local i,j,s, np, flag; np := Size(A); #n := Size(C); flag := true; for s in [1 np] if (NPA(A,s) + NPA(B,s) + NPA(C,s) + NPA(D,s))0 then flag := false; break; fi; od; return flag; end; # Cac day T : TS TS := function(A,B,C,D) #-Input: List A, B, C,D dai n : {0,+1,-1} #-Output: Tra ve true neu la day T; false: nguoc lai; #code: giong BS local i,j,s, n, flag; n := Size(A); flag := true; for s in [1 n] if (NPA(A,s) + NPA(B,s) + NPA(C,s) + NPA(D,s))0 then flag := false; break; fi; od; return flag; end; # Cac day kieu Turyn: TTS TTS := function(X,Y,Z,W) #-Input: List X, Y, Z, W dai n, n, n, n-1 : {+1,-1} #-Output: Tra ve true neu la day kieu Turyn; false: nguoc lai; local i,j,s, n, flag; n := Size(X); flag := true; for s in [1 n] if (NPA(X,s) + NPA(Y,s) + 2*NPA(Z,s) + 2*NPA(W,s)) 0 then flag := false; break; fi; od; return flag; end; # -Xay dung cac ma tran Goethals-Seidel tu cac day T -GSmatrices := function(A,B,C,D) 87 Phụ lục: Chương Trình Tính Tốn local T1,T2,T3,T4, A1,A2,A3,A4,n; n:=Size(A); A1:=NullMat(n,n);A2:=NullMat(n,n); A3:=NullMat(n,n);A4:=NullMat(n,n); T1:=circulantMat(A);T2:=circulantMat(B); T3:=circulantMat(C);T4:=circulantMat(D); A1:= T1+T2+T3+T4;A2:= -T1+T2+T3-T4; A3:= -T1-T2+T3+T4;A4:= -T1+T2-T3+T4; return [A1,A2,A3,A4]; end; # -Ham xay dung mang GS tu ma tran cap n: GSArray -GSArray := function(A,B,C,D) local i, j,i1, j1, k, n,r,R,H1, H; n:= Size(A[1]);r:=List([1 n],x->0);r[n]:=1;R:=backcirculantMat(r); H1:=NullMat(4,4); # thay vao mang GS H1[1][1]:=A; H1[1][2]:=B*R; H1[1][3]:=C*R; H1[1][4]:=D*R; H1[2][1]:=-B*R; H1[2][2]:=A;H1[2][3]:=TransposedMat(D)*R; H1[2][4]:=-TransposedMat(C)*R; H1[3][1]:=-C*R; H1[3][2]:=-TransposedMat(D)*R; H1[3][3]:=A;H1[3][4]:=TransposedMat(B)*R; H1[4][1]:=-D*R; H1[4][2]:=TransposedMat(C)*R; H1[4][3]:=-TransposedMat(B)*R;H1[4][4]:=A; #thu duoc ma tran H H:=NullMat(4*n, 4*n); for i in [1 4] for j in [1 4] for i1 in [1 n] for j1 in [1 n] H[n*(i-1)+i1][n*(j-1)+j1]:= H1[i][j][i1][j1]; od;od;od;od; if HadamardTest(H) = true then return H; else return false; fi; end; # Ham kiem tra tap S1,S2,S3,S4 (khong chua 0) co la mot Supplementary Difference Set tren tap G cap v cho truoc -TestSDS := function(S1,S2,S3,S4,G,ld) local i, j, ds1,ds2,ds3,ds4, v; v := Size(G); ds1:=[];ds2:=[];ds3:=[];ds4:=[]; for i in S1 for j in S1 if i j then Add(ds1,i-j); fi; od; od; for i in S2 for j in S2 if i j then Add(ds2,i-j); fi; od; od; for i in S3 for j in S3 if i j then Add(ds3,i-j); fi; od; od; for i in S4 for j in S4 if i j then Add(ds4,i-j); fi; od; od; for i in G if Size(Positions(ds1,i))+Size(Positions(ds1,i))+Size(Positions(ds1,i))+Size (Positions(ds1,i)) ld then return false; fi; od; return true; end; ########################################################## 88 Phụ lục: Chương Trình Tính Tốn II CÁC HÀM XÂY DỰNG MA TRẬN HADAMARD ########################################################## # PP SYLVESTER 1967 SylMethod := function() local H, Hn, i, k,l, Hk, Hl,C,Hlist, s1, m; H:=[]; H[1]:=[[1, 1],[1, -1]]; # -Xay dung cac ma tran la luy thua cua : dang 2^k for i in [2 10] H[i]:= KroneckerProduct(H[1],H[i-1]); s1:="/home/trungdung/Desktop/Link to hadamard/Sylvester/SylHad"; Append(s1,String(i)); Append(s1,".txt"); PrintTo(s1,H[i+1]); od; end; # -PP PALEY: 1933 # -H cp cap n = 2(q+1) -Paley2 := function(q) local i, j, f, k, I, H, n, P; n := 2*(q+1); I := IdentityMat(q+1); H := NullMat(n,n); P := generate_sym(q); k := [[1, 1],[1, -1]]; f := [[1, -1],[-1, -1]]; H := KroneckerProduct(P,k) + KroneckerProduct(I,f); if HadamardTest(H) then return (H); else return false; fi; end; # -H co cap n = q+1 Paley1 := function(q) local P, Q, i, j, n, I, H; n := q + 1; I := IdentityMat(n); H := NullMat(n,n); P := NullMat(n,n); Q := generate_core(q); P[1][1] := 0; for i in [2 n] P[i][1] := -1; P[1][i] := 1; od; for i in [2 n] for j in [2 n] P[i][j] := Q[i-1][j-1]; od; od; H := P + I; if HadamardTest(H) then return (H); else return false;fi; end; PaleyMethod := function() local i, s1,n; for n in P2Hlist i:=n/2 - 1; s1:= "/home/trungdung/Desktop/Link to hadamard/Paley2/P2Had"; Append(s1,String(n)); Append(s1,".txt"); PrintTo(s1,Paley2(i)); od; for n in P1Hlist 89 Phụ lục: Chương Trình Tính Tốn i := n-1; s1:= "/home/trungdung/Desktop/Link to hadamard/Paley1/P1Had"; Append(s1,String(n)); Append(s1,".txt"); PrintTo(s1,Paley1(i)); od; end; # -Williamson method: 1944,1947 WillMethod := function (n) local i,l,s, s1,S,T,A,B,C,D,X,Y,Z,W,H,WH; s:=(n-1)/2; T:=FindListT(n); WH :=[]; if T[] then A:=List([1 n],i->1);B:=List([1 n],i->1);C:=List([1 n],i>1);D:=List([1 n],i->1); #X:=NullMat(n,n); Y:=NullMat(n,n); Z:=NullMat(n,n);W:=NullMat(n,n); for l in [1 Size(T)] #tu moi nghiem T tim lai cac he so cua cac ma tran Williamson for i in [1 s] A[i+1]:= -T[l][1][i] + T[l][2][i] + T[l][3][i] + T[l][4][i]; B[i+1]:= T[l][1][i] - T[l][2][i] + T[l][3][i] + T[l][4][i]; C[i+1]:= T[l][1][i] + T[l][2][i] - T[l][3][i] + T[l][4][i]; D[i+1]:= T[l][1][i] + T[l][2][i] + T[l][3][i] - T[l][4][i]; A[n-i+1] := A[i+1]; #do gia su cac ma tran Williamson doi xung B[n-i+1] := B[i+1]; C[n-i+1] := C[i+1]; D[n-i+1] := D[i+1]; od; #xay dung cac ma tran Williamson circulant, symmetric X := circulantMat(A); Y := circulantMat(B); Z := circulantMat(C); W := circulantMat(D); if WillArray(X,Y,Z,W) false then H:= WillArray(X,Y,Z,W);PrintArray(H*TransposedMat(H)); Print("\n");Add(WH, H);fi; od; fi; if WH [] then return WH; else return false; fi; end; # -Baumert-Hall : 1965 -BHMethod := function(n) #-Input: cap ma tran Hadamard can xay dung n #mang BaumertHall cap 12, 36, 20 #-Output: ma tran Hadamard cap n local i,s1, BA, H,A,B,C,D; for i in [1 Size(LWSeqs)] if (n/36 = LWSeqs[i][1]) then A:=circulantMat(LWSeqs[i][2]); B:=circulantMat(LWSeqs[i][3]); C:=circulantMat(LWSeqs[i][4]); D:=circulantMat(LWSeqs[i][5]); BA:= BH(36); 90 Phụ lục: Chương Trình Tính Tốn elif (n/12 = LWSeqs[i][1]) then A:=circulantMat(LWSeqs[i][2]); B:=circulantMat(LWSeqs[i][3]); C:=circulantMat(LWSeqs[i][4]); D:=circulantMat(LWSeqs[i][5]); BA:= BH(12); else return false; fi; od; H:= MatrixByBlockMatrix(BA); if HadamardTest(H) then s1:= "/home/trungdung/Desktop/Link to hadamard/BaumertHall/BHHad"; Append(s1,String(n)); Append(s1,".txt"); PrintTo(s1,H); return H; else return false; fi; end; # -Xay dung ma tran Hadamard tu cac TS: GSMethod : 1967 GSMethod := function(n) #-Input: cap ma tran H can xay dung: n #-Output: Ma tran H local i,s1,A, B, C, D, A1, B1, C1, D1,AB,BB,CB,DB,H,X,Y,Z,W; #LB: list chua cac day base co cau truc phan tu: [n, A,B,C,D] #LT: list chua cac day kieu Turyn co cau truc phan tu: [n, A,B,C,D]; # dung cac ham FindBS, FindTS, FindTTS de tim cac day tuong ung chua vao cac list LB, LT, LTu #noi chung it dung FindTS vi so to hop lon; if n in [188,236,260] then for i in [1 Size(LBSeqs)] if ((n-4)/8) = LBSeqs[i][1] then AB:=LBSeqs[i][5]; BB:=LBSeqs[i][6]; CB:=LBSeqs[i][7]; DB:=LBSeqs[i][8]; # cac day base A1:= BStoTS(AB,BB,CB,DB)[1];B1:= BStoTS(AB,BB,CB,DB)[2]; C1:= BStoTS(AB,BB,CB,DB)[3];D1:= BStoTS(AB,BB,CB,DB)[4]; fi; od; elif n in [428] then for i in [1 Size(LTuSeqs)] if ((n+4)/12) = LTuSeqs[i][1] then X:=LTuSeqs[i][5]; Y:=LTuSeqs[i][6]; Z:=LTuSeqs[i][7]; W:=LTuSeqs[i][8]; # cac day kieu Turyn AB:=TTStoBS(X,Y,Z,W)[1]; BB:=TTStoBS(X,Y,Z,W)[2]; CB:=TTStoBS(X,Y,Z,W)[3]; DB:=TTStoBS(X,Y,Z,W)[4]; A1:= BStoTS(AB,BB,CB,DB)[1];B1:= BStoTS(AB,BB,CB,DB)[2]; C1:= BStoTS(AB,BB,CB,DB)[3];D1:= BStoTS(AB,BB,CB,DB)[4]; fi;od; elif (n in [124,156,172,196,220,228,244,268,284,340,348,364,372]) then for i in [1 Size(LTSeqs)] if (n/4) = LTSeqs[i][1] then A1:=LTSeqs[i][2]; B1:=LTSeqs[i][3]; C1:=LTSeqs[i][4]; D1:=LTSeqs[i][5]; # cac day T fi; od; else #cac truong hop khac, tim cac day tuong ung 91 Phụ lục: Chương Trình Tính Tốn FindTTS(n); fi; A:= GSmatrices(A1,B1,C1,D1)[1];B:= GSmatrices(A1,B1,C1,D1)[2]; C:= GSmatrices(A1,B1,C1,D1)[3];D:= GSmatrices(A1,B1,C1,D1)[4]; H:=GSArray(A,B,C,D); if HadamardTest(H) then s1:= "/home/trungdung/Desktop/Link to hadamard/GoethalsSeidel/GSHad"; Append(s1,String(n)); Append(s1,".txt"); PrintTo(s1,H); return H; else return false; fi; end; # -Cooper-Walis method: 1972 -Xay CWMethod := function(N) local i,j,s1,H,X,Y,Z,W, T1,T2,T3,T4,A,B,C,D,m,n; for i in [1 Size(LTSeqs)] for j in [1 Size(LWSeqs)] if (LTSeqs[i][1]*LWSeqs[j][1]= (N/4)) and (LTSeqs[i][2][]) and (LWSeqs[j][2][]) then m:= LTSeqs[i][1]; n := LWSeqs[j][1]; T1:=NullMat(m,m);T2:=NullMat(m,m); T3:=NullMat(m,m);T4:=NullMat(m,m); A:=NullMat(n,n);B:=NullMat(n,n); C:=NullMat(n,n);D:=NullMat(n,n); T1:=circulantMat(LTSeqs[i][2]); T2:=circulantMat(LTSeqs[i][3]); T3:=circulantMat(LTSeqs[i][4]); T4:=circulantMat(LTSeqs[i][5]); A:=circulantMat(LWSeqs[j][2]); B:=circulantMat(LWSeqs[j][3]); C:=circulantMat(LWSeqs[j][4]); D:=circulantMat(LWSeqs[j][5]); fi; od;od; X:= KroneckerProduct(T1,A) + KroneckerProduct(T2,B)+ KroneckerProduct(T3,C)+ KroneckerProduct(T4,D); Y:= KroneckerProduct(T1,-B) + KroneckerProduct(T2,A)+ KroneckerProduct(T3,D)+ KroneckerProduct(T4,-C); Z:= KroneckerProduct(T1,-C) + KroneckerProduct(T2,-D)+ KroneckerProduct(T3,A)+ KroneckerProduct(T4,B); W:= KroneckerProduct(T1,-D) + KroneckerProduct(T2,C)+ KroneckerProduct(T3,-B)+ KroneckerProduct(T4,-A); H:= GSArray(X,Y,Z,W); if HadamardTest(H) then s1:= "/home/trungdung/Desktop/Link to hadamard/CooperWallis/CWHad"; Append(s1,String(N)); Append(s1,".txt"); PrintTo(s1,H); return H; else return false; fi; 92 Phụ lục: Chương Trình Tính Tốn end; # Miyamoto method: 1991 MiyaMethod := function(n) local i, j,i1,j1, k, q, m, A, C1, C2, C4, KH, K1, K2, K3, K4, U, V, X, H, O,I, T, M, N,t,s1; q := n/4; # q mod = m:=(q-1)/2; # Neu ton tai ma tran Hadamard KH = [[K1, K2],[-K3, K4]] cap q-1 = 2m thi ton tai ma tran Hadamard H cap n = 4q if IsPrimePowerInt(q-2) then KH:= Paley1(q-2); #sinh ma tran Hadamard cap q-1 bang method Paley_skew;(q-2) mod = 3; fi; if (q-1)=112 then KH:= KroneckerProduct(Paley_skew(27), [[1,1,1,-1],[1,1,1,1],[1,-1,1,1],[1,1,-1,1]]); fi; if (q-1)=148 then KH:=Paley2(73);fi; if (q-1)=232 then KH:= KroneckerProduct(MiyaMethod(116), [[1,1],[1,1]]);fi; if (q-1)=88 then KH:= KroneckerProduct(Paley1(43), [[1,1],[-1,1]]);fi; if (q-1)=100 then KH:= Paley2(49); fi; KH:= normH(KH);t:=0; for i in[1 (q-1)] t:=KH[i][3]; KH[i][3] := KH[i][4]; KH[i][4]:=t; od; # -Tinh cac ma tran K1:=NullMat(m,m); K2:=NullMat(m,m); K3:=NullMat(m,m); K4:=NullMat(m,m); for i in [1 m] for j in [1 m] K1[i][j]:= KH[i][j]; od;od; for i in [1 m] for j in [(m+1) (2*m)] K2[i][j-m]:= KH[i][j]; od;od; for i in [(m+1) (2*m)] for j in [1 m] K3[i-m][j]:= -KH[i][j]; od;od; for i in [(m+1) (2*m)] for j in [(m+1) (2*m)] K4[i-m][j-m]:= KH[i][j]; od;od; #PrintArray(K1);Print("\n"); # sinh ma tran A de dua ve dang [[0, e^T,-e^T],[e, -C1, C2],[-e, C2^T, C4]] A:= generate_coreM(q); # ma tran A co cap q; # Tinh cac ma tran con: C1:=NullMat(m,m); C2:=NullMat(m,m); C4:=NullMat(m,m); for i in [2 (m+1)] for j in [2 (m+1)] C1[i-1][j-1]:= -A[i][j]; od;od; for i in [2 (m+1)] for j in [(m+2) q] C2[i-1][j-m-1]:= A[i][j]; od;od; for i in [(m+2) q] for j in [(m+2) q] C4[i-m-1][j-m-1]:= A[i][j]; od;od; # Xay dung cac ma tran khoi U, V O:=NullMat(m,m); #ma tran zero 93 Phụ lục: Chương Trình Tính Tốn I := IdentityMat(m); U:= NullMat(4,4); V:= NullMat(4,4); U:=[[C1, C2, O, O],[TransposedMat(C2), C4, O , O],[O, O, C1, C2],[O, O, TransposedMat(C2), C4]]; #-PrintArray(U[3][3]);Print("\n"); V:=[[I, O, K1, K2],[O, I, K3, K4],[TransposedMat(K1), TransposedMat(K3), I, O],[TransposedMat(K2), TransposedMat(K4), O, I]]; #-PrintArray(V[3][3]);Print("\n"); # Tinh cac ma tran Tij -T:= NullMat(4,4); X:= NullMat(4,4); for i in [1 4] for j in [1 4] T[i][j]:= KroneckerProduct(U[i][j], [[1,1],[1,1]]) + KroneckerProduct(V[i][j], [[1,-1],[-1,1]]); # -Tinh cac ma tran Xij if i j then M:=NullMat(q,q);M[1][1]:=1; for i1 in [2 q] M[1][i1]:=1; M[i1][1]:=1; for j1 in [2 q] M[i1][j1]:= T[i][j][i1-1][j1-1]; od; od; X[i][j] := M; else M:=NullMat(q,q); M[1][1]:=1; for i1 in [2 q] M[1][i1]:=-1; M[i1][1]:=-1; for j1 in [2 q] M[i1][j1]:= T[i][i][i1-1][j1-1]; od; od; X[i][i] := M; fi; od; od; # -Tinh ma tran H H:=NullMat(n, n); for i in [1 4] for j in [1 4] for i1 in [1 q] for j1 in [1 q] if ((i=2) and (j=1)) or ((i=3) and (j=1)) or ((i=3) and (j=2)) or ((i=4) and (j=1)) or ((i=4) and (j=3))or ((i=2) and (j=4)) then H[q*(i-1)+i1][q*(j-1)+j1]:= -X[i][j][i1][j1]; else H[q*(i-1)+i1][q*(j-1)+j1]:= X[i][j][i1][j1]; fi; od;od;od;od; if HadamardTest(H) then s1:= "/home/trungdung/Desktop/Link to hadamard/MiyaHad"; Append(s1,String(n)); Append(s1,".txt"); PrintTo(s1, H); return H; 94 Phụ lục: Chương Trình Tính Tốn else return 0; fi; end; # Ehlich method: 1965 & H324 Bush: 1991, 2008(regular) HadMat324 := function(Opt) #Xay dung matran Hadamard cap 324 co kieu theo gia tri Opt # : dung phuong phap cua Ehlich, dua nam 1965 # : dang ma tran deu # : kieu Bush local i,j,sH, eG,eA, eK, Jn, Jm, In, Im ,m1, m2, n1, n2,r,DB, DS, s, t, k, A, A1, B, B1,B163, C, C1, G, H,G18, HMat; if Opt = then eG:=generate_core(19); eA := generate_core(17); #Tinh ma tran eK Jm := NullMat(17,17); Jn := NullMat(19,19); for i in [1 17] for j in [1 17] Jm[i][j] := 1; od;od; for i in [1 19] for j in [1 19] Jn[i][j] := 1; od;od; Im:= IdentityMat(17); In:= IdentityMat(19); eK := KroneckerProduct(eA, eG) + KroneckerProduct(Im, (In-Jn)) + KroneckerProduct(Jm, In); # -Tinh ma tran sH = [[1 , e],[e, eK]]; -sH:= NullMat(324,324); for i in [1 324] sH[1][i] := 1; sH[i][1] := 1; od; for i in [2 324] for j in [2 324] sH[i][j] := eK[i-1][j-1]; od;od; # tra ve ma tran Hadamard sH cap 324 vua tinh duoc AppendTo("/home/trungdung/Desktop/Link to hadamard/DatabaseHam","Ehlich method: matran H324","\n", sH,"\n"); return (sH); elif Opt = then # xay dung ma tran H324 deu dua tren tac dong nhom G:=Group(r,s,t); H:=Group(r,s); #Phan bo quy dao diem Orbits(H,[1 324]); Size(Orbits(H,[1 324])); else # xay dung ma tran H324 kieu Bush dua tren tac dong nhom theo pp xay dung cua Janko G:=Group(m1,m2,t,n1,n2,s,k);H:=Group(s,t); G18 := Group(m1,m2,k); 95 Phụ lục: Chương Trình Tính Tốn LoadPackages("design");; D:=BlockDesign(324, [B1,B163],G);; #xay dung thiet ke khoi co hai phan tu khoi dai dien B1, B163 nhan G lam nhom tu dang cau DB := BlockDesign(324, [B1,B163],G).blocks;; DS:=[];; for i in[1 18] for j in[1 324] if Intersection([(1+18*(i-1)) (18*i)],DB[j])=[] then Add(DS,DB[j]); fi;od; od; HMat:=NullMat(324,324);; for i in [1 324] for j in [1 324] if i in DS[j] then HMat[i][j] := -1; else HMat[i][j]:=1; fi; od; od;; fi; end; ### ### # -SDS method: 1992, 1994,=> -# SDSMethod := function(n) local p,q,i,j,s,G,H,odd,F, Anfa, S1, S2, S3, S4, ld1,ld2,ld3,ld4, J1, J2, J3, J4,A,B,C,D; q:=n/4; odd:=3; if IsPrimePowerInt(q) then p:=PrimitiveRoot(GF(q)); F:=NullMat(1,q-1);; for i in[0 q-2] F[i+1] := p^i; od; # dong vai tro F* s:= (q-1)/odd; # even Anfa:=NullMat(1,s);; J1:=[]; J2:=[]; J3:=[]; J4:=[];S1:=[]; S2:=[]; S3:=[]; S4:=[]; # -q: nguyen to, dong nhat truong Fq voi Zq G:=[1 q-1]; #nhom nhan cap q-1 cua truong Fq co vai tro F*q # -# if q in [47, 67, 97, 103,151,163] then A:=IncidenceMat(G,S1,1);B:=IncidenceMat(G,S2,1); C:=IncidenceMat(G,S3,1);D:=IncidenceMat(G,S4,1); H:= GSArray(A,B,C,D); return H; fi; # q: hop so -# if q in [81,169, 219, 241] then H:=NullMat(1,odd);; for i in [1 odd] H[i] := (p^(16))^i; od; #Nhom cap le odd for i in[1 s/2] Anfa[2*i-1]:= (p^(i-1))*H; Anfa[2*i] := -Anfa[2*i-1]; od; A:=IncidenceMat(G,S1,1);B:=IncidenceMat(G,S2,1); C:=IncidenceMat(G,S3,1);D:=IncidenceMat(G,S4,1); H:= GSArray(A,B,C,D); return H; fi;fi; end; 96 LÝ LỊCH TRÍCH NGANG Họ tên: NGUYỄN TRUNG DŨNG Ngày, tháng, năm sinh: 06-06-1977 Nơi sinh: Tây Ninh Địa liên lạc: 029 Long Đức 1, Tam Phước, Biên Hòa, Đồng Nai Điện thoại : 0985927877 QUÁ TRÌNH ĐÀO TẠO Từ năm 1995 đến 1999 : học Đại học khoa Toán-Tin trường Đại học Khoa học Tự nhiên Thành phố Hồ Chí Minh Q TRÌNH CƠNG TÁC Từ năm 1999 đến : cơng tác trường THPT Tam phước, Biên Hòa, Đồng Nai ... (gồm 72 ma trận) Đến đây, hai phương pháp Sylvester Paley, xây dựng ma trận Hadamard có cấp 100, ngoại trừ ma trận Hadamard cấp 92 Để xây dựng ma trận Hadamard cấp 92 ta dùng phương pháp Williamson... viết ma trận Hadamard Nội dung nghiên cứu: Nghiên cứu chủ yếu tập trung vào việc xây dựng sở toán học cho số phương pháp xây dựng ma trận Hadamard đến cấp 1000 Mỗi phương pháp xây dựng họ ma trận. .. thống số kiến thức tảng tập trung vào phương pháp để xây dựng ma trận Hadamard có cấp đến 1000 trừ cấp chưa xây dựng 668, 716 892 Mỗi phương pháp chọn thích hợp để xây dựng số ma trận Hadamard

Ngày đăng: 04/04/2021, 06:56

Từ khóa liên quan

Mục lục

  • Nguyen Trung Dung.PDF

  • PHULUC.pdf

  • li lich.pdf

    • QUÁ TRÌNH ĐÀO TẠO

    • QUÁ TRÌNH CÔNG TÁC

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

Tài liệu liên quan