LoginSignup
0
0

「アダマールテストって直感に反しない?」という疑問を計算で解決する

Last updated at Posted at 2024-06-13

はじめに

こんにちは、ユーゴです。今回は、量子コンピュータについてお話ししたいと思います。この節は余談的なのでスキップ可です。

最近は量子コンピュータの勉強をしており、直近ではQuantum Computation using Qiskit v0.2Xを取得しました。認定バッジも載せておきます。
さらに見識を深めるため、最近ではQuantum Native Dojoというページで学習を進めています。今回紹介するのは、こちらのページを進めていたときに、「アダマールテスト」という直感に反する現象を確認したので、紹介します。

本題

量子コンピュータの分野で、「アダマールテスト」というものがあります。回路は以下のように組みます。

35be965f942fe2330f950cef2cb04f30.png

$|\psi\rangle$は任意の状態ベクトルですが、今回は$|0\rangle$としておきます。
ここで直感的に、最終的な状態ベクトルはどのようになると思いますか?
僕は以下のようになると思いました。

|0\rangle\otimes|+\rangle

1量子目は$|0\rangle$にアダマールゲートを2回適用しているので、$HH|0\rangle=|0\rangle$
絶対に$|0\rangle$で測定されるから、アダマールテストって何の意味があるんだ?という謎がありました。

結論

1量子目が2量子目に干渉することによって、確率に変化が起きます。あくまで制御ユニタリゲートが直接1量子目に影響したのではなく、2量子目に干渉したことによる間接的な結果です。
これが量子の不思議な性質で、直感に反する原因だと考えています。

計算

具体的な計算で確認しましょう。
以下のような、制御アダマールゲートを使用したアダマールテストを考えます。

スクリーンショット 2024-06-12 12.10.21.png

また、初期状態は以下とします。

q[0] = |0\rangle
q[1] = |0\rangle

ここで、回路を層に分けて計算します。

スクリーンショット 2024-06-12 12.10.21 2.png

並列回路におけるゲートの合成は、テンソル積で計算できます。

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}

つまり、初期状態が$q[0]=|0\rangle$、$q[1]=|0\rangle$のアダマールテストにおいて、制御アダマールゲートを使用した時、1量子目の測定は

p_0 = \frac{4+2\sqrt2}{8} \approx 0.85
p_1 = \frac{4-2\sqrt2}{8} \approx 0.15

となり、$|1\rangle$も出現することがわかりました。

(人力なので、計算にミスがあれば教えてください)

コードで確認する

GitHubにqiskitでアダマールテストを実行するコードを公開しました!
ぜひお試しください!
HadamardTest:シミュレータ版
QiskitRemoteJobTemplate:実機版

シミュレータ版は大体83%〜87%で理想的です。
実機版は1回しか試していませんが、82.7%とこちらも大方正しいです。(無料クレジット節約のため)

余談

アダマールテストも分からずよくQuantum Computation using Qiskit v0.2Xに受かったな...と思っています。ちなみにこちらの資格はqiskitというIBMが出している量子コンピューティング用のPythonライブラリについての技能を証明するものです。もちろん、前提として量子ビットの状態を計算できる必要があるので、事実としてこの資格を取ることで「qiskitを使ったプログラミング技能」と「量子状態の計算技能」の2つを証明できます。量子コンピュータ分野で働くことにご興味がある方は、ぜひ挑戦してみてください。

注意点

1. 英語のテストのみ

英語が苦手だと、初見の質問パターンに対応できないことがあるかもしれません。(自分も1,2問英語が分からないという理由でスキップしました)。一応「Assessment」というテストが受けられるので、そちらで質問パターンを把握しておくと、かなり効果的です。

2. qiskit v0.2.xの環境構築が大変

pipからだと0.2.xは古すぎて持ってこれません。現在は1.1.0が最新版であり、かなりコードも違います。僕は諦めてリファレンスを読み漁りました。

3. お値段が高い

2万円します。キャンセル料は2,000円です。僕はテストのホストが鯖落ちしていたせいでテストを受けられず、1度キャンセル扱いとなり2,000円失いました🫠 補填もありません。
読者様が試験を受けるときは、鯖が落ちていないことを祈ります。

勉強したい人ウェルカム!

勉強方法、勉強時間など詳しく知りたい方は、ぜひ@Yugo_dvlpまでご連絡ください!

まとめ

いかがだったでしょうか。今回は、量子コンピューティングのアダマールゲートについて解説しました。
このように、コンピュータ系の基礎的な話から、Unity, GAS, AWSなど実践的なプログラミングやツールなどについても紹介していきます。
お役に立てましたら、いいね,フォロー等よろしくお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0