Circuitsとは、量子回路の途中で測定を行い、その結果に応じてその後にかける量子ゲートを動的に変更することを可能とするQiskitの機能です。これまでの量子回路(静的回路と呼ぶことにします)では、量子状態を知るための測定操作は必ず回路の最後に行われました。そのため、回路の途中の量子状態に応じて後続の操作を組み換えるといったフィードフォワード制御はできませんでした。Circuitsがサポートされることで、量子回路設計において次のメリットを受けることが出来ます。量子回路にフィードフォワードを導入できることで、複雑な実装が必要だった静的回路をよりシンプルにする(深さを減らす)ことが出来る。古典計算の”For”や”If/Then”の条件分岐を量子計算に取り入れることが出来る。領域で効果が挙げられていると報告されています。Circuitsの実装を試してみましょう。SpringのLab1の問題を使います。回路の途中で量子ビットの測定結果に応じて後続操作を組み替える2量子ビット回路を実装します。実装はif_test()を利用するだけです。量子ビット$q_0$を測定して結果が0なら$q_1$にXゲートを、1ならHゲートを適用するような動的回路を実装してみましょう。idle_wires=False)量子回路を図示すると下のような回路になります。実行結果を確認してみましょう。$q_0$が0なら$q_1$は100%の確率で1が出力され、$q_0$が1ならHゲートを適用するので、$q_1$は0と1が50%の確率で出力されるはずです。全体では$q_1q_0$が10が50%、11が25%、01が25%で観測されることが期待されます。522}期待通りの結果が出力されました。Circuitsを実現できることが確認できました。Circuitを利用することで、出力がランダムで測定した結果が間違っていたとしても正しい結果が出るまで回路の実行を繰り返すことが出来ます。Challengeではパラメータゲート$R_X(\theta)$を非パラメータゲートを使って再現する量子回路を例として扱っています。この回路はcontrolとラベルされた量子ビット(以下コントロールビット)が両方0のとき、targetとラベルされた量子ビット(以下ターゲットビット)には$R_X(\theta)$ゲートが適用される回路です。$(\cos\theta=3/5)$量子回路に存在しない回転ゲートの話がいきなり出てきて戸惑いますが、丁寧に計算してみると理解できます。コントロールビットのみを考えると単純で、最初のアダマールゲートをかけた後の量子状態は以下のように表せます。|\psi_{control_1}\psi_{control_0}\rangle=\frac{1}{2}(|00\rangle+|10\rangle+|01\rangle+|11\rangle)ここにターゲットビットも加えて計算すると、量子状態は以下のように表せます。(|10\rangle+|01\rangle-|11\rangle)\}\end{aligned}コントロールビットが両方0の時、たしかに$R_X(\theta)$ゲートと同等の処理が行われることが確かめられました。今回ターゲットビットに$R_X(\theta)$が適用される状態を作り出したいです。Circuitを使ってコントロールビットの測定値が両方0となるまで繰り返し量子回路を実行させるように設計します。量子回路の準備まずは最初にイメージを挙げた量子回路を準備する関数を定義します。circuit.measure(range(2),range(2))リセット処理の定義コントロールビットがのどちらか1つでも0でない場合、ターゲットビットにはXゲートがかかります。私たちが望む結果は$R_X(\theta)$ゲートがかかった状態なので量子ビットをリセットする必要があります。必要な処理の部品は定義したので後は全体を組み合わせます。処理の流れは以下の通りです。trial回路の処理を実行2つのコントロールビットを測定→両方0なら終了そうでない場合は量子ビットをリセット2以降を繰り返すQiskitの制約で現状古典レジスタの値のチェックとループ処理が直接実装出来ないため、最大2回の繰り返しでお茶を濁すこととします。cregbundle=False)結果を測定するとコントロールビットが0である確率、つまりターゲットビットに$R_X(\theta)$ゲートが印加されている確率が高くなっていることが確認できます。繰り返しを2回から3回にすると望みの状態の確率が高くなったことが確認できます。これを繰り返すと限りなく1に近い確率で$R_X(\theta)$の印加を実現することが出来ます。Circuitsの機能の導入について紹介しました。回路の途中で量子状態を測定して量子回路を組み替えられるというのが非常に大きな特徴ですね。どんな使い方が出来るか他の記事でも紹介していこうと思います。量子コンピュータ【Qiskit】グローバーのアルゴリズムをゼロから実装する量子アルゴリズムとしてよく登場するグローバーのアルゴリズムをQiskitを使ってゼロから実装する方法を紹介します。...2021.01.26量子コンピュータ量子コンピュータグローバーのアルゴリズムが超重要な理由グローバーのアルゴリズムは量子アルゴリズムの中でも最も有名な概念の一つでしょう。世界中で様々なアプローチで研究・開発が進められている日進月歩の先端技術、量子コンピュータ。コメントをキャンセルメールアドレスが公開されることはありません。※サイト上に表示された文字を入力してください。Advocate量子コンピュータのコミュニティ運営・イベント登壇にて活動中。本ブログの内容は個人の意見であり、会社を代表するものではありません。量子コンピュータお問い合わせ。