解説
問題 A4 では、3つの計算基底状態 ∣00⟩, ∣10⟩, ∣01⟩ の重ね合わせ状態 21∣00⟩+21(∣10⟩+∣01⟩) を生成しました。
この問題では3つの計算基底状態の複素振幅をすべて 1/3 に揃える必要があります。
これは、回転ゲート を利用し、 問題 A4 解説 (1) 式のアダマールゲートを回転ゲートで置き換え、遷移後の状態を 31∣00⟩+32∣10⟩ とすることで解決できます。
∣00⟩Ry(θ,0)31∣00⟩+32∣10⟩CH(0,1)31(∣00⟩+∣10⟩+∣11⟩)CX(1,0)31(∣00⟩+∣10⟩+∣01⟩)
ここで、任意の1量子ビットの状態 ∣ψ⟩ は 2つの角度パラメータ θ, ϕ により次式で表現できます。
∣ψ⟩=cos(θ/2)∣0⟩+(cos(ϕ)+isin(ϕ))sin(θ/2)∣1⟩
このように1量子ビットの量子状態を半径1の球面上に表す方法は、ブロッホ球 と呼ばれており、角度パラメータ θ, ϕ を元に位相ゲートや回転ゲートを用いて任意の1量子ビットの状態を異なる任意の状態に遷移させることができます。
ブロッホ球
では、状態 31∣00⟩+32∣10⟩ の角度パラメータ θ, ϕ を求めます。
虚数成分は 0 なので、ϕ=0 としてよく、次の連立方程式を立式できます。
{cos(θ/2)=1/3sin(θ/2)=2/3
方程式を 解くと 、0≤θ<2π の範囲で次の解が得られます。
θ=4arctan(3+36)
ここで、ブロッホ球 をみると角度パラメータ θ は y 軸上の回転角を表すことがわかります。
よって、y 軸上の回転ゲートである Ry ゲートを利用して、θ の回転を加えることで、∣00⟩Ry(θ,0)31∣00⟩+32∣10⟩ の遷移を実現できます。
結果として、次のような遷移によってこの問題を解くことができます。
∣00⟩Ry(θ,0)31∣00⟩+32∣10⟩CH(0,1)31(∣00⟩+∣10⟩+∣11⟩)CX(1,0)31(∣00⟩+∣10⟩+∣01⟩)
解答例
解答例は以下の通りです。
from qiskit import QuantumCircuit
import math
def solve() -> QuantumCircuit:
qc = QuantumCircuit(2)
theta = 4 * math.atan(math.sqrt(6)/ (3 + math.sqrt(3)))
qc.ry(theta, 0)
qc.ch(0, 1)
qc.cx(1, 0)
return qc