B1: Bra-Ket Notated Gate

実行時間制限:3 秒

メモリ制限:512 MiB

配点:100点

Writer:Not_Leonian

解説

量子状態 0\ket{0}1\ket{1} の内積では

{00=(10)(10)=110=(01)(10)=001=(10)(01)=011=(01)(01)=1\begin{equation} \begin{cases} \braket{0|0} = \begin{pmatrix}1 & 0\end{pmatrix} \begin{pmatrix}1 \\ 0\end{pmatrix} = 1 \\ \braket{1|0} = \begin{pmatrix}0 & 1\end{pmatrix} \begin{pmatrix}1 \\ 0\end{pmatrix} = 0 \\ \braket{0|1} = \begin{pmatrix}1 & 0\end{pmatrix} \begin{pmatrix}0 \\ 1\end{pmatrix} = 0 \\ \braket{1|1} = \begin{pmatrix}0 & 1\end{pmatrix} \begin{pmatrix}0 \\ 1\end{pmatrix} = 1 \end{cases} \end{equation}

が、それぞれ成り立ちます。

そのため、量子状態 0\ket{0}1\ket{1} にそれぞれ A=10+01A = \ket{1} \bra{0} + \ket{0} \bra{1} という演算子を作用させると、以下のようになります。

{0AA0=100+010=11AA1=101+011=0\begin{equation} \begin{cases} \ket{0} \xrightarrow{A} A \ket{0} = \ket{1} \braket{0|0} + \ket{0} \braket{1|0} = \ket{1} \\ \ket{1} \xrightarrow{A} A \ket{1} = \ket{1} \braket{0|1} + \ket{0} \braket{1|1} = \ket{0} \end{cases} \end{equation}

このように 0\ket{0}1\ket{1} を反転させる操作は、 XX ゲートによって実現できます。

よって、 XX ゲートを使うことでこの問題を解くことができます。

解答例

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

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