A2: Generate State 12(10+01)\frac{1}{\sqrt{2}}\lparen\ket{10}+\ket{01}\rparen

実行時間制限:3 秒

メモリ制限:512 MiB

配点:200点

Writer:ST12

解説

はじめに、以下の量子回路にて、必要なゲート操作を示します。

1番目の量子ビットに対して アダマール (Hadamard; HH) ゲート を作用させます。

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

このように、アダマールゲートを作用させることで、量子ビットを重ね合わせ状態にできます。

次に、 10\ket{10}11\ket{11} に変化させるような操作を作用させる必要があります。そこで、1番目の量子ビットを制御ビットとし、2番目の量子ビットを標的ビットとする 制御 XX (controlled-X; CXCX) ゲートを利用します。 制御 XX ゲートによって、1番目の量子ビットが 1\ket{1} となる 10\ket{10} に対してのみ、2番目の量子ビットに XX ゲートを作用させます。

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

最後に、1番目の量子ビットに XX ゲートを作用させることにより、結果として問題を解くことができます。

12(00+11)X(0)12(10+01)\begin{equation} \frac{1}{\sqrt{2}} \lparen \ket{00} + \ket{11} \rparen \xrightarrow{X(0)} \frac{1}{\sqrt{2}} \lparen \ket{10} + \ket{01} \rparen \end{equation}

解答例

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

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

補足

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