解説
問題 A3 の想定解法では量子回路の深さが となり、この問題を解くことができません。 では、どのような量子回路を設計すれば良いのでしょうか?
まず、量子回路の深さを小さくするためには、なるべく連続して同じ量子ビットに対して量子ゲートを作用させるのを避ける必要があります。
以下の 量子ビットの例をみてみましょう。

問題 A3 解説の回路との違いは、最も右側の制御 ゲートの制御ビットが 1番目 から 2番目 に変わっていることです。
このとき、最も右側の制御ゲートは2番目と4番目の量子ビットに対する操作であり、1つ左側の制御ゲートは1番目と3番目の量子ビットに対する操作であるため、この2つの操作は同時に行うことができ、回路の深さを1つ縮めることができます。
量子状態の遷移をみていきます。 2つ目の制御 ゲートを作用させるまでは、問題 A3 の想定解法と同じです。
次に、2番目の量子ビットを制御ビット、4番目の量子ビットを標的ビットとして制御 ゲートを作用させます。
最後に ゲートを作用させることで の位相を反転させます。
この発想を一般の 量子ビットの量子回路に対して一般化すると、以下の操作を繰り返すことになります。
- 1番目の量子ビットを制御ビット、 番目の量子ビットを標的ビットとして制御 ゲートを作用させる
- 2番目の量子ビットを制御ビット、 番目の量子ビットを標的ビットとして制御 ゲートを作用させる
例えば、 の場合は以下のような回路が構成できます。

以上の操作によって量子回路の深さは 以下になり、この問題を解くことができます。
解答例
解答例は以下の通りです。
from qiskit import QuantumCircuit
def solve(n: int) -> QuantumCircuit:
qc = QuantumCircuit(n)
qc.h(0)
qc.cx(0, 1)
for i in range(2, n - 1, 2):
qc.cx(0, i)
qc.cx(1, i + 1)
if n % 2 != 0:
qc.cx(0, n - 1)
qc.z(0)
return qc