A3: Generate state 12(0+3)\frac{1}{\sqrt{2}} (\ket{0} + \ket{3})

実行時間制限:2 秒

メモリ制限:512 MiB

配点:200点

解説

生成したい状態は 2つの計算基底状態 0\ket{0}3\ket{3} の一様重ね合わせ状態です。

はじめに、1つ目の量子ビットにアダマールゲートを作用させます。

00H(0)12(00+10)\begin{equation} \ket{00} \xrightarrow{H(0)} \frac{1}{\sqrt{2}} (\ket{00} + \ket{10}) \end{equation}

ここで、生成したい状態は 12(00+11)\frac{1}{\sqrt{2}} (\ket{00} + \ket{11}) なので、(1)(1) 式の計算基底状態 10\ket{10}11\ket{11} に遷移させることができればよいです。

制御ゲート を使うことで、重ね合わせ状態のうちの作用させたい計算基底状態のみに量子ゲートを作用させることができます。

制御ゲートとは、2つの量子ビットに作用する量子ゲートで、作用する2つの量子ビットのうち、1つを「制御ビット」、もう一方を「対象ビット」と呼びます。制御ゲートでは、制御ビットが 0\ket{0} でなく 1\ket{1} の計算基底状態にのみ、対象ビットに対して、制御されたゲートが作用します。

今回の問題では、1ビット目を制御ビットとし、2ビット目を対象ビットとする 制御 XX (controlled-X; CXCX) ゲートを作用させることで、1ビット目が 1\ket{1} である計算基底状態 10\ket{10} にのみ XX ゲートを作用させ、ビットを反転させることができます。

12(00+10)CX(0,1)12(00+11)\begin{equation} \frac{1}{\sqrt{2}} (\ket{00} + \ket{10}) \xrightarrow{CX(0, 1)} \frac{1}{\sqrt{2}} (\ket{00} + \ket{11}) \end{equation}

解答例

解答例は以下の通りです。

from qiskit import QuantumCircuit
 
 
def solve() -> QuantumCircuit:
    qc = QuantumCircuit(2)
 
    qc.h(0)
    # qc.cx(control qubit, target qubit)
    qc.cx(0, 1)
 
    return qc

補足

  • 本問の状態 12(00+11)\frac{1}{\sqrt{2}} (\ket{00} + \ket{11}) では、片方の量子ビットを測定し、状態を観測すると、もう一方の量子ビットの状態が確定します。このような現象を量子もつれ (entanglement) と呼ぶことがあります。
  • 複数の制御ビットをもつような量子ゲート(複数の制御ビットがすべて 1\ket{1} の状態の対象ビットのみに作用する)を実装することもできます。