Pauli测量
在量子机器学习领域,常常使用Pauli测量得到量子电路的期望。
1. 创建isQ代码
这段代码命名为pauli_measurement.isq
,并且放在同一个目录。
import std;
qbit q[1];
int pauli_inx[] = {2}; // this means Z0
// using arrays for pauli measurement
// X:0, Y:1, Z:2, I:3
// examples:
// int pauli_inx[] = {2, 2} -> Z0Z1
// int pauli_inx[] = {0, 1, 2, 3} -> X0Y1Z2I3
// int pauli_inx[] = {1} -> Y0
unit pauli(int puali_idx[], qbit q[]) {
for i in 0:puali_idx.length {
if (puali_idx[i] == 0) {
H(q[i]);
M(q[i]);
}
if (puali_idx[i] == 1) {
X2P(q[i]);
M(q[i]);
}
if (puali_idx[i] == 2) {
M(q[i]);
}
if (puali_idx[i] == 3) {
continue;
}
}
}
unit main() {
Ry(1.0, q[0]);
pauli(pauli_inx, q);
// Z0 measure
}
2. Pauli测量
我们在pauli_measurement.isq
给出了Pauli测量的写法。请仔细查看pauli_measurement.isq
的注释部分。建立了IsqCircuit
的实例qc
后,此时要使用qc.pauli_measure()
对该电路进行测量,得到Pauli测量的结果,结果的取值范围为[-1, 1]。
from isqtools import IsqCircuit
from isqtools.backend import NumpyBackend
backend = NumpyBackend()
qc = IsqCircuit(
file="pauli_measurement.isq",
backend=backend,
sample=False,
)
print(qc.pauli_measure())
0.5403023058681399
电路可视化。
from isqtools.draw import Drawer
dr = Drawer()
dr.plot(qc.qcis)