解説
問題 A1 にてグローバル位相の反転を扱いました。
では、2つの計算基底状態間で位相が異なる状態を生成するにはどうすればよいでしょうか?
はじめに、以下の量子回路にて、必要なゲート操作を示します。
まず、位相を考慮せずに量子状態 21(∣00⟩+∣11⟩) を生成することを考えましょう。
1番目の量子ビットに対して アダマール (Hadamard; H) ゲート を作用させます。
∣00⟩H(0)21(∣00⟩+∣10⟩)
このように、アダマールゲートを作用させることで、量子ビットを重ね合わせ状態にできます。
次に、 ∣10⟩ を ∣11⟩ に変化させるような操作を作用させる必要があります。そこで、1番目の量子ビットを制御ビットとし、2番目の量子ビットを標的ビットとする 制御 X (controlled-X; CX) ゲートを利用します。
制御 X ゲートによって、1番目の量子ビットが ∣1⟩ となる ∣10⟩ に対してのみ、2番目の量子ビットに X ゲートを作用させます。
21(∣00⟩+∣10⟩)CX(0,1)21(∣00⟩+∣11⟩)
こうして位相を考慮しない量子状態 21(∣00⟩+∣11⟩) を生成できました。
最後に ∣11⟩ の位相を反転させ、−∣11⟩ を作り出すことを考えます。
1番目の量子ビットに対して Z ゲートを作用させることにより、結果として問題を解くことができます。
21(∣00⟩+∣11⟩)Z(0)21(∣00⟩−∣11⟩)
解答例
解答例は以下の通りです。
from qiskit import QuantumCircuit
def solve() -> QuantumCircuit:
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.z(0)
return qc
補足
- 本問の状態 21(∣00⟩−∣11⟩) では、片方の量子ビットを測定し、状態を観測すると、もう一方の量子ビットの状態が確定します。このような現象を量子もつれ (entanglement) と呼ぶことがあります。
- 複数の制御ビットをもつような量子ゲート(複数の制御ビットがすべて ∣1⟩ の状態の標的ビットのみに作用する)を実装することもできます。