問題文
n を正の整数とする。非負整数 m,k に対し、E(m,k) を次式で定義する。
E(m,k)=2n+110≤a<2∑0≤b<2∑(−1)am+bk∣a⟩∣b⟩∣0⟩n−1+2n11≤c<2n−1∑(XmRck⊗I1⊗In−1)(∣0⟩∣0⟩+∣1⟩∣1⟩)∣c⟩n−1
ここで、行列 X は X ゲート 、R は回転ゲート Rz(2π/2n−1) を表す。
X=(0110),R=Rz(2n−12π)=(exp(−2n2πi)00exp(2n2πi))
整数 n, mleft, kleft が入力として与えられるので、次の条件を満たすオラクル O を、n+1 量子ビットをもつ量子回路 qc 上に実装せよ。
0≤m<2 と 0≤k<2n を満たす任意の整数の組 (m,k) に対して
E(m,k)OE(m′,k′)
ただし、0≤m′<2 と 0≤k′<2n は以下の式を満たす必要がある。
Xm′Rk′=XmleftRkleftXmRk
※ この問題はヒントの参照を推奨します。
制約
- 2≤n≤10
- 0≤mleft<2
- 0≤kleft<2n
- 量子回路の 深さ は 30 を超えてはならない。
- 整数は リトルエンディアン にしたがってエンコードすること
- グローバル位相 は問わない。
- 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
def solve(n: int, m_left: int, k_left: int) -> QuantumCircuit:
qc = QuantumCircuit(n + 1)
# Write your code here:
return qc
ヒント
開く
- m′ と k′ が必ず存在することは以下により分かります。
まず、X と R について次が成り立ちます。
X2=R2n=I,RX=XR−1
このことから
Xm′Rk′=XmleftRkleftXmRk=Xmleft(RkleftXm)Rk=Xmleft(XmR(−1)mkleft)Rk=Xmleft+mR(−1)mkleft+k
となるので、
m′=mleft+m (mod 2)k′=(−1)mkleft+k (mod 2n)
となります。