Một số phương pháp mã hóa lượng tử và mô phỏng trên máy tính

138 27 0
Một số phương pháp mã hóa lượng tử và mô phỏng trên máy tính

Đ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 HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM VIỆT HÙNG MỘT SỐ PHƯƠNG PHÁP MÃ HÓA LƯỢNG TỬ VÀ MƠ PHỎNG TRÊN MÁY TÍNH LUẬN VĂN THẠC SĨ HÀ NỘI - 2006 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM VIỆT HÙNG MỘT SỐ PHƯƠNG PHÁP MÃ HĨA LƯỢNG TỬ VÀ MƠ PHỎNG TRÊN MÁY TÍNH Ngành: Cơng nghệ thơng tin Mã số: 1.01.10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Phan Trung Huy HÀ NỘI - 2006 MỤC LỤC LỜI CẢM ƠN Danh mục từ viết tắt Danh mục hình vẽ .6 Mở đầu Chƣơng Các khái niệm 10 1.1 Ký hiệu Bra-Ket 10 1.2 Nguyên lý học lƣợng tử 11 1.3 Qubit ghi lƣợng tử 13 1.3.1 Khái niệm Qubit 13 1.3.2 Khái niệm ghi lƣợng tử 14 1.3.3 Phép biến đổi Unita phép đo 16 1.4 Nguyên lý rối lƣợng tử (Nguyên lý Entanglement) 17 1.5 Nguyên lý song song lƣợng tử 18 1.6 Nguyên lý chép (No-Cloning Theorem) 18 1.7 Mạch Cổng logic lƣợng tử 20 1.7.1 Cổng qubit 21 1.7.2 Cổng qubit 23 1.7.3 Cổng qubit 25 1.7.4 Cổng phổ dụng 26 Chƣơng Một số thuật toán lƣợng tử 28 2.1 Thuật toán lƣợng tử 28 2.2 Thuật toán Deutsch-Jozsa 29 2.3 Biến đổi Fourier lƣợng tử 34 2.3.1 Phép biến đổi Fourier rời rạc 34 2.3.2 Phép biến đổi Fourier lƣợng tử 35 2.3.3 Phép biến đổi nhanh Fourier lƣợng tử 36 2.3.4 Sự thực QFFT cổng lƣợng tử 37 2.4 Thuật tốn phân tích thừa số ngun tố Peter Shor 38 Chƣơng Mã hoá lƣợng tử 47 3.1 Giao thức phân phối khoá lƣợng tử BB84 48 3.1.1 Giao thức phân phối khoá lƣợng tử BB84 trƣờng hợp không nhiễu 48 3.1.2 Giao thức phân phối khố lƣợng tử BB84 trƣờng hợp có nhiễu 52 3.1.3 Một số nhƣợc điểm giao thức phân phối khố lƣợng tử BB84 .54 3.1.4 Về độ an tồn giao thức phân phối khoá BB84 .55 3.2 Kết luận mã hoá lƣợng tử thám mã lƣợng tử 58 Chƣơng IV Xây dựng công cụ mô 59 4.1 Hƣớng giải 59 4.2 Thƣ viện cốt lõi cho mô tính tốn lƣợng tử 62 4.2.1 Một số vấn đề phải giải lập trình mơ 62 4.2.2 Xây dựng lớp 63 4.3 Ngôn ngữ Q – Ngôn ngữ lập trình lƣợng tử 74 4.3.1 Cấu trúc chƣơng trình viết ngôn ngữ Q .75 4.3.2 Sơ lƣợc ngôn ngữ Q 76 KẾT LUẬN 81 TÀI LIỆU THAM KHẢO 83 Tài liệu tiếng Việt 83 Tài liệu tiếng Anh 84 PHỤ LỤC A File Lex/Flex YACC/Bison ngôn ngữ Q 89 A1 File q.lex (File định nghĩa phân tích từ vựng) 89 A2 File q.y (File định nghĩa phân tích cú pháp) 96 PHỤ LỤC B Thuật tốn Peter Shor viết ngơn ngữ Q 103 B1 File shor.q .103 B2 File tinhtoansonguyen.q 104 B3 File biendoifourier.q .109 PHỤ LỤC C Một số hình kết chƣơng trình 110 PHỤ LỤC D Thƣ đồng ý tác giả Bernhard Ömer 111 Chữ viết tắt B92 BB84 CGI FFT FT ISAPI LALR QFFT qubit qureg RSA STL Danh mục hình vẽ Hình 1.1 Biểu diễn cổng NOT 22 Hình 1.2 Biểu diễn cổng Z 22 Hình 1.3 Biểu diễn cổng Hadamard 23 Hình 1.4 Biểu diễn cổng CNOT 24 Hình 1.5 Biểu diễn cổng Swap 24 Hình 1.6 Biểu diễn cổng dịch pha có điểu khiển 25 Hình 1.7 Biểu diễn cổng Toffoli 26 Hình 1.8 Biểu diễn cổng Toffoli 26 Hình 2.1 Sơ đồ mạch thuật toán Deutch-Jozsa 33 Hình 2.2 Biểu diễn cổng quay góc 37 Hình 2.3 Phép biến đổi Fourier lƣợng tử 38 Hình 3.1 Sơ đồ giao thức BB84 49 Hình 4.1 Mơ hình xử lý trình biên dịch Q 75 Hình 4.2 Sơ đồ biểu diễn thuật toán lƣợng tử đƣợc xử lý ngôn ngữ Q 76 Mở đầu Hiện nay, kết hợp vật lý lƣợng tử sở tốn học đại tạo móng cho việc xây dựng máy tính lƣợng tử tƣơng lai Theo dự báo máy tính lƣợng tử xuất vào khoảng năm 2010-2020 Isaac L Chuang, ngƣời đứng đầu nhóm nghiên cứu IBM máy tính lƣợng tử khẳng định ―Máy tính lượng tử bắt đầu định luật Moore kết thúc – vào khoảng năm 2020, mạch dự báo đạt đến kích cỡ nguyên tử phân tử‖ (nguyên văn ―Quantum computing begins where Moore's Law ends about the year 2020, when circuit features are predicted to be the size of atoms and molecules‖ http://domino.watson.ibm.com/comm/pr.nsf/pages/news.20000815_quantum.html) Với khả xử lý song song tốc độ tính tốn nhanh, mơ hình máy tính lƣợng tử đặt vấn đề lĩnh vực CNTT Vào năm 1994, Peter Shor đƣa thuật toán phân tích số thừa số nguyên tố máy tính lƣợng tử với độ phức tạp thời gian đa thức [45,46,47,48] Nhƣ máy tính lƣợng tử xuất dẫn đến hệ mã đƣợc coi an tồn nhƣ RSA [51] khơng cịn an toàn Điều đặt vấn đề nghiên cứu hệ mật [21,40,43,44,55,58] để đảm bảo an toàn máy tính lƣợng tử xuất Đồng thời, máy tính lƣợng tử xuất phịng thí nghiệm, nhu cầu mơ thuật tốn lƣợng tử máy tính thơng thƣờng tất yếu Ở Việt Nam nay, nhà toán học bƣớc đầu có nghiên cứu tính tốn lƣợng tử mơ tính tốn lƣợng tử máy tính thơng thƣờng Ví dụ nhƣ nhóm Quantum trƣờng Đại học Bách Khoa Hà Nội [5] Tuy nhiên nhiều vấn đề để mở, việc cần có đầu tƣ thích đáng, tìm tịi, thực nghiệm sở thành tựu lý thuyết kinh nghiệm sẵn có giới, đồng thời áp dụng vào thực tế Mục đích, đối tượng nội dung luận văn Trong khuôn khổ luận văn này, sở thành tựu có giới nƣớc tơi trình bày tổng quan nghiên cứu lý thuyết tính tốn lƣợng tử, đồng thời xây dựng cơng cụ mơ tính tốn lƣợng tử thuật tốn lƣợng tử Luận văn gồm có phần mở đầu, kết luận 04 chƣơng đề cập tới nội dung nhƣ sau:  Chương 1: Các khái niệm nghiên cứu sở lý thuyết tính tốn lƣợng tử, khái niệm nhƣ qubit, ghi lƣợng tử, cổng mạch lƣợng tử nhƣ ngun lý tính tốn lƣợng tử nhƣ nguyên lý song song lƣợng tử, nguyên lý chép…  Chương 2: Một số thuật toán lượng tử nghiên cứu số thuật toán lƣợng tử quan trọng nhƣ thuật toán Deutsch-Jozsa (thuật toán lƣợng tử đầu tiên), biến đổi Fourier lƣợng tử quan trọng thuật tốn Peter Shor tìm chu kỳ hàm số từ dẫn đến tốn phân tích số thừa số ngun tố Thuật tốn Peter Shor cho thấy sức mạnh tính tốn lƣợng tử so với tính tốn máy tính cổ điển  Chương 3: Mã hố lượng tử Do có khả tính tốn bùng nổ theo cấp luỹ thừa tính tốn lƣợng tử dẫn đến việc phải nghiên cứu phƣơng pháp mã hoá sử dụng tính tốn lƣợng tử để chống lại khả thám mã sử dụng tính tốn lƣợng tử Mục đích chƣơng đề cập đến ví dụ mã hoá lƣợng tử thám mã lƣợng tử hệ mã lƣợng tử đơn giản phân phối khoá lƣợng tử BB84  Chương 4: Xây dựng công cụ mô Trên sở nghiên cứu lý thuyết tính tốn lƣợng tử thuật tốn lƣợng tử trên, phần trình bày chi tiết phƣơng pháp xây dựng mơ hình mơ tính tốn lƣợng tử máy tính cổ điển xây dựng trình biên dịch Q 99 | block | ';' obj ; functdef: tokTYPE tokIDCALL arglist ')' bodydef bodystm { $ $ = YYNEW(sFunctDef(tType($1),$2,$3,$5,$6)); } | tokTYPE tokTENSOR tokIDCALL arglist ')' bodydef bodystm { $$ = YYNEW(sFunctDef(tType($1,$2),$3,$4,$6,$7)); } ; quopdef: tokOP tokIDCALL arglist ')' bodydef bodystm { $$ = YYNEW(sQuOpDef($2,$3,$5,$6)); } | tokEXTERN tokOP tokIDCALL arglist ')' ';' { $$ = YYNEW(sQuOpDef($3,$4,0,0,0,1)); } | tokCOND tokOP tokIDCALL arglist ')' bodydef bodystm { $$ = YYNEW(sQuOpDef($3,$4,$6,$7,1)); } | tokEXTERN tokCOND tokOP tokIDCALL arglist ')' ';' { $$ = YYNEW(sQuOpDef($4,$5,0,0,1,1)); } ; qufundef: tokQUFUN tokIDCALL arglist ')' bodydef bodystm { $ $ = YYNEW(sQuFunDef($2,$3,$5,$6)); } | tokEXTERN tokQUFUN tokIDCALL arglist ')' ';' { $$ = YYNEW(sQuFunDef($3,$4,0,0,0,1)); } | tokCOND tokQUFUN tokIDCALL arglist ')' bodydef bodystm { $$ = YYNEW(sQuFunDef($3,$4,$6,$7,1)); } | tokEXTERN tokCOND tokQUFUN tokIDCALL arglist ')' ';' { $$ = YYNEW(sQuFunDef($4,$5,0,0,1,1)); } | tokQUFUN tokOP tokIDCALL arglist ')' bodydef bodystm { $$ = YYNEW(sQuFunDef($3,$4,$6,$7)); YYTRY($$->setFlag(flagFUNOP)); } | tokCOND tokQUFUN tokOP tokIDCALL arglist ')' bodydef bodystm { $$ = YYNEW(sQuFunDef($4,$5,$7,$8,1)); YYTRY($$->setFlag(flagFUNOP)); } ; procdef: tokPROC tokIDCALL arglist ')' bodydef bodystm { $$ = YYNEW(sProcDef($2,$3,$5,$6)); } | tokPROC tokIDCALL ')' bodydef bodystm { $$ = YYNEW(sProcDef($2,new sDefList(),$4,$5)); } ; vardef: tokTYPE tokID ';' { $$ = YYNEW(sVarDef(tType($1),$2)); } | tokTYPE tokID '[' expr ']' ';' { $$ YYNEW(sVarDef(tType($1),$2,$4,0)); } = | tokTYPE tokTENSOR tokID '[' YYNEW(sVarDef(tType($1,$2),$3,$5,0)); } expr ']' ';' { $$ = 100 | tokTYPE tokID '=' expr ';' { $$ = YYNEW(sVarDef(tType($1), $2,0,$4)); } | tokTYPE tokTENSOR tokID '=' expr ';' { $$ = YYNEW(sVarDef(tType($1,$2),$3,0,$5)); } | tokTYPE tokID '=' tokCOND ';' { $$ = YYNEW(sVarDef(tType($1),$2,0,new sVar(new tId(CONDID)))); YYTRY($$->setFlag(flagCONDDEF)); } ; constdef: tokCONST tokID '=' expr ';' { $$ = YYNEW(sConstDef($2,$4)); }; block: '{' stmtlist '}' { $$ = $2; } | '{' '}' { $$ = YYNEW(sStmtList()); } ; bodydef: '{' deflist { $$ = $2; } | '{' { $$ = YYNEW(sDefList()); } ; bodystm: stmtlist '}' { $$ = $1; } | '}' { $$ = YYNEW(sStmtList()); } ; deflist: vardef { $$ = YYNEW(sDefList()); YYTRY($$->append($1)); } | constdef { $$ = YYNEW(sDefList()); YYTRY($$->append($1)); } | deflist vardef { YYTRY($1->append($2)); $$=$1; } | deflist constdef { YYTRY($1->append($2)); $$=$1; } ; arg : tokTYPE tokID { $$ = YYNEW(sArgDef(tType($1),$2)); } | tokTYPE tokTENSOR tokID { $$ = YYNEW(sArgDef(tType($1,$2),$3)); } ; arglist: arg { $$ = YYNEW(sDefList()); YYTRY($$->append($1)); } | arglist ',' arg { YYTRY($1->append($3)); $$=$1; } ; stmtlist: stmt { $$ = YYNEW(sStmtList()); YYTRY($$->append($1)); } | stmtlist stmt { YYTRY($1->append($2)); $$=$1; } ; stmt: tokIDCALL exprlist ')' ';' { $$ = YYNEW(sCall($1,$2)); } | tokIDCALL ')' ';' { $$ = YYNEW(sCall($1,new sExprList())); } | '!' tokIDCALL exprlist ')' ';' { $$ = YYNEW(sCall($2,$3,1)); } | tokID '=' expr ';' { $$ = YYNEW(sAssign(new sVar($1),$3)); } 101 | tokID '[' exprlist ']' '=' expr ';' { $$ = YYNEW(sAssign(new sVar($1),$6,$3)); } | expr tokSWAP expr ';' { $$ = YYNEW(sCall(new tId(SWAPID),new sExprList($1,$3))); } | expr tokTRANS expr ';' { $$ = YYNEW(sCall(new tId(FANOUTID),new sExprList($1,$3))); } | expr tokINVTRANS expr ';' { $$ = YYNEW(sCall(new tId(FANOUTID),new sExprList($1,$3),1)); } | tokFOR tokID '=' expr tokTO expr block { $$ = YYNEW(sFor(new sVar($2),$4,$6,$7)); } | tokFOR tokID '=' expr tokTO expr tokSTEP expr block { $$ = YYNEW(sFor(new sVar($2),$4,$6,$9,$8)); } | tokIF expr block { $$ = YYNEW(sIf($2,$3)); } | tokIF expr block tokELSE block { $$ = YYNEW(sIf($2,$3,$5)); } | tokNEU expr tokTHI block { $$ = YYNEW(sIf($2,$4)); } | tokNEU expr tokTHI block tokNGUOCLAI block { $$ = YYNEW(sIf($2,$4,$6)); } | tokWHILE expr block { $$ = YYNEW(sWhile($2,$3)); } | block tokUNTIL expr ';' { $$ = YYNEW(sUntil($3,$1)); } | tokBATDAULAP block tokCHODENKHI expr ';' { $$ = YYNEW(sUntil($4,$2)); } | tokBREAK ';' { $$ = YYNEW(sBreak()); } | tokRETURN expr ';' { $$ = YYNEW(sReturn($2)); } | tokINPUT tokID ';' { $$ = YYNEW(sInput(new sVar($2),0)); } | tokINPUT expr ',' tokID ';' { $$ = YYNEW(sInput(new sVar($4), $2)); } | tokPRINT ';' { $$ = YYNEW(sPrint(new sExprList())); } | tokPRINT exprlist ';' { $$ = YYNEW(sPrint($2)); } | tokEXIT ';' { $$ = YYNEW(sExit(0)); } | tokEXIT expr ';' { $$ = YYNEW(sExit($2)); } | tokMEASURE expr ';' { $$ = YYNEW(sMeasure($2,0)); } | tokMEASURE expr ',' tokID ';' { $$ = YYNEW(sMeasure($2,new sVar($4))); } | tokRESET ';' { $$ = YYNEW(sReset()); } | tokDUMP ';' { $$ = YYNEW(sDump(0)); } | tokDUMP expr ';' { $$ = YYNEW(sDump($2)); } | tokPLOT ';' { $$ = YYNEW(sPlot()); } | tokPLOT expr ';' { $$ = YYNEW(sPlot($2)); } | tokPLOT expr ',' expr ';' { $$ = YYNEW(sPlot($2,$4)); } | tokINSPECT ';' { $$ = YYNEW(sInspect(0)); } | tokINSPECT exprlist ';' { $$ = YYNEW(sInspect($2)); } | tokLOAD ';' { $$ = YYNEW(sLoad(0)); } | tokLOAD expr ';' { $$ = YYNEW(sLoad($2)); } | tokSAVE ';' { $$ = YYNEW(sSave(0)); } | tokSAVE expr ';' { $$ = YYNEW(sSave($2)); } | tokSHELL ';' { $$ = YYNEW(sShell()); } | tokSET ';' { $$ = YYNEW(sSet(*$1,0)); } | tokSET expr ';' { $$ = YYNEW(sSet(*$1,$2)); } ; exprlist: expr | exprlist ',' expr { YYTRY($1->append($3)); $$=$1; } ; expr: tokCONS { $$ | tokID { $$ = YYNEW(sVar($1)); } | tokID '[' exprlist ']' { $$ = YYNEW(sSubscript(new sVar($1),$3)); } | tokID YYNEW(sSubRange(new sVar($1),$3,$5,SUBRANGE_LENGTH)); } | tokID '[' expr tokRANGE_END expr ']' { $$ = YYNEW(sSubRange(new sVar($1),$3,$5,SUBRANGE_END)); } | tokIDCALL exprlist ')' { $$ = YYNEW(sFunctCall($1,$2)); } | '-' expr %prec tokNEG { $$ = YYNEW(sNeg($2)); } | tokNOT expr { $$ = YYNEW(sNot($2)); } | '#' expr { $$ = YYNEW(sLength($2)); } | expr tokOR expr { $$ = YYNEW(sOr($1,$3)); } | expr tokXOR expr { $$ = YYNEW(sXor($1,$3)); } | expr tokAND expr { $$ = YYNEW(sAnd($1,$3)); } | expr tokEQ expr { $$ = YYNEW(sEqual($1,$3)); } | expr tokLEEQ expr { $$ = YYNEW(sLeEq($1,$3)); } | expr tokGREQ expr { $$ = YYNEW(sLeEq($3,$1)); } | expr tokNOTEQ expr { $$ = YYNEW(sNotEq($1,$3)); } | expr '' expr { $$ = YYNEW(sLess($3,$1)); } | expr '+' expr { $$ = YYNEW(sAdd($1,$3)); } | expr '-' expr { $$ = YYNEW(sSub($1,$3)); } | expr '&' expr { $$ = YYNEW(sConcat($1,$3)); } | expr tokMOD expr { $$ = YYNEW(sMod($1,$3)); } | expr '*' expr { $$ = YYNEW(sMult($1,$3)); } | expr '/' expr { $$ = YYNEW(sDiv($1,$3)); } | expr '^' expr { $$ = YYNEW(sPow($1,$3)); } | '(' expr ')' { $$ = $2; } | tokBASEFUNCT expr ')' { $$ = YYNEW(sBaseFunct($1,$2)); } | tokLISTFUNCT exprlist ')' { $$ = YYNEW(sListFunct($1,$2)); } | tokLISTFUNCT ')' { $$ = YYNEW(sListFunct($1,new sExprList())); } ; 103 PHỤ LỤC B Thuật tốn Peter Shor viết ngơn ngữ Q B1 File shor.q thu vien ngoai "tinhtoansonguyen.q"; thu vien ngoai "biendoifourier.q"; thu tuc petershor(songuyen number) { songuyen width=ceil(log(number,2)); thanhghiluongtu thanhghi1[2*width]; thanhghiluongtu thanhghi2[width]; songuyen songuyen songuyen songuyen // size of number in bits // first register // second register qmax=2^width; factor; m; sothuc c; x; songuyen p; songuyen q; songuyen a; songuyen b; songuyen e; // e=x^(q/2) mod number neu number mod == thi { hienthi "so phai la so le"; thoat; } neu nguyen kiemtranguyento(number) thi { hienthi "So nhan vao la so to"; thoat; } neu kiemtraluythuanguyento(number) thi { hienthi "So nhan vao la luy thua cua so nguyen"; thoat;}; bat dau lap { bat dau lap { x=floor(random()*(number-3))+2; } cho den gcd(x,number)==1; hien thi "chon ngau nhien x =",x; H(thanhghi1); expn(x,number,thanhghi1,thanhghi2) ; ghi thanhghi2; dft(thanhghi1); ghi thanhghi1,m; lam sach; neu m==0 thi { hien thi "Do duoc gia tri tai ghi thu nhat Thu lai "; } nguoc lai { c=m*0.5^(2*width); q=timphanso(c,qmax); p=floor(q*c+0.5); hien thi "Do duoc tai bit thu", m,"voi xac suat", c,", xap xi cua ",c,"la",p,"/",q; 104 neu q mod 2==1 va 2*q1 va factor1 thi { CNot(sum[1],sum[0] & s & e); } CNot(sum[0],s & e); neu a0 thi { Not(s); } } nguoc lai { neu a0 va a1 thi { neu #sum>1 thi { CNot(sum[1],sum[0] & e); } CNot(sum[0],e); } }; neu #sum>1 thi { CNot(sum[1],b & sum[0]); } CNot(sum[0],b); } / / conditional multiplexed binary adder for one of integers and thanhghiluongtu No output carry cond qufunct muxadd(int a0,int a1,hangsoluongtu sel,hangsoluongtu b,quvoid sum) { int i; lap i=0 toi #b-2 { // fulladd first #b-1 bits muxaddbit(bit(a0,i),bit(a1,i),sel,b[i],sum[i:i+1]); } // half add last bit muxaddbit(bit(a0,#b-1),bit(a1,#b-1),sel,b[#b-1],sum[#b-1]); } / / / Comparison operator flag is toggled neu bMSB(b) // disable further comparison // neu MSB(a)b[i] neu still undecided (j[0]=1) result is LSB(a)>LSB(b) } / / conditional addition mod n for integer and thanhghiluongtu flag is set neu a+b (a+sum) mod n cond qufunct oaddn(int a,int n,thanhghiluongtu sum) { thanhghiluongtu j[#sum]; thanhghiluongtu f[1]; hangsoluongtu e=cond; // explicit enable register 107 neu e thi { addn(a,n,sum,f,j); } Swap(sum,j); CNot(f,e); neu e thi { !addn(n-a,n,sum,f,j); } } / Conditional Multiplication mod n of an integer a by the thanhghiluongtu b, / prod ab mod n cond qufunct omuln(int a,int n,thanhghiluongtu b) { thanhghiluongtu j[#b]; neu gcd(a,n)>1thi { thoat "omuln: a and n have to be relativly prime"; } muln(a,n,b,j); !muln(invmod(a,n),n,j,b); cxor(j,b); cxor(b,j); } // Modular exponentiation: b -> x^a mod n cond qufunct expn(int a,int n,hangsoluongtu b,quvoid ex) { int i; Not(ex[0]); // start with lap i=0 toi #b-1 { neu b[i] thi { omuln(powmod(a,2^i,n),n,ex); } } } // ex -> ex*a^2^i mod n 108 set library 0; 109 B3 File biendoifourier.q set library 1; // pseudo classic operator to swap bit order cond qufunct flip(qureg q) { songuyen i; // declare loop counter lap i=0 toi #q/2-1 { // swap symmetric bits Swap(q[i],q[#q-i-1]); } } / discrete Fourier transform (Coppersmith) operator dft(thanhghiluongtu q) { // main operator hangso n=#q; // set n to length of input songuyen i; songuyen j; // declare loop counters lap i=1 toi n { lap j=1 toi i-1 { // apply conditional phase gates V(pi/2^(i-j),q[n-i] & q[n-j]); } H(q[n-i]); } flip(q); } set library 0; // qubit rotation // swap bit order of the output 110 PHỤ LỤC C Một số hình kết chương trình Kết chạy thuật tốn Peter Shor phân tích số 15: Kết chạy thuật tốn Peter Shor phân tích số 21: 111 PHỤ LỤC D Thư đồng ý tác giả Bernhard Ömer From: Bernhard Oemer [mailto:bernhard.oemer@arcs.ac.at] Sent: Mon 12/4/2006 4:17 PM To: Pham Viet Hung Subject: Re: Licence of QCL On Mon, 2006-12-04 at 10:24 +0700, Pham Viet Hung wrote: > I'm Pham Viet Hung, come from Vietnamese > Now I a master thesis in Computer Science about Quantum Computation > and simulate in Quantum Computer > I download your program and see that your program (QCL) is free > software under the terms of the GNU General Public Licence (GPL) > version or higher > So can I use your program in my thesis? > Another, I already port your program to Windows, change program to > allow coding (programming) in Vietnamese language Can I use my > porting in my thesis as example for simulating program? Sure you can! Remember, however, that the GPL requires, among other things, that - all derived work (such as ports, extentions, etc.) also has to be covered by the GPL [ie enclose the COPYING file with all distributions of the derived code] - you must not claim authorship over the original code [i.e leave the original copyright notices in place] But this should not be a problem For usage in an academic work, such as your thesis, you will also have to give proper references, e.g Bernhard Oemer "A Procedural Formalism for Quantum Computing", master thesis technical physics, TU Vienna, 1998, URL: http://tph.tuwien.ac.at/~oemer/qcl.html Bernhard Oemer."Structured Quantum Programming", PhD thesis, TU Vienna, 2003, URL: http://tph.tuwien.ac.at/~oemer/qcl.html cu Bernhard Ömer ... GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM VIỆT HÙNG MỘT SỐ PHƯƠNG PHÁP MÃ HÓA LƯỢNG TỬ VÀ MƠ PHỎNG TRÊN MÁY TÍNH Ngành: Cơng nghệ thông tin Mã số: 1.01.10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA... lƣợng tử so với tính tốn máy tính cổ điển  Chương 3: Mã hố lượng tử Do có khả tính tốn bùng nổ theo cấp luỹ thừa tính tốn lƣợng tử dẫn đến việc phải nghiên cứu phƣơng pháp mã hố sử dụng tính. .. ghi lƣợng tử, cổng mạch lƣợng tử nhƣ nguyên lý tính tốn lƣợng tử nhƣ ngun lý song song lƣợng tử, nguyên lý chép…  Chương 2: Một số thuật toán lượng tử nghiên cứu số thuật toán lƣợng tử quan trọng

Ngày đăng: 11/11/2020, 21:46

Từ khóa liên quan

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

Tài liệu liên quan