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

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

以上の操作によって量子回路の深さは 以下になり、この問題を解くことができます。
解答例
解答例は以下の通りです。
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