アダマールテスト
https://scrapbox.io/files/6667fc55b4a005001d0d5c69.png
何ができる?
$ |\psi\rangleの量子ビットが100個だろうが1億個だろうが、一発で期待値$ \langle \psi |U| \psi \rangle(の実部or虚部)が取得できる。古典ビットで同じ行列計算を行うと、n個の量子ビットに対して$ 2^nの計算量になる。
関連:ユニタリ行列
何に使える?
量子回路学習の勾配を計算
/icons/hr.icon
記号だけで計算してみる
$ |\psi\rangleと$ Uをそのまま使う。
条件
$ |\psi\rangleは$ Uの固有ベクトルとする。
→$ U|\psi\rangle = \lambda|\psi\rangle(λはUの固有値)となる。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
最初にアダマールゲートを適用し、
$ H|0\rangle = \frac{1}{\sqrt2}(|0\rangle+|1\rangle)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
次に制御ユニタリゲートを適用し、
$ CU_{0,1}\frac{1}{\sqrt2}(|0\rangle+|1\rangle)\otimes|\psi\rangle = \frac{1}{\sqrt2}(|0\rangle\otimes|\psi\rangle + |1\rangle\otimes U|\psi\rangle)
$ =\frac{1}{\sqrt2}(|0\rangle\otimes|\psi\rangle + |1\rangle\otimes \lambda|\psi\rangle)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
最後にアダマールゲートを適用し、
$ H_0\frac{1}{\sqrt2}(|0\rangle\otimes|\psi\rangle + |1\rangle\otimes \lambda|\psi\rangle) = \frac{1}{\sqrt2}(|+\rangle\otimes|\psi\rangle + |-\rangle\otimes \lambda|\psi\rangle)
$ = \frac{1}{\sqrt2}(|+\rangle\otimes|\psi\rangle + \lambda|-\rangle\otimes|\psi\rangle)
$ = \frac{1}{\sqrt2}\left(\left(\frac{1}{\sqrt2}|0\rangle +\frac{1}{\sqrt2}|1\rangle + \frac{\lambda}{\sqrt2}|0\rangle - \frac{\lambda}{\sqrt2}|1\rangle\right)\otimes|\psi\rangle\right)
$ = \frac{1}{\sqrt2}\left(\left(\frac{1}{\sqrt2}|0\rangle +\frac{1}{\sqrt2}|1\rangle + \frac{\lambda}{\sqrt2}|0\rangle - \frac{\lambda}{\sqrt2}|1\rangle\right)\otimes|\psi\rangle\right)
$ = \left(\frac{1+\lambda}{2}|0\rangle + \frac{1-\lambda}{2}|1\rangle\right)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
よって、条件より$ |\psi\rangleが$ Uの固有ベクトルであるとき、
1量子目の測定結果が0である確率$ p_0は
$ p_0 = \left|\frac{1+\lambda}{2}\right|^2
1量子目の測定結果が1である確率$ p_1は
$ p_1 = \left|\frac{1-\lambda}{2}\right|^2
となる。
/icons/hr.icon
$ HH|0\rangleって$ |0\rangleじゃないの?
アダマールテストは、ぱっと見だと1量子目の測定結果が$ |0\rangleになりそうだが、間違い。
制御ユニタリゲートが挟まることによって、1量子目が$ |\psi\rangleと重ね合わせになる。いわゆる「干渉した」という事実が発生し、その後の計算に影響を与える。
試してみる
Uを制御アダマールCH、$ |\psi\rangleを$ |0\rangleで確認すると、わかりやすい。
https://scrapbox.io/files/666a6c5e1e40bf001da4ade2.png
層に分けて、並列なゲートを合成して考える
https://scrapbox.io/files/666ab6919bd194001c4b2d7a.png
(適宜直列で計算する方法だと、計算ミスで一生確率が1を上回ったり下回ったりしたため、無難にテンソル積で計算する)
$ U_1 = H \otimes I = \frac{1}{\sqrt2}\left(\begin{matrix} 1&0&1&0 \\ 0&1&0&1 \\ 1&0&-1&0 \\ 0&1&0&-1 \end{matrix}\right)
$ U_2 = CH_{(0,1)} = \left(\begin{matrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0& \frac{1}{\sqrt{2}} &\frac{1}{\sqrt{2}} \\ 0&0&\frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}} \end{matrix}\right)
$ U_3 = H \otimes I = \frac{1}{\sqrt2}\left(\begin{matrix} 1&0&1&0 \\ 0&1&0&1 \\ 1&0&-1&0 \\ 0&1&0&-1 \end{matrix}\right)
$ U_3U_2U_1|00\rangle = U_3U_2\frac{1}{\sqrt2}\left(\begin{matrix} 1&0&1&0 \\ 0&1&0&1 \\ 1&0&-1&0 \\ 0&1&0&-1 \end{matrix}\right) \left(\begin{matrix} 1\\0\\0\\0 \end{matrix}\right)
$ =U_3U_2\frac{1}{\sqrt2}\left(\begin{matrix} 1\\0\\1\\0 \end{matrix}\right)
$ =U_3\left(\begin{matrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0& \frac{1}{\sqrt{2}} &\frac{1}{\sqrt{2}} \\ 0&0&\frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}} \end{matrix}\right)\frac{1}{\sqrt2}\left(\begin{matrix} 1\\0\\1\\0 \end{matrix}\right)
$ = U_3\frac{1}{\sqrt2}\left(\begin{matrix} 1\\0\\\frac{1}{\sqrt2}\\\frac{1}{\sqrt2} \end{matrix}\right)
$ = \frac{1}{\sqrt2}\left(\begin{matrix} 1&0&1&0 \\ 0&1&0&1 \\ 1&0&-1&0 \\ 0&1&0&-1 \end{matrix}\right) \frac{1}{\sqrt2}\left(\begin{matrix} 1\\0\\\frac{1}{\sqrt2}\\\frac{1}{\sqrt2} \end{matrix}\right)
$ = \frac{1}{2} \left(\begin{matrix} \frac{\sqrt2+1}{\sqrt2}\\ \frac{1}{\sqrt2}\\ \frac{\sqrt2-1}{\sqrt2}\\ -\frac{1}{\sqrt2}\\ \end{matrix}\right)
$ = \left(\frac{\sqrt2+1}{2\sqrt2}|00\rangle + \frac{1}{2\sqrt2}|01\rangle + \frac{\sqrt2-1}{2\sqrt2}|10\rangle - \frac{1}{2\sqrt2}|11\rangle\right)
検算をすると、
1量子目の測定結果が0となる確率$ p_0は
$ p_0 = \left| \frac{\sqrt2+1}{2\sqrt2} \right|^2 + \left| \frac{1}{2\sqrt2} \right|^2 = \frac{4+2\sqrt2}{8}
2量子目の測定結果が0となる確率$ p_1は
$ p_1 = \left| \frac{\sqrt2-1}{2\sqrt2} \right|^2 + \left| \frac{1}{2\sqrt2} \right|^2 = \frac{4-2\sqrt2}{8}
それぞれの確率を足して、
$ p_0+p_1=1
よって、成立。
さらにIBMのQuantum Composerで試してみると
https://scrapbox.io/files/666a7a3bcc3cb3001d1a0035.png
$ \frac{4+2\sqrt2}{8} \approx 0.85
$ \frac{4-2\sqrt2}{8} \approx 0.15
計算も大方あっている
/icons/hr.icon
GitHub
HadamardTest
QiskitRemoteJobTemplate