Circuit(qregs={"data": 3, "anc": 1}) 建线路时声明命名寄存器,get_qreg 取回引用后以 data[0]、anc[0] 访问比特,代码与算法描述一一对应。扫平规则:寄存器按声明顺序接续编号,某寄存器的起始索引等于先前声明的各寄存器大小之和,故 data 占据 q[0..2]、anc 占据 q[3],寄存器名不进入导出文本——命名只在构建期,所有后端只需理解扁平的 q[i]。GHZ 制备按门逐行作用:
- H(data[0]):$|000\rangle \to (|0\rangle+|1\rangle)/\sqrt{2} \otimes |00\rangle$
- CNOT(0,1):$\to (|00\rangle+|11\rangle)/\sqrt{2} \otimes |0\rangle$;CNOT(1,2):$\to (|000\rangle+|111\rangle)/\sqrt{2}$
- X(anc[0]):$\to (|000\rangle+|111\rangle)/\sqrt{2} \otimes |1\rangle$
两分量各 $1/2$,16 shots 期望两键各 8,实测 {8: 7, 15: 9},属统计涨落而非错误。键读法:$|000\rangle\otimes|1\rangle$ 对应 $q_3q_2q_1q_0 = 1000_2 = 8$,$|111\rangle\otimes|1\rangle$ 对应 $1111_2 = 15$。