解説
整数 を 「 を満たす最小の整数 」 と定義し、 番目までの量子ビットにアダマールゲートを適用することを考えます。
このとき、計算基底状態 の複素振幅の絶対値 はすべて等しく、次式を満たします。
ここで、 より、観測確率の総和は次の不等式を満たします。
なお、「 を満たす最小の整数 」は と表すことができます。( は 天井関数 を表します。)
結果として、 番目までの量子ビットにアダマールゲートを適用することでこの問題を解くことができます。
の場合に生じる実装上のコーナーケースに注意して下さい。
解答例
解答例は以下の通りです。
from qiskit import QuantumCircuit
import math
def solve(n: int, L: int) -> QuantumCircuit:
qc = QuantumCircuit(n)
if L == 1:
return qc
k = math.ceil(math.log2(L))
qc.h(range(k))
return qc
補足
- 所望の状態の確率振幅を増幅する量子アルゴリズムは グローバーのアルゴリズム や 振幅増幅 (Amplitude amplification) として知られています。本問をそのようなアルゴリズムを使って解くこともできます。