A4: Generate state 13(0+1+2))\frac{1}{\sqrt{3}} (\ket{0} + \ket{1} + \ket{2})) I

実行時間制限:2 秒

メモリ制限:512 MiB

配点:200点

解説

生成したい状態は 3つの計算基底状態 00, 10, 01\ket{00},\ \ket{10},\ \ket{01} の重ね合わせ状態です。

このような2のべき乗でない個数の計算基底状態の重ね合わせは、制御アダマールゲート (controlled-H; CHCH) を利用して生成できます。

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

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

次に、1ビット目を制御ビット、2ビット目を対象ビットとして制御アダマールゲートを作用させます。

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

最後に、1ビット目を対象ビット、2ビット目を制御ビットとして制御 XX ゲートを作用させます。

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

こうして、3つの計算基底状態 00, 10, 01\ket{00},\ \ket{10},\ \ket{01} の重ね合わせ状態が生成できました。

解答例

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

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