B6: Grover's Algorithm I

実行時間制限:3 秒

メモリ制限:512 MiB

配点:300点

問題文

整数 nnオラクル OO が入力として与えられる。 00 以上 2n2^n 未満のある整数 LL が存在し、オラクル OO0x<2n0 \leq x \lt 2^n を満たす任意の整数 xx に対して、次式を満たす。

xnO{xn(x=L)xn(xL)\ket{x}_n \xrightarrow{O} \begin{cases} - \ket{x}_n & (x=L) \\ \ket{x}_n & (x\neq L) \end{cases}

量子状態 0\ket{0} から、測定時に 4/2n4/2^n 以上の確率で L\ket{L} が観測されるような状態 ψ\ket{\psi} を作り出す操作を、 nn 量子ビットをもつ量子回路 qc\mathrm{qc} 上に実装せよ。

より正確な問題文

量子状態 0\ket{0}qc\mathrm{qc} を作用させた後の状態 ψ\ket{\psi} を、 aia_i を状態 i\ket{i} の複素振幅として次式で定義する。

ψ=i=02n1aii\ket{\psi} = \sum_{i=0}^{2^n-1} a_i\ket{i}

このとき、次式の条件を満たすような qc\mathrm{qc} を構築せよ。

aL242n|a_L|^2 \geq \frac{4}{2^n}

制約

  • 3n103 \leq n \leq 10
  • 整数はリトルエンディアンにしたがってエンコードすること (例:100=1001\ket{100} = 1 \neq \ket{001})
  • グローバル位相 は問わない。
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
 
"""
You can apply oracle as follows:
qc.compose(o, inplace=True)
"""
 
 
def solve(n: int, o: QuantumCircuit) -> QuantumCircuit:
    qc = QuantumCircuit(n)
    # Write your code here:
 
    return qc

解答を提出するにはログインしてください。