From ccab7c8f5498f8fd94824e3c700ceacbe07d5769 Mon Sep 17 00:00:00 2001 From: dsdsdshe Date: Thu, 25 Aug 2022 10:12:28 +0800 Subject: [PATCH] lecture7 lecture9 and lecture11 --- images/CC_U_decomposition.png | Bin 0 -> 23808 bytes images/cnot_equivalent.png | Bin 0 -> 10805 bytes images/cnot_gate.png | Bin 0 -> 28541 bytes images/deferred_measurement.png | Bin 0 -> 21311 bytes images/measurement.png | Bin 0 -> 12608 bytes images/multiple_CU_decomposition.png | Bin 0 -> 36680 bytes images/swap_gate.png | Bin 0 -> 13071 bytes lecture11.ipynb | 241 ++++++++++++++++++++ lecture3.ipynb | 51 ++--- lecture5.ipynb | 51 +++-- lecture7.ipynb | 314 +++++++++++++++++++++++++++ lecture9.ipynb | 215 ++++++++++++++++++ 12 files changed, 821 insertions(+), 51 deletions(-) create mode 100644 images/CC_U_decomposition.png create mode 100644 images/cnot_equivalent.png create mode 100644 images/cnot_gate.png create mode 100644 images/deferred_measurement.png create mode 100644 images/measurement.png create mode 100644 images/multiple_CU_decomposition.png create mode 100644 images/swap_gate.png create mode 100644 lecture11.ipynb create mode 100644 lecture7.ipynb create mode 100644 lecture9.ipynb diff --git a/images/CC_U_decomposition.png b/images/CC_U_decomposition.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2ff60c3cb6418df520b282be8d5bdf51dc54a5 GIT binary patch literal 23808 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 bAOim%Kd{70%mVf500000NkvXXu0mjfsAuhX literal 0 HcmV?d00001 diff --git a/images/cnot_equivalent.png b/images/cnot_equivalent.png new file mode 100644 index 0000000000000000000000000000000000000000..e7acb130cbb1354c5a92b4ff6ac84ee9dd4dd70c GIT binary patch literal 10805 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 ZOgEwSo3C8>MX%?Va#G5YRpQ1${{{8n%w+%o literal 0 HcmV?d00001 diff --git a/images/cnot_gate.png b/images/cnot_gate.png new file mode 100644 index 0000000000000000000000000000000000000000..bd03dac308408d6141de5c6a0f1b1553769d232e GIT binary patch literal 28541 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 -=mg(Q)<3 z-DH36)a2~z((0EWnm>b0SrA1fH){JU-V>BH zwrYfPj)?0(N9MMsA+?j*U%BjWv|vrY939#G0KAVdL0H5|oe1YUf#BZS!;LGOX@}cD zpY7Mqwt4w#H-$`XyrTJHs&sahAxcCHm(&PQL~IGr!5#ewM*xh^ts?r|(9Q*V>7VO% z5H|DF4-T)v=#f9a*34Zzwj~R=0+>-^iCPCL6@45HzCPGNIz>w;Jiq8Raq%8TgVyWJ7P1#5mxt@7x2>NaG-1Z=Gw?z+L&iWI$%)upUC!L3fQ z)z$5mmP0y)36Tz2rLoC<^>~9uT{}S7sM{%AW+MA(U6MRf1e;?-cV~4wJ*gzQJbCk5 zDdMb8RI<9(Xtc_{5$Gj`sYQJyK?$Royq${z1q%W{+V@XmkLCR3iuumPQ6U@V+}>9V zA##Mq@}{;hF_Uk@Qd^RyU$N(-yL{TLGGZpecJTtIE$zO}kyLl^4#PTz+coI#loL!l z>&t%4K#$q+;|LhVvoaAn8|AHF?rAZr7#V(pWN{2&E{upZ!cTIiU^%`fX?^97Y>fnh z2>J2XO4+GK(!L{7y`LIX!;RVEuX&+FeKF;zv2;nifxHp`CYkQxOr)@!p$0=` z_k#c=CqpgMuO+N)MV==MtjFQHxQzWpRkVAFXQZN@bkJ?_h+A>yE#B897a>B^zZ91G zr_77+1(@X9+$V`}NcUb^uJ2?7@ey${QVl8vQw%?X#%fhs)$F( zmP=bQt4KeKvgm)NB57rAoI_{sr#8R*yi8Bs?|0c@`oQW14;^msu8HejV#3RLRII<9 z;+qPGr&9+4g~D|iQy7O%I0C@>sMxvttlR!)g+lDDo-l}G zqfb^5kod{ zVV419XFo`mT#Snj`aZ}V*q&{w9KvCSC0@U9afFn2`P%gnV^v7t#UwKJh`|$)ebVIp zp-4+*zd{|u>}WiSxr=u*IAjwNY|ZR9g8JwW&fsa^tD>J^M1`k>@*Od)z$`)}j_??v zN>vgPvj0@-L}q4urL%yb}@+e zr?m5LenF8D8{NTSqd9(mdf+^z5%y6OzVikkl82)ae8$}y&9%DR5-_Dn?$lau=ax-j zSwg!L4OOVDbz7{%RX?J%y!abbl4}sg7>qX@of^C@!T-?&n80ShS8Iou8$@tX7$;&& zdXPR!avhOAe~Q=;0+kStFxX?YbYqjD9<^JVr`;M^{=Nsfv)W_5dYncMU)K9tw3Hxjk~K1RvFA+{Qo7Ohi`sDkj)GKP2=1 za6Qjvf-qf?8wGRbRRb%}R3l7O5CX^x4>>PnCiU#Zk8SxMJm?$5d+JMW;2n7OqgfSS z*Hb7n?eHJ#`Zr8^eE2OXL2ZMh-G8FoC%6#bqrx1f|GNGBACKh{0s*k}DGvX=?i2?B p$#zJOodWd#LC5~@UF~|qaK75ko~)Sp`(XA literal 0 HcmV?d00001 diff --git a/images/deferred_measurement.png b/images/deferred_measurement.png new file mode 100644 index 0000000000000000000000000000000000000000..ee94a829da9c2fb5afa6d4368cacc389a55fdde1 GIT binary patch literal 21311 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 E|*m%xmDpE`8@aBaUQ*c={g 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 z zgY>&S$qyt~$4jzX9pbv@{j&p}`*YX$>MpR>&f2-|1-Jc&A!=auQR0X-U+v$YyWA)5 ziW5YM47_tLA2u*HQqq;ol!QF!JtciK-_}mO{va%3E94sIYQ5pyOAX2mk9O7W2sOX2 zU5=d37j_4~{hAYKY2R(Wb$ieL{?WtdzM!|-@6@%R?dOhrKVn&LBp(mI+c(cUwUIKA zpPEpLpq6jL`^*E!@yY93$D2Q#)(GJPW{;5=8ylEsBL+a17U1e>UmUBJ2L%JEl4l5m z`km1yN7Tnf)`74;IkRzfIQzC zd^6NYPf+P@isk)ScchtV%a|)D0BApKSO63lIsoFs0{gfDV0Zwif7k$kEExWO+p1tR z|H6O+01;LI$bVsUKgz#X;>YvB{#OZ+91ei__(K19LJPqE3k^nJ0P$ZoK>wo-AfhHF zBlA(JnL3-9*}GUexKbO==6^Wg9Hn(!001n?zYmy|u z)xpG!(bLZHuMU9UllQ~4Gjla2@wBtGcj5IEAo~Y`_rw0{W+Ef`2gKDzfJ|FKnMBON z*^Gpfk(rU1Oc0)ggoNMut2wW#xa7a+A727wmaeXjyi80U9v+MyY>W=h7ECNWJUmRy ztW2z|3?B#v7cYBPV^0Qq7xI6K{FjcnnTx5jm7}YbgFVS#U1JjmH&+2NvcG};`}$`) z%{;CC9m(G1Uuk_L$n>{{iG`7w>HkJ^wKD&I(Eir^llG6i{uz${uNbd}iaGg}>Ts}H8jM^1t)tZe^c{m+{JD^vU5Om=4G|78A0 z&3`cerogM@Z1vGjxl>g!W7mJ_i@38#G zF#U55{KNY(2?XK!nf`l13Bor-GTH(Fq`ETVBI=%CX9ixr^Yhp{Et;@3`);j-?AH;YbN9edFL}*qH73kY%*!fHTvRhf53u+{}@6J zs;3l&<)cVs2Ko43bi7<&Z;W10Iw+jKQe50WufO_Vbb>Z~&VPai*1w7k;6NgRLkHmq zlL$gzTmG;_WroFpgai|-mlykMnLvM-CZ(0~l1SixO?mwPzuq7$mK3!Vl@MVJsh%pL z;5P1P8{waw{g{JJ{lB8vR`5(Z;ftBxH+bc4_gQ^;tl>k+d@Uc9hR5n(c1`v10|So= zfbCK&qqs9X*i)vRcY4HESyj=Q-IgO zU=(GN2F7az#e2N|k{T{_XTXt57T$H*+02&Zp6sY3ZoWrnf{pWA?%#BBx=MvCN;&MT z0%Jl=lEY@2*+IdcO=HOZ++Zdb4RX}b;Ih1)t6(?YfwWHA66gr7zS6I&F8My1Hl3wW zMY(aDJ+Iy`&Kz*4{LALa)q1n56FO?REZ~#L4{55|Bw=B`F^O}}i|%_O!lmx~l_vY% zlrZa=+IZg}ay1PDN{6efrJDwQ5omgJRH^y-dG&EZ9@4_|yu_!f%E|*pLaE4I^O{f9 z>{BXLRSwQltvltpFgDjguEO-}#LcfH`SUv}H`_%DWf@e0a zs}HMt*)ck!Jt*>`CS?1!CsJq0tJBwJqetK0y>(7^GnM1;IHFgYZ3eY<`xFR#Uu-wK za{XUtMsKfXlq~zEwr~4VHcRpZe3Y%N@tUodN2JP^8aN^8+>dFgoW1{yXskRuN{$e6 z2f`0x&L~jPH&bhpNRw#W#>Jn1R~LnCbAczlJeY8wCvec`$H3Q$xW9!C_DG465fu$C zOL^AYRW90gckB$r0ct~zn_2ldqKhV?btw`g*Kt415^ol)w|5u){;l^JI5|_RaI&DT z%$#GtHdMT`Q+(T#^L*4djG^xSglO>7R{}PT;Yhbmc1SUYTf}Cu_WKu|%+!sa2;)yr zw%(5C`lP|l;C+`7q}nX{Ueg(Fx3hZoR&o$9$R!;e9hPGz+BZ#Jv%)dL&m`4ZxRktR zW@b$u_e6LC=Inkg=WMjJywcc=Ib}_^?0=dPzqEVMi>Sx>h| zVsFdi+mnPRoXIdN;VJoYnosCp~M4+{7 zv(?BBEZEth7NcS5zFhiM>{q>-<+NgH0?(bFSrCR>Av$l2F8+5He8Lc(JnNZW%DKF5 zsh4H4awn(1$Pgp-DKFstyX*zb?#~shDk_?M7VY6?%N&s14wrx`PYrv+sMXq)H5tQI zjq!L#JNhQz4IUR?wpor4sgu3H-z!rsRR-1d@6l@de zimn^?)!h#e9njav`aO8boue_Cm}~CNvP9;w&-bn{=34CVu|%XX>pt>GriR5bH)OtR z@xDD&Ss8(}etEbesAVABy|B}3ovJ5&?5IBd{KIg1s+(e0^HeN4>o2&SN`nag>r- z6t><@7>umFy{}iu!QX@&Q3)-Ap&mIohJ-vF@P#&oe?mYHIiuQ3NJun=jIwh(FuR>C zXmoN_Scts&cU{IXauLEbT331xa;4n0^(Sz~Z zsa_N{7A3O~JCgla_G7m6pGE2PU*vDh{c@3i(&|U)_!-Cf7(kMY;ew>J8|@=6R|+8V zg#z;8iG>u;_?oaK-Q)z}G2lZejltzA`AG4$#B%rdt)OGb$^*ulNV4kBs&XOUu=*&s z+>@iuzU0a5ql{w|g?FSk9`?R)mM557uW_Q5tHBv`zS?&%X zuF-D@Zmp*4kgSO-f>3I|=mHV_@_fa!TWwLmlc2fY<-kywW*r)>G!hHV6}j|IPEn&t zvIsU%Wf*92)2C^xfK#d_;%_2MOG{Jc$MD`aB&FVx`|i;UDLGkh2{8d_B2k|S^EB7Q zK4LQPD+_%?=EWMMI5Ip|T761SYOCP1g(Uc08Iq8HJq9{&2YS|s0-VhmCco;p4kwPo zHyFOXLWj*R_6y+8TR0{prF`D~*>3KP{0s@eSy4$zs{OW$7k6WXnYykwuSUIPPn_&R zGAe0^FCm||e58e}PfS2qwQ#$rbtR>oTb6~PR;ISd#xY_y3ZY<5`j46t15-*cvJU@Q zNm>G-_+M@(ScS=tpFsNsU zH+@s^`xx7?Z#Mc+4_BJ${v1w+C|<_vQ`)2kI)1N5(Ffu8>gW@S*Reo!J~*;~s;G&- zH;AKcK{vBnt#KOH@2$4`aNX3pPY)#(Yb#bYqS7@P=WNpRs#Cm$BjFERYhk_1(q}Cx zg~Dk%PR~IrPaux4@vEu&2d+HJBJm@tyIMPA>vsF+o(|El++YqY4HAKCAB%Otx#_7o zCqHUgb?nK4EU;z2+Q9)ie*`-+ky{VOb5@*Pzl0$q6QimUENJ@dwIX1Yj>Qtug9RjN z`u&pa!*tfB`2@|zmT?1`oZb-d+3Vy&nX#O7w28KBlR=}eV0jC=B#aMVdIUQ@c$^zZ zTIb6q^4dXLX5b%b=U_fQz#Z^?mJEC*wNWh(XzcYsEOeQE3M~hl02%WvWi?YYnI5>) zz+!14Pg(UNRVWq;%cpAnN(j^14{WsIgyI^vi9jZ_oJs^XxzFP*I}!BgGPBoJMuE%q z5w5n(?nR}Pqaft2?AE3@#_F+uwnO4AGFn6{wvd&T?VK+*E?7d0p7DRoXPQwo|8i%x zE}oHGyj`B}P0mL2^=m86k{h2@Qx6282DWDzGs8Ig6ru(p`Ikr{il%Y_pAdl=p`dla zJlxmGlYjyN`KAG^c+!KVsi-z4ptO)GxqL=&0S~feF z6v%xoRG+-_NRhDTbl4EB>%PkxJ7?xTKpy&jkJTwwrCD2I5%9*wwM)>RxjPVNS~MR8 zy?5{{2)ypkH^cYv6}Ik5Bqo>lBjSKQIiR>VD7W=!DXI8&QphXZo`K%=*@2dcMXX*p z@e(B@e9LCR<(y!2iGWXW*S=jLGBMQn9dAQVI}QPHg73U7CC}%e>~^ceOSFEjrb6Ab zd=!iovnIo;Yh+~NdMwNX-s=us7J`Q!F*K{T6sidM4~x)yYXD}yFKS&NP)E3Y|LBxA z8KRxjSKZ<+ho_p8M@605MJ(-sWczJ5UyyDvx*!<$4F71$m!f2+;pfyRg)vlm^>B-R zpDNVLx&oy&7n?;x&$hzfKztltUmT4F!6G}o?vldlS}{Bbb1O2yHiLvIwj69h-ss4L zvJ@43xgHMnStY62Ep-HxjO#ba#kN(p?vYs%htFqr)ktsQKiSf~6$Pr-YVs7&R(n}S$4XA1&icqQuy6S3Q;IPqUCJKR0|CQs*M%*TBK z1z&Gx@dU)DN8_h$v&+OFnL~I+*{VN%u@=#4?{3**9(n3?Y8U6Vl)Rq1!0}%&Je+!n z)C~@c?mrA>(`=jD3Nw6xc@4@;5qgNYn62N)s!R5eD6Wu-_Xd*44QtB9d2+$6^NtT{tgi|ThUSW8_G;>$JmzT;{x8TvlJj%Nw1($ZoGxF?EzN7(ewW__f1kqUTDG@rqcnzA-*Bn$OOUB}mw#Uf|&v$!CVg>1j#L>}NLUhIcG6vYL z^G5OhN;531)*@BOpVq{r?C0@cE9(4 z7_WNxJvjoIh=f2NnphNn*I3Xmq3XN0>xD|y*c1{w=&f$Hs@pFtS+}+NUYQ;8!Tx>a z?DqV3nCs@)b7;B-o#@Rr2AFi5DP8_>w~`Q&n=)D0(*kenV3>=0I+MXcF(+m+41tcw zplG($@XN3}{QN2ME_-OD3-?(EriXk29>8UWzbfw8^F5QCx!&8kkhw2zMEnax4 z@nd~QOWRSS9Em9m1XKQYXg5zgyuPFyg9Gf@93f;6OtzDkbwpOx*)TsC%WR4;`=WV8 znL_Icf@^XI&q*c*;t>SAoHkYqde9;55#kE8e)s3^^?qJZ+#0W`Shnhvp?32~*h*D( zYBCM@bIg%+IY5Pw_OL%z%tto0=&LjZs!;_a<-9tq-w%{)KIikAv6&* zkD|YDl(F<#Fcd7Bltz;P1N*_GL*j)}L)b4BbClBko?EM-pAvGOQ7G2KUFE^~$GFQv zvK0|+PF?rAU11?*(%oS0Q@>%CunS0l!h=TlY#Kqr%93mwc`y`#Hk7&ix!rk)W-RfC;nt0&p3a=n^Te6!`zg;{cYx4+=I2%JzbFo;*0Utr0AkeV3GME9E3cOJ4>sr*M0dpz?V`t!zT2|f`rd6o<<|8=t`)} z7VAR8*r<%>aqnSfNYB9KiE8oEv$c9o?9Xt57YsZ%IfFl;N@DcUQ$O!%-f6O3w~v(T z?NRN*HKaM)?H}mBzHz2uFMXx9FnNYPnP^0qJvs%tv9 zLCeP2XF8captp&^CZ2Ip-35&=o$-f*BJXJ?DwOX@Ml90P^ajrjQVyYnYhedpUjMR; z^M+=r&I1`~TZK6jw`>K~X&x;Se$M4E3>*(73-M`!(tKbiM+2GZ&s+ji&-@!SvA)F0 zVPepour%9l!SQ6?>*pKgWY3=t7e`s`(EQE9NU(S-B$@*xV{INNh8**OJJuGGexgv9 z&oLXA1{xllY$4%@xT>IE?hg@8D_)Kkn@F1EAu&Wo>;m+rh074{P*70GcRMJ8C6f!j zlK10z!|ekh;uq~t={?B)U&H%#LgCE~ebr#5ahNzEi_(lp6IO)lZyF=&E;c+40Rm%E z=FZMf(&SKv2yvJlal3;F(~kDGmFJpK@oAVZ2<4f%6LG|H*l~L6e=6>{Q`)S0p`*IB z>g3@dgz~Pex&12n%q`ipQ;rN~%c|5;{K2_gWod+8FmLc63bmqn>O+DBE;HTFmlQFm zl}c5LrP?Wfn+^O%qZ@c~1*e|@xCn-MF&Q=WdWJ{jyH~F{u$M(O`n6p+fNk<5j$(_f zc`XwDZj$02XWDqh-QyA@Rdk1)yc97*^o1RTdq%+0ddLSiF9ZS3xgKn!rwb$^rfV3IlhTdOE)p}9nWF?9z=PVoRBsZ!_+YZk^@C= zu>YZcOv>?k7g=_M>mQwbjkd6{39Bh+ci9jN1uksxfXgHAcLL?~ENx%66a2+{A8@k$ zT*!M4@%98NeNwI)3kpt$w#hz|+-e>;VH`baUJY8&}-BBrQ(I!=e{>W2)QkvT=t5)6bl!!TO7$gFD zn>-S69uv{O6zm~i>$q{6`Kkw(#`p%p@HkylpyhhLHg8559nY;g+>h!CH$@g_t)6$@ zugfI}ym{8RpO7zK>V+`72omC_zf0E;6lEEGPMf-)&7AbFajRe&&}8AV0>hJH=y8nD zl)Q|a>bXQQ2|K&w+VBkFZMqOnDV0y-Xmy7Sz*HaWi2qK1>VblgeK&HtKUw8;BMk7x zqepnft$~PLXv1(G-bpwdF6-|1INg_HcDu)xDzG=gr?|dGKbe?x*5|-H0$Cvls;0k|#JcQ1p@*g~wst6gq$@ zrHlfOImB!ki6hY7Fhv~s2@falV;AT4T8=3S^|L36GRH}kv5fdjNIlM#$7NE1f?jJh zI6J+O~tl#@jB z8!!vz<(Qa+q3IZV+=Y3`#P#JiC-RH)4hgkV#eF`Q3#_1?C%lSZArCb=o#8}YhosX_ zsI}3Sf=7Wx{SChJ(7F#3qJq>$b)2%WZhISs!|!?v6M;)gftjT&hkY&Q7}5S+Ycn&c-R4Zq*?Q=&+r zX1%!qj9M5+I3ncF{~BAt>fU>Xo#xK-ezIEbzohDKj6ZT54^L7^ubsHzuE%NB)MM|mJgUuz7ZzRt?3UFppvaJd!Y8zi20S=-Yc9AwCjWf3>4Tbje|C5qGIvB?*b zd6s$ZnbS|Yk^PD?mtbTuW?#ank42|dT~bvoV@x~BEpn;M*S#K4zv%?`xnxO$ptRwt zSb$`cn}|Kk1HsUAKXEjTF$IWjZQCTjWgJAk!rFCL!xN{_%@dJeU)nA;ZYc&lN0+}! zGMToUYqUUFHVNljYXX)Nq)V~82^ONE8+Uz`eBMldBaZ8Iqp#9#v7hAVt3=lKX9y(s zl+1J1?m;{D!+QHuS8e2!Mj*WCeT{ESPEd0v>dY+2AfNy#8SD&%i^fpP8QZgU3I_T~@<@&3er81YFZT5@|SnS3EmP%GG>~SF`p(ov}>8Y@Ru7%)xW2 zzXxj)BB4?one$ZE)#>aNb>m9^ec8f!3HPXt>H?_vLuU|Mr?h>-==P|9c1pOXEcgY} z{VH{l0z3xn4lFi4vaYEqm2Xbg`#Or6CcU*P4vrDrh=12o{mTYw6i!Ht+M9`~3wSWp zpP>hoZ__$hBN;hsit%A#v^57r4tuazjq&PIsf_qJnga?{+HJN)fs?tE?a0H&(ja!^ z2eqAuXZTH>ro;{7@cKLs8)@I5lJ$~TU0V?kG|~sYsL37U7AOp4+a&0WcjXF1G;B;2 zIEfWJYQ~E&`85CR&%fH?AkQdGAQ3DkJ~qLqrn0#T5<_D2jc-w=qMiSC} z<;8U9Xi9G_Z8LyYAZzKhabCn-(6UNUMLR|W7(tERT9He#S-oSRfIjHq^h}cKWs2EG zehM`b2PoQ)g@pxw0qdP$1a39g<%-86Avyb72k0R9heF`4Z#R@s3dg6|1uy@~f;3QP z{LjfZw@6KjORxkCR^zFCl;Ti&eJ`+z%JL3HnHumtjZnG}mJG!{Sgd+*2+fRoG)Uy% zF(D7C;HJSLfH`XT09tq|EL07!?rKw5alD)&GwE+?B{`2Vhm53>{Ft|{Y3oxDqC}St z^1En(w3zw}Xh@~87oS6|i;QI2V05Wa=@26;bttAT2LcQr$#{Ez|Bz2NcWcBF#BYQ| zBwpB-mRVKjvB81rHFQg;^5eb^WdE9s3&l3>_>GI;NZd6XGafvPJ&PK=P4lELYS-Bb z5*E|^W}DNT2gkP$2?#G(N+l`MLx#Fd^(l*}WP;RivB8B}%P%zFNFq>@^RdMORx_n; z=Mo#04Z*PZ9w^4DfqJ8r-`tOcCD$7nLWhcxnV@he<|85fs>%>COYX4oAk- z)}~^cE7sRmwfAdr9RI7M343&EezEgWbM_iNZI9aUcWL*xU!D1ucF<_1)W5-hd?LWO^pKXV6{QMm57?#sIky ztmZBYJImj{`^KU@^l-h9t}e0z@+&6`EkgeK2Acx|*x=ztkD>!hTsUB}Jot#YaM~!~ z9IHHkJlQ9p!9oH>NM>Mhf-#Tqn2+#3MB+dCW0XaGpjf1b1l0->5g6@?lyUp_P{7~^ zY#)bqcbdcqHIn^9RN@!3{L^0v(+`+4;VkSxUpjJyS2Fh%HNIS-Uz~T#8i9TWmN&n5S z#HOdj;X|7H14cinjGOQgQ@G@#opduCMl)O=(gfs}?{@D(xC=b5cz=)b$Ve!P*NPei F|1bL+j+g)d literal 0 HcmV?d00001 diff --git a/images/multiple_CU_decomposition.png b/images/multiple_CU_decomposition.png new file mode 100644 index 0000000000000000000000000000000000000000..d2bf49a09a5ff276eca5f9649f40fc595d757fe6 GIT binary patch literal 36680 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 literal 0 HcmV?d00001 diff --git a/lecture11.ipynb b/lecture11.ipynb new file mode 100644 index 0000000..8f51387 --- /dev/null +++ b/lecture11.ipynb @@ -0,0 +1,241 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lecture 11\n", + "\n", + "## 测量\n", + "\n", + "从量子计算的角度来看,量子测量通常被认为是沿着计算基矢的投影测量。电路图中的测量动作可以表示如下:\n", + "\n", + "![Measurement](images/measurement.png)\n", + "\n", + "测量前的单行表示一个量子比特,测量后的双线表示经典比特。\n", + "\n", + "**推迟测量原理(deferred measurement principle)**\n", + "\n", + "对于一个用量子电路来描述的量子计算过程,中间的测量步骤总可以找到一种等价的方式移到线路的末端,而不影响测量结果的概率分布。如果中间过程中的测量结果被用于该电路的某些阶段,则在推迟测量操作的时候,经典的条件运算可以被条件量子运算代替。\n", + "\n", + "以 Lecture 10 中量子隐形传态的电路为例:\n", + "\n", + "![quantum teleportation](images/quantum_teleportation_circuit.png)\n", + "\n", + "以下电路为应用推迟测量原理后的等价电路:\n", + "\n", + "![deferred measurement](images/deferred_measurement.png)\n", + "\n", + "在原本的电路中,测量前的量子态$|\\psi_2\\rangle$为\n", + "\n", + "$$\n", + "|\\psi_2\\rangle = \\frac{1}{2}(|00\\rangle|\\psi\\rangle +|01\\rangle X|\\psi\\rangle + |10\\rangle Z|\\psi\\rangle + |11\\rangle ZX|\\psi\\rangle)\n", + "$$\n", + "\n", + "改为执行受控操作后量子态变为\n", + "\n", + "$$\n", + "|\\psi^{new}_2\\rangle = \\frac{1}{2}(|00\\rangle|\\psi\\rangle +|01\\rangle |\\psi\\rangle + |10\\rangle |\\psi\\rangle - |11\\rangle |\\psi\\rangle)\n", + "$$\n", + "\n", + "此外,还存在着*隐式测量原理(implicit measurement)*,这意味着不需要测量最后的量子比特。\n", + "\n", + "用 MindQuantum 验证以上等价电路同样可以实现量子隐形传态:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "psi = [0.81732835 0.57617216]\n" + ] + }, + { + "data": { + "image/svg+xml": "
\n\n\nq0:\n \n\nq1:\n \n\nq2:\n \n\n\n\n\n\n\n\n\n\n\n\nH\n \n\n\n\n\n\n\n\n\n\n\n\nZ\n \n\n\n\n\n\n\n\n\n\n
", + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from mindquantum.core.gates import X, H, Z, Measure\n", + "from mindquantum.core.circuit import Circuit\n", + "from mindquantum.simulator import Simulator\n", + "import numpy as np\n", + "\n", + "psi = np.random.rand(2)\n", + "psi = psi / np.linalg.norm(psi)\n", + "print(f\"psi = {psi}\")\n", + "bell = np.array([1, 0, 0, 1]) / np.sqrt(2)\n", + "init = np.kron(bell, psi)\n", + "\n", + "sim = Simulator(\"projectq\", 3)\n", + "sim.set_qs(init)\n", + "\n", + "circ = Circuit()\n", + "circ += X.on(1, 0)\n", + "circ += H.on(0)\n", + "circ.barrier(False)\n", + "circ += X.on(2, 1)\n", + "circ += Z.on(2, 0)\n", + "circ += Measure().on(0)\n", + "circ += Measure().on(1)\n", + "\n", + "circ.svg()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8173283543192481¦011⟩\n", + "0.5761721628348514¦111⟩\n" + ] + } + ], + "source": [ + "sim.apply_circuit(circ)\n", + "print(sim.get_qs(ket=True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "可以看到,q0的态$|\\psi\\rangle$已经成功地传送给q2。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**关于量子隐形传态的讨论**\n", + "\n", + "回想一下,量子隐形传态的量子电路的主要部分实际上是贝尔态创建电路的逆过程,我们可以通过将贝尔态投影到前两个量子比特来得出相同的结果。明确地说,让我们考虑 00 的情况,可以写出\n", + "\n", + "$$\n", + "|\\psi\\rangle|B_{00}\\rangle=\\frac{1}{\\sqrt{2}}(|\\psi,0\\rangle|0\\rangle+|\\psi,1\\rangle|1\\rangle)\n", + "$$\n", + "\n", + "其中有$|\\psi\\rangle\\equiv \\alpha|0\\rangle+\\beta|1\\rangle$和$|\\psi,0\\rangle\\equiv|\\psi\\rangle|0\\rangle$。\n", + "\n", + "因此,用$|B_{00}\\rangle$投影后我们有\n", + "\n", + "$$\n", + "\\frac{1}{\\sqrt{2}}(\\langle B_{00}|\\psi,0\\rangle|0\\rangle+\\langle B_{00}|\\psi,1\\rangle|1\\rangle)=\\frac{1}{2}(\\alpha|0\\rangle+\\beta|1\\rangle)=\\frac{1}{2}|\\psi\\rangle\n", + "$$\n", + "\n", + "也可以尝试另外几种可能。\n", + "\n", + "## 不可克隆原理\n", + "\n", + "在经典世界中,经典信息可以被复制任意次数。\n", + "$$\n", + "0 \\rightarrow 00000000\\dots, 1 \\rightarrow 111111\\dots\n", + "$$\n", + "例如我们可以用CNOT实现经典克隆,对于$x\\in [0, 1]$,\n", + "$$\n", + "U_{CNOT}|x\\rangle|0\\rangle=|x\\rangle|x\\rangle\n", + "$$\n", + "关键是不可能对(**未知**)量子态进行这样的(**与状态无关的**)操作,即**完美**克隆$|\\psi\\rangle \\rightarrow |\\psi\\rangle|\\psi\\rangle|\\psi\\rangle|\\psi\\rangle|\\psi\\rangle\\dots$是被量子力学禁止的。\n", + "\n", + "例如,对于$|\\psi\\rangle\\equiv\\alpha|0\\rangle+\\beta|1\\rangle$,\n", + "$$\n", + "U_{CNOT}|\\psi\\rangle|0\\rangle=\\alpha|00\\rangle+\\beta|11\\rangle \\neq|\\psi\\rangle|\\psi\\rangle\n", + "$$\n", + "\n", + "**证明**\n", + "\n", + "以下适用于任何规模的量子系统。\n", + "\n", + "- 假设存在这样的克隆机,即\n", + "\n", + "$$\n", + "U_{clone}|\\psi\\rangle|0\\rangle=|\\psi\\rangle|\\psi\\rangle\n", + "$$\n", + "\n", + "- 它应该适用于任何状态,因此\n", + "\n", + "$$\n", + "U_{clone}|\\phi\\rangle|0\\rangle=|\\phi\\rangle|\\phi\\rangle\n", + "$$\n", + "\n", + "- 当然,我们需要假定这样的操作是幺正的,这意味着\n", + "\n", + "$$\n", + "\\langle\\psi|\\phi\\rangle=\\langle\\psi|\\langle 0|U^\\dagger_{clone}U_{clone}|\\phi\\rangle|0\\rangle=\\langle\\psi|\\phi\\rangle^2\n", + "$$\n", + "\n", + "这就产生了矛盾。\n", + "\n", + "**备选证明**(基于线性)\n", + "\n", + "- 考虑量子比特$|\\psi\\rangle=\\alpha|0\\rangle+\\beta|1\\rangle$\n", + "\n", + "- 假设存在这样的克隆机,即\n", + "\n", + "$$\n", + "U_{clone}|\\psi\\rangle|0\\rangle=|\\psi\\rangle|\\psi\\rangle\n", + "$$\n", + "\n", + "- 还假设它是一个线性运算,即\n", + "\n", + "$$\n", + "U_{clone}|\\psi\\rangle|0\\rangle = \\alpha U_{clone}|0\\rangle|0\\rangle+\\beta U_{clone}|1\\rangle|0\\rangle=\\alpha |0\\rangle|0\\rangle+\\beta|1\\rangle|1\\rangle\n", + "$$\n", + "\n", + "这再次导致矛盾。\n", + "\n", + "## 通用量子门\n", + "\n", + "经典计算中存在着通用门,比如与非门。现在我们想找到量子计算的通用量子门集,且希望这些通用量子门作用的比特数尽可能少,这可能有许多不同的选择。\n", + "\n", + "作为一个例子,我们会对这样的集合感兴趣:\n", + "\n", + "$$\n", + "G= \\{ U_{CNOT}, R_z(\\theta),R_y(\\phi)\\}\n", + "$$" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" + }, + "kernelspec": { + "display_name": "Python 3.9.9 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture3.ipynb b/lecture3.ipynb index 813dd9e..15f582e 100644 --- a/lecture3.ipynb +++ b/lecture3.ipynb @@ -6,23 +6,23 @@ "source": [ "# Lecture 3\n", "## 贝尔态\n", - "- 两比特的最大纠缠态称为贝尔态(总共四种):\n", + "两比特的最大纠缠态称为贝尔态(总共四种):\n", "$$\n", "|\\psi_{Bell} \\rangle = \\frac{1}{\\sqrt{2}}(|00\\rangle + |11\\rangle)\n", "$$\n", "\n", - "- 剩下三种贝尔态为\n", + "剩下三种贝尔态为\n", "$$\n", "\\frac{1}{\\sqrt{2}}(|00\\rangle - |11\\rangle),\\enspace\\frac{1}{\\sqrt{2}}(|01\\rangle + |10\\rangle),\\enspace \\frac{1}{\\sqrt{2}}(|01\\rangle - |10\\rangle)\n", "$$\n", "\n", - "- 多比特量子态表示为:\n", + "多比特量子态表示为:\n", "$$\n", "|\\psi_n \\rangle = \\sum_{x\\in[0,1]^n}c_{x_1 x_2 \\cdots x_n}|x_1 x_2 \\cdots x_n\\rangle = \\sum_{x\\in [0,1]^n} c_x|x\\rangle \\ ,\n", "$$\n", "其中 $\\sum_x |c_x|^2=1$。\n", "\n", - "- 若想在MindQuantum中将模拟器的量子态设置为第一种贝尔态,则需要得知贝尔态的列向量:\n", + "若想在MindQuantum中将模拟器的量子态设置为第一种贝尔态,则需要得知贝尔态的列向量:\n", "$$\n", "\\frac{1}{\\sqrt{2}}(|00\\rangle + |11\\rangle) = \\frac{1}{\\sqrt{2}}\\begin{pmatrix}\n", "1 \\\\ 0 \\\\ 0 \\\\ 1\n", @@ -60,7 +60,7 @@ "metadata": {}, "source": [ "## 幺正变换\n", - "- 先前提到量子态是一个(列)向量$|\\psi\\rangle$(ket),并且其振幅的平方就是概率。与之对应的则是(行)向量$\\langle \\psi|$(bra),\n", + "先前提到量子态是一个(列)向量$|\\psi\\rangle$(ket),并且其振幅的平方就是概率。与之对应的则是(行)向量$\\langle \\psi|$(bra),\n", "\n", "$$\n", "|\\psi \\rangle = \\alpha |0\\rangle + \\beta |1 \\rangle \\to \\langle \\psi| \\equiv \\alpha^* \\langle 0 | + \\beta^* \\langle 1|\n", @@ -74,7 +74,7 @@ "\n", "这也被称为归一化条件。\n", "\n", - "- 因此若量子态是一个向量,则改变量子态的操作必须是一个矩阵(基于线性代数)。\n", + "所以,若量子态是一个向量,则改变量子态的操作必须是一个矩阵(基于线性代数)。\n", "$$\n", "|\\psi\\rangle \\to U|\\psi\\rangle\n", "$$\n", @@ -84,13 +84,11 @@ "$$\n", "其中$A^\\dagger \\equiv (A^T)^*$。\n", "\n", - "- 为了保证概率守恒,我们需要\n", + "为了保证概率守恒,我们需要\n", "$$\n", "\\langle \\psi|\\psi\\rangle = \\langle \\psi|U^\\dagger U|\\psi\\rangle = 1\n", "$$\n", - "对于所有可能的$|\\psi\\rangle$都成立。\n", - "\n", - "- 这就意味着\n", + "对于所有可能的$|\\psi\\rangle$都成立。这就意味着\n", "$$\n", "U^\\dagger U = I \\Rightarrow U^\\dagger = U^{-1}\n", "$$\n", @@ -104,23 +102,22 @@ "- 换句话说,任何量子计算的量子动力学行为都必须是一种幺正变换(的子集)。\n", "\n", "### 作为幺正变换的量子计算?\n", - "- 接下来,我们可以想象量子计算是由一类幺正变换来表示,例如\n", + "接下来,我们可以想象量子计算是由一类幺正变换来表示,例如\n", "$$\n", "U|\\psi_{in}\\rangle=|\\psi_{out}\\rangle\n", "$$\n", - "- 传统上,物理学家以这种方式解决问题:已知初态和哈密顿量,寻找末态。\n", - "- 但对于量子计算,通常我们已知初态与末态,而目标是找到量子线路$U$(量子算法)。\n", - "- 与经典计算相比较:\n", + "\n", + "传统上,物理学家以这种方式解决问题:已知初态和哈密顿量,寻找末态。但对于量子计算,通常我们已知初态与末态,而目标是找到量子线路$U$(量子算法)。\n", + "\n", + "与经典计算相比较:\n", "$$\n", "f(x_{in})=y_{out}\n", "$$\n", - "- 我们稍后会表明量子计算是更加普适的,这意味着我们也可以用量子计算机完成经典计算任务。\n", - "- 问题的关键是一旦定义好输入与输出之间的逻辑关系,我们需要知道如何在物理上实现其对应的幺正变换(称为量子电路)。\n", - "- 回想一下,经典电路由基本的逻辑运算组成。(AND, OR, NOT, NAND等)\n", - "- 量子电路同样应该由基本逻辑运算组成,它们是什么?(我们会在之后发现)\n", + "我们稍后会表明量子计算是更加普适的,这意味着我们也可以用量子计算机完成经典计算任务。问题的关键是一旦定义好输入与输出之间的逻辑关系,我们需要知道如何在物理上实现其对应的幺正变换(称为量子电路)。回想一下,经典电路由基本的逻辑运算组成(AND, OR, NOT, NAND等),量子电路同样应该由基本逻辑运算组成,它们是什么?(我们会在之后发现)\n", + "\n", "\n", + "**术语**\n", "\n", - "## 术语\n", "- 量子线路:实现量子算法的一种方式(更大的幺正矩阵)\n", "\n", "- 量子门:量子电路的元素(较小的幺正矩阵)\n", @@ -130,27 +127,27 @@ "## 泡利`X`门\n", "**单量子比特门$\\equiv$单量子比特幺正矩阵(变换)**\n", "\n", - "- 让我们从经典的单比特门入手:\n", + "让我们从经典的单比特门入手:\n", "$$\n", "Logical \\enspace NOT \\enspace gate: \\enspace 1 \\to 0 \\enspace and \\enspace 0 \\to 1\n", "$$\n", - "- 而现在我们想要如下效果\n", + "而现在我们想要如下效果\n", "$$\n", "Logical \\enspace NOT \\enspace gate: \\enspace |1\\rangle \\to |0\\rangle \\enspace and \\enspace |0\\rangle \\to |1\\rangle\n", "$$\n", "这也被称为**比特翻转**。\n", "\n", - "- 使用泡利`X`门就可以做到上述操作\n", + "使用泡利`X`门就可以做到上述操作\n", "$$\n", "\\sigma_x \\equiv U_X \\equiv X = |1\\rangle\\langle 1| = \\begin{pmatrix} 0 & 1 \\\\ 1 & 0 \\end{pmatrix}\n", "$$\n", "\n", - "- 可以验证泡利`X`门是幺正矩阵:\n", + "可以验证泡利`X`门是幺正矩阵:\n", "$$\n", "X^\\dagger X = \\begin{pmatrix} 0 & 1 \\\\ 1 & 0 \\end{pmatrix}\\begin{pmatrix} 0 & 1 \\\\ 1 & 0 \\end{pmatrix} = \\begin{pmatrix} 1 & 0 \\\\ 0 & 1 \\end{pmatrix} = I\n", "$$\n", "\n", - "- 用狄拉克符号可以容易的验证:\n", + "用狄拉克符号可以容易的验证:\n", "\n", "$$\n", "X|1\\rangle = (|1\\rangle\\langle 0|+|0\\rangle\\langle 1|)|1\\rangle = |1\\rangle\\langle 0|1\\rangle + |0\\rangle\\langle 1|1\\rangle = |0\\rangle\n", @@ -160,7 +157,7 @@ "X|0\\rangle = (|1\\rangle\\langle 0|+|0\\rangle\\langle 1|)|0\\rangle = |1\\rangle\\langle 0|0\\rangle + |0\\rangle\\langle 1|0\\rangle = |1\\rangle\n", "$$\n", "\n", - "- 泡利`X`门作用在任意量子态的效果如下:\n", + "泡利`X`门作用在任意量子态的效果如下:\n", "$$\n", "X|\\psi\\rangle=X(\\alpha|0\\rangle+\\beta|1\\rangle)=\\alpha X|0\\rangle+\\beta X|1\\rangle = \\alpha |1\\rangle+\\beta |0\\rangle\n", "$$\n", @@ -171,7 +168,7 @@ "\n", "
\n", "\n", - "- 现在我们可以尝试在MindQuantum中搭建一个简单的量子电路——对一个量子比特作用泡利`X`门。首先创建一个量子电路:" + "现在我们可以尝试在MindQuantum中搭建一个简单的量子电路——对一个量子比特作用泡利`X`门。首先创建一个量子电路:" ] }, { @@ -252,7 +249,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.9" + "version": "3.8.13" }, "orig_nbformat": 4 }, diff --git a/lecture5.ipynb b/lecture5.ipynb index c7e4fdb..d89902f 100644 --- a/lecture5.ipynb +++ b/lecture5.ipynb @@ -6,8 +6,9 @@ "source": [ "# Lecture 5\n", "\n", - "**Lecture 4 课后练习解答**\n", - "- 考虑$R_x(\\theta)=e^{-i\\theta X/2}$,让我们回顾一下$e$指数上矩阵的定义——级数展开,现在我们考虑如下简单情形:\n", + "**计算$R_x(\\theta)$的矩阵**\n", + "\n", + "考虑$R_x(\\theta)=e^{-i\\theta X/2}$,让我们回顾一下$e$指数上矩阵的定义——级数展开,现在我们考虑如下简单情形:\n", "$$\n", "Q_\\theta = e^{\\theta X} = I+\\theta X + \\frac{\\theta^2}{2!}X^2+\\frac{\\theta^3}{3!}X^3+\\cdots\n", "$$\n", @@ -17,7 +18,7 @@ "$$\n", "又有$e^x=\\cosh{x}+\\sinh{x}$,因此我们可以将上式总结为$Q_\\theta=I\\cosh{\\theta}+X\\sinh{\\theta}$。\n", "\n", - "- 将$\\theta$替换为$-i\\theta/2$,即得到\n", + "将$\\theta$替换为$-i\\theta/2$,即得到\n", "\n", "$$\n", "R_{x}(\\theta)=I \\cos \\frac{\\theta}{2}-i X \\sin \\frac{\\theta}{2}=\\left(\\begin{array}{cc}\n", @@ -32,7 +33,7 @@ "\\end{array}\\right) .\n", "$$\n", "\n", - "- 同样的,由于$Y|0\\rangle=i|1\\rangle$,并且\n", + "同样的,由于$Y|0\\rangle=i|1\\rangle$,并且\n", "$$\n", "R_y(\\theta)=Icos\\frac{\\theta}{2}-iYsin\\frac{\\theta}{2}\n", "$$\n", @@ -40,7 +41,9 @@ "\n", "---\n", "\n", - "**下面的特性你需要了解:**\n", + "## $R_z$门\n", + "\n", + "$R_z$门有以下几个特性:\n", "$$\n", "X R_{z}(\\theta) X=R_{z}(-\\theta)=R_{z}(\\theta)^{-1}=R_{z}(\\theta)^{\\dagger}\n", "$$\n", @@ -137,7 +140,7 @@ "output_type": "stream", "text": [ "q0: ──RZ(1)^-1──\n", - "(0.877582561890373+0.4794255386042032j)¦0⟩\n" + "(0.8775825618903726+0.47942553860420295j)¦0⟩\n" ] } ], @@ -184,44 +187,44 @@ "metadata": {}, "source": [ "\n", - "- 最后,为何一定是$X, Y, Z$?我们也可以考虑一个任意的旋转。这需要我们定义\n", + "最后,为何一定是$X, Y, Z$?我们也可以考虑一个任意的旋转。这需要我们定义\n", "$$\n", "R_{n}(\\theta) \\equiv e^{-i(\\theta / 2) n \\cdot \\sigma}=c_{\\theta} I-i s_{\\theta}(n \\cdot \\sigma)\n", "$$\n", "其中$n\\cdot\\sigma\\equiv n_x X+n_y Y+n_z Z$,且$n_x^2+n_y^2+n_z^2=1$。(第二个等式是一个好的练习/作业)\n", "\n", - "- 该旋转算子可以生成任意的单量子比特旋转$U$(相差一个全局相位)。从某种意义上说,给定任何的$U$,人们总是可以选择角度$\\theta$和旋转轴$\\hat{n}$,使得(**想想看**)\n", + "该旋转算子可以生成任意的单量子比特旋转$U$(相差一个全局相位)。从某种意义上说,给定任何的$U$,人们总是可以选择角度$\\theta$和旋转轴$\\hat{n}$,使得(**想想看**)\n", "$$\n", "U=e^{i\\alpha}R_n(\\theta)\n", "$$\n", "\n", - "---\n", + "**部分证明**\n", "\n", - "- 部分证明:首先,任何 $2\\times 2$ 矩阵都可以用泡利矩阵展开(完全基)。回想一下,任何状态都可以用 0,1 基分解,即$|\\psi\\rangle=a|0\\rangle+b|1\\rangle$。一开始你不需要知道 a 和 b。 为了确定它们,我们可以使用内积,$\\langle 0|\\psi\\rangle=a\\langle 0|0\\rangle + b\\langle 0|1\\rangle=a$。\n", + "首先,任何 $2\\times 2$ 矩阵都可以用泡利矩阵展开(完全基)。回想一下,任何状态都可以用 0,1 基分解,即$|\\psi\\rangle=a|0\\rangle+b|1\\rangle$。一开始,你不需要知道 a 和 b。 要确定它们,我们可以使用内积,$\\langle 0|\\psi\\rangle=a\\langle 0|0\\rangle + b\\langle 0|1\\rangle=a$。\n", "\n", - "- 类似的,我们可以对泡利矩阵做同样的事。即对任意$2\\times 2$矩阵$U$,我们总是可以写出\n", + "类似的,我们可以对泡利矩阵做同样的事。即对任意$2\\times 2$矩阵$U$,我们总是可以写出\n", "$$\n", "U=aI+bX+cY+dZ\n", "$$\n", "\n", - "- 第一步,$X, Y, Z$泡利矩阵是无迹的。(迹 $\\operatorname{Tr}$ 含义是对矩阵对角线上的值求和;$\\operatorname{Tr}$ 是线性运算)\n", + "第一步,$X, Y, Z$泡利矩阵是无迹的。(迹 $\\operatorname{Tr}$ 含义是对矩阵对角线上的值求和;$\\operatorname{Tr}$ 是线性运算)\n", "$$\n", "\\operatorname{Tr}(U)=a \\operatorname{Tr}(I)+b \\operatorname{Tr}(X)+c \\operatorname{Tr}(Y)+d \\operatorname{Tr}(Z)=2 a\n", "$$\n", "这意味着$a=\\operatorname{Tr}(U)/2$。\n", "\n", - "- 接下来我们将$X$作用于$U$,得到\n", + "接下来我们将$X$作用于$U$,得到\n", "$$\n", "XU=aX+bI+cXY+dXZ\n", "$$\n", "\n", - "- 然后对上式求迹,\n", + "然后对上式求迹,\n", "$$\n", "\\operatorname{Tr}(X U)=b \\operatorname{Tr}(I)+c \\operatorname{Tr}(X Y)+d \\operatorname{Tr}(X Z)=2 b\n", "$$\n", "这意味着 $b=\\operatorname{Tr}(XU)/2$ 。同理有 $c=\\operatorname{Tr}(YU)/2$ 和 $d=\\operatorname{Tr}(ZU)/2$ 。\n", "\n", - "- 至此,如果我们使$a=|a|e^{i\\alpha}$,离证明完成已经非常接近了。" + "至此,如果我们使$a=|a|e^{i\\alpha}$,离证明完成已经非常接近了。" ] }, { @@ -231,7 +234,9 @@ "\n", "---\n", "\n", - "- 哈达玛门$H$ (Hadamard gate):(我认为几乎所有量子电路都有哈达玛门)\n", + "## 哈达玛门\n", + "\n", + "几乎所有量子电路都有哈达玛门 (Hadamard gate)。哈达玛门$H$:\n", "$$\n", "H \\equiv \\frac{1}{\\sqrt{2}}\\left(\\begin{array}{cc}\n", "1 & 1 \\\\\n", @@ -249,16 +254,16 @@ "H|0\\rangle=\\frac{1}{\\sqrt{2}}(|0\\rangle+|1\\rangle) \\quad, H|1\\rangle=\\frac{1}{\\sqrt{2}}(|0\\rangle-|1\\rangle)\n", "$$\n", "\n", - "- 注意到$H$也是自逆的,即$H^2=I$,并且$H=(X+Z)/\\sqrt{2}$。\n", + "注意到$H$也是自逆的,即$H^2=I$,并且$H=(X+Z)/\\sqrt{2}$。\n", "\n", - "- 以下是一些哈达玛门的性质会在之后用到:\n", + "以下是一些哈达玛门的性质:\n", "$$\n", "HXH=Z\\quad HZH=X\\quad HYH=-Y\n", "$$\n", "\n", - "- 例如,$HR_x(\\theta)H=Icos\\frac{\\theta}{2}-iHXHsin\\frac{\\theta}{2}=R_z(\\theta)$。\n", + "例如,$HR_x(\\theta)H=Icos\\frac{\\theta}{2}-iHXHsin\\frac{\\theta}{2}=R_z(\\theta)$。\n", "\n", - "- 最后我们还需要知道另外两个单比特门:\n", + "最后我们还需要知道另外两个单比特门:\n", "$$\n", "S \\equiv\\left(\\begin{array}{ll}\n", "1 & 0 \\\\\n", @@ -270,9 +275,7 @@ "$$\n", "并且有$S=T^2$。\n", "\n", - "- 实际上,在实验室中,人们可能不具备从任意方向控制量子比特旋转的能力。\n", - "\n", - "- 比如说,如果我们只能实现$R_z$和$R_y$该怎么办?\n", + "实际上,在实验室中,人们可能不具备从任意方向控制量子比特旋转的能力。比如说,如果我们只能实现$R_z$和$R_y$该怎么办?\n", "\n", "
\n", "\n", @@ -349,7 +352,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.9" + "version": "3.8.13" }, "orig_nbformat": 4 }, diff --git a/lecture7.ipynb b/lecture7.ipynb new file mode 100644 index 0000000..8d74452 --- /dev/null +++ b/lecture7.ipynb @@ -0,0 +1,314 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lecture 7\n", + "\n", + "## ABC分解\n", + "\n", + "对于一个任意的单比特幺正门,可以有以下分解:\n", + "$$\n", + "U=e^{i\\alpha}AXBXC\n", + "$$\n", + "其中$A$,$B$和$C$是旋转算符的乘积,$X$是泡利$X$算符,并且有$ABC=I$。这个分解对于构建两比特控制$U$门起到重要作用。问题的关键在于该如何找到$A, B, C$的显式形式,并且满足$ABC=I$。\n", + "\n", + "---\n", + "\n", + "**证明**\n", + "\n", + "考虑如下trick:\n", + "$$\n", + "R_{y}\\left(\\frac{\\gamma}{2}\\right) X^{c} R_{y}\\left(\\frac{-\\gamma}{2}\\right) X^{c}\n", + "$$\n", + "(i) $c=1$,我们有$R_y(\\frac{\\gamma}{2})XR_y(\\frac{-\\gamma}{2})X=R_y(\\gamma)$\n", + "\n", + "(ii) $c=0$,我们有$R_y(\\frac{\\gamma}{2})R_y(\\frac{-\\gamma}{2})=I$\n", + "\n", + "这就是一个基本的控制$R_y$门。现在如果我们考虑如下形式:\n", + "$$\n", + "R_{z}(\\beta) R_{y}\\left(\\frac{\\gamma}{2}\\right) \\cdot X^{c} R_{y}\\left(\\frac{-\\gamma}{2}\\right) X^{c}\n", + "$$\n", + "(i) 当$c=1$时上式回归到$R_z(\\beta)R_y(\\gamma)$,这还缺少一个因子$R_z(\\delta)$。\n", + "\n", + "(ii) 当$c=0$,我们有$R_z(\\beta)$。\n", + "\n", + "因此我们需要为这些情况构造$R_z$门。让我们考虑这额外的部分,\n", + "$$\n", + "X^xR_z(a)X^cR_z(b)\n", + "$$\n", + "(i) $c=1$,上式变为$R_z(-a+b)$;\n", + "\n", + "(ii) $c=0$,上式变为$R_z(a+b)$。\n", + "\n", + "因此我们只要令$\\delta=-a+b$和$-\\beta=a+b$,亦即$a=-(\\beta+\\delta)/2$和$b=(\\delta-\\beta)/2$。综合以上内容,如下形式应当能给出正确解答:\n", + "$$\n", + "R_{z}(\\beta) R_{y}\\left(\\frac{\\gamma}{2}\\right) \\cdot X^{c} R_{y}\\left(\\frac{-\\gamma}{2}\\right) X^{c} \\cdot X^{c} R_{z}(a) X^{c} R_{z}(b)=R_{z}(\\beta) R_{y}\\left(\\frac{\\gamma}{2}\\right) X^{c} R_{y}\\left(\\frac{-\\gamma}{2}\\right) R_{z}(a) X^{c} R_{z}(b)\n", + "$$\n", + "\n", + "即\n", + "$$\n", + "\\begin{aligned}\n", + "A & =R_{z}(\\beta) R_{y}\\left(\\frac{\\gamma}{2}\\right)\\\\\n", + "B & =R_{y}\\left(\\frac{-\\gamma}{2}\\right) R_{z}(a)\\\\\n", + "C & =R_z(b)\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "关于单比特门的讨论到这里就结束了,接下来我们将关注双比特门,即$4\\times 4$的幺正矩阵。\n", + "\n", + "## CNOT门\n", + "\n", + "CNOT门应该是双比特门中最有名的一个,其作用在计算基矢的效果如下:\n", + "$$\n", + "|00\\rangle \\rightarrow |00\\rangle\n", + "$$\n", + "\n", + "$$\n", + "|01\\rangle \\rightarrow |01\\rangle\n", + "$$\n", + "\n", + "$$\n", + "|10\\rangle \\rightarrow |11\\rangle\n", + "$$\n", + "\n", + "$$\n", + "|11\\rangle \\rightarrow |10\\rangle\n", + "$$\n", + "\n", + "通常第一个比特被称为控制比特,第二个比特被称为目标比特。以上形式可以用更紧凑的形式表示:\n", + "$$\n", + "|x,y\\rangle \\rightarrow |x,y\\oplus x\\rangle\n", + "$$\n", + "\n", + "其中$y\\oplus x$是按位乘法(模二加法),等同于异或门(XOR gate)。\n", + "\n", + "以下是CNOT门的矩阵形式:\n", + "$$\n", + "U_{\\mathrm{CNOT}}=\\left[\\begin{array}{l}\n", + "1 \\\\\n", + "0 \\\\\n", + "0 \\\\\n", + "0\n", + "\\end{array}\\right]\\langle 00|+\\left[\\begin{array}{l}\n", + "0 \\\\\n", + "1 \\\\\n", + "0 \\\\\n", + "0\n", + "\\end{array}\\right]\\langle 01|+\\left[\\begin{array}{l}\n", + "0 \\\\\n", + "0 \\\\\n", + "0 \\\\\n", + "1\n", + "\\end{array}\\right]\\langle 10|+\\left[\\begin{array}{l}\n", + "0 \\\\\n", + "0 \\\\\n", + "1 \\\\\n", + "0\n", + "\\end{array}\\right]\\langle 11|=\\left[\\begin{array}{llll}\n", + "1 & 0 & 0 & 0 \\\\\n", + "0 & 1 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 1 \\\\\n", + "0 & 0 & 1 & 0\n", + "\\end{array}\\right]\n", + "$$\n", + "\n", + "在量子线路中,CNOT门用下面的符号表示:\n", + "\n", + "![cnot in circuit](images/cnot_gate.png)\n", + "\n", + "实际上CNOT门就是控制X门:\n", + "\n", + "![cnot equivalent](images/cnot_equivalent.png)\n", + "\n", + "CNOT门是可逆的,并且有$CNOT \\enspace CNOT=I$。\n", + "\n", + "稍后我们将证明CNOT门与单比特门的集合对于量子计算是通用的,即我们可以用它们构造任意数量的量子比特的所有幺正变换。\n", + "\n", + "---\n", + "\n", + "在 MindQuanutum 中一般通过为X门添加控制位的方式得到CNOT门,因为 MindQuantum 可以简洁地为任意量子门添加控制位,只需要输入控制位作为第二个参数:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "q0: ──●──\n", + " │\n", + "q1: ──X──\n" + ] + } + ], + "source": [ + "from mindquantum.core.gates import X\n", + "from mindquantum.core.circuit import Circuit\n", + "\n", + "circ = Circuit()\n", + "circ += X.on(1, 0)\n", + "print(circ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "对于其它的量子门,同样可以用该方式添加控制位:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "q0: ──●──────●────\n", + " │ │\n", + "q1: ──Y──────┼────\n", + " │\n", + "q2: ───────RX(1)──\n" + ] + } + ], + "source": [ + "from mindquantum.core.gates import Y, RX\n", + "from mindquantum.core.circuit import Circuit\n", + "\n", + "circ = Circuit()\n", + "circ += Y.on(1, 0)\n", + "circ += RX(1).on(2, 0)\n", + "print(circ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SWAP门\n", + "\n", + "三个CNOT门可以构成SWAP门:\n", + "\n", + "![SWAP gate](images/swap_gate.png)\n", + "\n", + "作用于 0,1 基的效果如下:\n", + "$$\n", + "\\begin{aligned}\n", + "|00\\rangle & \\rightarrow|00\\rangle \\rightarrow|00\\rangle \\rightarrow|00\\rangle \\\\\n", + "|01\\rangle & \\rightarrow|01\\rangle \\rightarrow|11\\rangle \\rightarrow|10\\rangle \\\\\n", + "|10\\rangle & \\rightarrow|11\\rangle \\rightarrow|01\\rangle \\rightarrow|01\\rangle \\\\\n", + "|11\\rangle & \\rightarrow|10\\rangle \\rightarrow|10\\rangle \\rightarrow|11\\rangle\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "可以看到,SWAP门的作用正是交换两个比特的量子态,数学表示如下:\n", + "\n", + "$$\n", + "U_{S W A P}(\\alpha|0\\rangle+\\beta|1\\rangle)(\\gamma|0\\rangle+\\delta|1\\rangle)=(\\gamma|0\\rangle+\\delta|1\\rangle)(\\alpha|0\\rangle+\\beta|1\\rangle)\n", + "$$\n", + "\n", + "也可以记为以下形式:\n", + "\n", + "$$\n", + "U_{S W A P}(\\alpha \\gamma|00\\rangle+\\beta \\gamma|10\\rangle+\\alpha \\delta|01\\rangle+\\beta \\delta|11\\rangle)=\\alpha \\gamma|00\\rangle+\\beta \\gamma|01\\rangle+\\alpha \\delta|10\\rangle+\\beta \\delta|11\\rangle\n", + "$$\n", + "\n", + "---\n", + "\n", + "在MindQuantum中,SWAP门的用法与其它基本门相似,唯一的区别是它有两个目标比特,因此需要将包含两个目标位的`list[int]`作为参数输入:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "q0: ──@──\n", + " │\n", + "q1: ──@──\n" + ] + } + ], + "source": [ + "from mindquantum.core.gates import SWAP\n", + "from mindquantum.core.circuit import Circuit\n", + "\n", + "circ = Circuit()\n", + "circ += SWAP.on([1, 0])\n", + "print(circ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 作业\n", + "\n", + "1. 若$q_0$处于叠加态$| \\psi\\rangle =\\frac{1}{\\sqrt{2}}(|0\\rangle + |1\\rangle)$,$q_1$处于$|0\\rangle$态,现在对$q_0$、$q_1$作用CNOT门(控制位为$q_0$,目标位为$q_1$),请问该两比特系统的末态是什么样的,你是否能叫出它的名字?请用MindQuantum计算或验证你的结果。\n", + "\n", + "Hint:Lecture 5 中我们学过,哈达玛门`H`作用在$|0\\rangle$态效果如下:\n", + "$$\n", + "H|0\\rangle=\\frac{1}{\\sqrt{2}}(|0\\rangle+|1\\rangle)\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. 请你用MindQuantum验证SWAP门可以分解为三个CNOT门(即两者矩阵等价)。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" + }, + "kernelspec": { + "display_name": "Python 3.9.9 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture9.ipynb b/lecture9.ipynb new file mode 100644 index 0000000..3c52c43 --- /dev/null +++ b/lecture9.ipynb @@ -0,0 +1,215 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lecture 9\n", + "\n", + "## CC-U 门分解\n", + "\n", + "接下来的讨论是为之后证明CNOT与单比特门的集合的通用性做铺垫,我们需要一些分解线路的方法作为工具。\n", + "\n", + "对于多控制门,我们考虑以下情况:\n", + "$$\n", + "U=V^2\n", + "$$\n", + "存在以下等价线路:\n", + "\n", + "![CC-U gate decomposition](images/CC_U_decomposition.png)\n", + "\n", + "这是一种用受控V门简化CC-U门的标准分解方法。\n", + "\n", + "为了理解它(不是证明它),让我们忘记第一个和最后一个控制操作。 在这种情况下,中间部分给出了以下变换:\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "|00\\rangle & \\rightarrow I \\qquad \\qquad |00\\rangle\\langle 00| \\otimes I \\rightarrow |00\\rangle\\langle 00| \\otimes I \\\\\n", + "|11\\rangle & \\rightarrow I \\qquad \\qquad |11\\rangle\\langle 11| \\otimes I \\rightarrow |11\\rangle\\langle 11| \\otimes V^2 \\\\\n", + "|01\\rangle & \\rightarrow V^\\dagger \\qquad \\quad |01\\rangle\\langle 01| \\otimes V^\\dagger \\rightarrow |01\\rangle\\langle 01| \\otimes V^\\dagger V \\\\\n", + "|10\\rangle & \\rightarrow V^\\dagger \\qquad \\quad |10\\rangle\\langle 10| \\otimes V^\\dagger \\rightarrow |10\\rangle\\langle 10| \\otimes V V^\\dagger\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "CC-U门的效果实际上是这样:\n", + "$$\n", + "C_{U}=|00\\rangle\\langle 00|\\otimes I+| 01\\rangle\\langle 01|\\otimes I+| 10\\rangle\\langle 10|\\otimes I+| 11\\rangle\\langle 11| \\otimes U\n", + "$$\n", + "如果我们现在应用回第一个和最后一个受控操作,那么我们会得到正确的答案。\n", + "\n", + "
\n", + "\n", + "我们也可以选择一个实例,用 MindQuantum 验证以上线路的等价性,现在我们令$U = Y$。\n", + "\n", + "首先构建Toffoli门,可以通过`list`将多个控制位输入`Y`门的第二个参数得到多控制Y门。" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": "
\n\n\nq0:\n \n\nq1:\n \n\nq2:\n \n\n\n\n\n\n\n\n\nY\n \n\n
", + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from mindquantum.core.gates import Y\n", + "from mindquantum.core.circuit import Circuit\n", + "import mindquantum\n", + "circ = Circuit()\n", + "circ += Y.on(2, [0, 1])\n", + "circ.svg()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "接下来需要得到$V$使得$V^2 = Y$,这可以通过接口`Power()`实现。然后构建出相应线路。" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": "
\n\n\nq0:\n \n\nq1:\n \n\nq2:\n \n\n\n\n\n\n\n\nY^0.5\n \n\n\n\n\n\n\n\n\n\n\nY^0.5\n \n\n†\n \n\n\n\n\n\n\n\n\n\n\nY^0.5\n \n\n
", + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from mindquantum.core.gates import Power, X\n", + "\n", + "V = Power(Y, 0.5)\n", + "circ2 = Circuit()\n", + "circ2 += V.on(2, 1)\n", + "circ2 += X.on(1, 0)\n", + "circ2 += V.hermitian().on(2, 1)\n", + "circ2 += X.on(1, 0)\n", + "circ2 += V.on(2, 0)\n", + "\n", + "circ2.svg()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "将两个线路的矩阵进行比对,判断是否等价。" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "is_equiv = np.allclose(circ.matrix(), circ2.matrix())\n", + "print(is_equiv)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "可以看到,两个线路的对应矩阵完全相同。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Toffoli 门\n", + "\n", + "当$U = X$时,得到的CC-X门被称为Toffoli门。在这种情况下,$V=(1-i)(I+iX)/2$。可以快速证明$V$是幺正的:\n", + "$$\n", + "V^\\dagger = (1+i)(I-iX)/2\n", + "$$\n", + "然后\n", + "$$\n", + "V^{\\dagger} V=\\frac{1}{4}(1-i)(1+i)(I-i X)(I+i X)=\\frac{1}{2}(I+I)=I\n", + "$$\n", + "现在我们知道如何用CNOT+单比特门集合来模拟Toffoli门。接下来是Toffoli门的第一个应用,分解多控制$U$门:\n", + "$$\n", + "C_{n}(U)\\left|x_{1} x_{2} x_{3} x_{4} x_{5}\\right\\rangle|\\psi\\rangle=\\left|x_{1} x_{2} x_{3} x_{4} x_{5}\\right\\rangle U^{x_{1} x_{2} x_{3} x_{4} x_{5}}|\\psi\\rangle\n", + "$$\n", + "下图中的$|c_1\\rangle,|c_2\\rangle\\cdots |c_5\\rangle$就等同于$\\left|x_{1} x_{2} x_{3} x_{4} x_{5}\\right\\rangle$:\n", + "\n", + "![multiple-control U gate decomposition](images/multiple_CU_decomposition.png)\n", + "\n", + "以上线路可以直接看出其效果:如果$c_1$和$c_2$都是$|1\\rangle$,则第一个辅助比特翻转为$|1\\rangle$;如果$c_3$和第一个辅助比特都是$|1\\rangle$则第二个辅助比特翻转为$|1\\rangle$(这意味着$c_1,c_2,c_3$都是$|1\\rangle$),依此类推。因此最后只有所有控制位都为$|1\\rangle$时才作用$U$门,即实现了多控制$U$门。\n", + "\n", + "**示例**\n", + "\n", + "考虑初态$\\alpha|00000\\rangle|\\psi\\rangle+\\beta|11111\\rangle|\\psi\\rangle$,插入中间的辅助量子比特后表示为$\\alpha|00000\\rangle|0000\\rangle|\\psi\\rangle+\\beta|11111\\rangle|0000\\rangle|\\psi\\rangle$。现在作用上述量子线路(到CU处截止),得到的量子态如下:\n", + "$$\n", + "\\alpha|00000\\rangle|0000\\rangle|\\psi\\rangle+\\beta|11111\\rangle|1111\\rangle U|\\psi\\rangle\n", + "$$\n", + "此时辅助比特与系统比特纠缠在一起,这不是我们想要的。因此我们需要在最后将它们全部重置为$|0\\rangle$态,这正是后半部分的那些顺序相反的Toffoli门的作用。\n", + "\n", + "## 作业\n", + "\n", + "设上图中的多控制U门为$U = R_x(\\frac{\\pi}{5})$,请用MindQuantum验证多控制$R_x$门可以分解为多个Toffoli门和控制$R_x$门(验证线路矩阵等价)。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" + }, + "kernelspec": { + "display_name": "Python 3.9.9 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} -- Gitee