解説
オラクルの作用後の状態 は次のように括弧をつけて、2量子ビットに対する操作 の入れ子で表現されます。
すなわち、 から までそれぞれの量子ビットを制御ビットとし、 を標的ビットとする ゲートを合計で 個作用させることでオラクルを実現できます。
解答例
解答例は以下の通りです。
from qiskit import QuantumCircuit, QuantumRegister
def solve(n: int) -> QuantumCircuit:
x, y = QuantumRegister(n), QuantumRegister(1)
qc = QuantumCircuit(x, y)
for i in range(n):
qc.cx(x[i], y)
return qc