A7: Zeta / Moebius Transform II

実行時間制限:3 秒

メモリ制限:512 MiB

配点:300点

問題文

整数 nn が入力として与えられる。

[n]={1,2,,n}[n] = \{1, 2, \cdots, n\} とし、[n][n] の部分集合 SS に対して量子状態 S\ket{S} を以下の式で定義する。

S=sS2s1\begin{equation} \ket{S} = \ket{\textstyle \sum_{s \in S} 2^{s - 1}} \nonumber \end{equation}

集合 SS の要素数を S|S| で表すとき、次式の操作を 2n2n 量子ビットをもつ量子回路 qc\mathrm{qc} 上に実装せよ。

S[n]aSSn0nqc13nST[n]aTSn0n+13nTS[n](1)(ST)aTSn2n1n+i=12n2S[n]bS,iSnin\begin{align} \sum_{S \subseteq [n]} a_S \ket{S}_n \ket{0}_n \xrightarrow{\mathrm{qc}} &\sqrt{\frac{1}{3^n}} \sum_{S \subseteq T \subseteq [n]} a_T \ket{S}_n \ket{0}_n \nonumber\\ &+ \sqrt{\frac{1}{3^n}} \sum_{T \subseteq S \subseteq [n]} (-1)^{(|S| - |T|)} a_T \ket{S}_n \ket{2^n - 1}_n\nonumber\\ &+ \sum_{i = 1}^{2^n - 2} \sum_{S \subseteq [n]} b_{S, i} \ket{S}_n \ket{i}_n\nonumber\\ \end{align}

ただし、aSa_S は状態 Sn0n\ket{S}_n\ket{0}_n の複素振幅を、bS,ib_{S, i}は状態 Snin\ket{S}_n \ket{i}_n の任意の複素振幅を表す。(値は問わない)

制約

  • 1n51 \leq n \leq 5
  • 量子回路の 深さ88 を超えてはならない。
  • グローバル位相 は問わない。
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
 
 
def solve(n: int) -> QuantumCircuit:
    qc = QuantumCircuit(2 * n)
    # Write your code here:
 
    return qc

入力例

  • n=1n = 1: 実装された量子回路 qc\mathrm{qc} は次式を満たす。
a000+a110qc13{(a0+a1)00+a110+a001(a0a1)11}\begin{equation} a_0 \ket {00} + a_1 \ket {10} \xrightarrow{\mathrm{qc}} \frac{1}{\sqrt{3}} \lbrace (a_0 + a_1) \ket{00} + a_1 \ket{10} + a_0 \ket{01} - (a_0 -a_1) \ket{11} \rbrace \nonumber \end{equation}

ヒント

開く
  • [n][n] の部分集合 A,BA, B について、「 ABA \subseteq B 」は「任意の S[n]S \in [n] に対し A{S}B{S}A \cap \lbrace S \rbrace \subseteq B \cap \lbrace S \rbrace 」と言い換えることができます。

解答を提出するにはログインしてください。