C2: Generate Uniform Amplitude Superposition State II

実行時間制限:3 秒

メモリ制限:512 MiB

配点:600点

問題文

整数 n, Ln,\ L が入力として与えられる。

測定時に状態 ∣0⟩, ∣1⟩, ... ∣L−1⟩\ket{0},\ \ket{1},\ ...\ \ket{L-1} が等確率で観測され、かつその確率の総和が 11 であるような状態 ∣ψ⟩\ket{\psi}を作り出す操作を nn 量子ビットをもつ量子回路 qc\mathrm{qc} 上に実装せよ。

ただし、確率の総和の許容誤差を 5.0×10−35.0 \times 10^{-3}とする。

より正確な問題文

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

∣ψ⟩=∑i=02n−1ai∣i⟩\begin{equation} \ket{\psi} = \sum_{i=0}^{2^n-1} a_i\ket{i} \nonumber \end{equation}

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

  • ∣a0∣=∣a1∣=⋯=∣aL−1∣|a_0| = |a_1| = \cdots = |a_{L-1}|
  • ∑i=0L−1∣ai∣2>1−5.0×10−3\sum_{i=0}^{L-1} |a_i|^2 > 1 - 5.0 \times 10^{-3}

制約

  • 1≤n≤101 \leq n \leq 10
  • 1≤L≤2n1 \leq L \leq 2^n
  • 量子回路の 深さ は 10001000 を超えてはならない。
  • 整数は リトルエンディアン にしたがってエンコードすること
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
 
 
def solve(n: int, L: int) -> QuantumCircuit:
    qc = QuantumCircuit(n)
    # Write your code here:
 
    return qc

入力例

  • n=3, L=3n = 3,\ L=3: 次式の遷移を行う量子回路は条件を満たす。
∣000⟩→qc13(∣000⟩+∣100⟩+∣010⟩)\ket{000} \xrightarrow{\mathrm{qc}} \frac{1}{\sqrt{3}} (\ket{000} + \ket{100} + \ket{010})

ヒント

開く
  • 問題 B4 の解答を利用して解くことができます。
  • solve 関数以外に任意の関数を定義することが認められます。

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