解説
スワップゲートをうまく利用することで、この問題を解くことができます。
とするとき、次の操作を順に行うことによって目的の量子状態を実現できます。
- 操作 1 : に対し、 番目と 番目をスワップする。
- 操作 2 : に対し、 番目と 番目をスワップする。
- 操作 3 : に対し、 番目と 番目をスワップする。
よって のとき、とすると
という状態遷移が成り立つため、この問題を解くことができます。
の場合の量子回路は次のように表されます。

各操作の回路の深さは となるため、回路全体の深さは です。
解答例
解答例は以下の通りです。
from qiskit import QuantumCircuit
def solve(n: int) -> QuantumCircuit:
L = n + 1
qc = QuantumCircuit(L)
for i in range(L.bit_length()):
for j in range(0, L - (2 ** i), 2 ** (i + 1)):
qc.swap(j, j + (2 ** i))
return qc