使用 OpenQASM 3.0 模拟噪声 - Amazon Braket

使用 OpenQASM 3.0 模拟噪声

要使用 OpenQASM3 模拟噪声,您可以使用编译指示说明来添加噪声运算符。例如,要模拟之前提供的 GHZ 程序的噪声版本,您可以提交以下 OpenQASM 程序。

// ghz.qasm // Prepare a GHZ state OPENQASM 3; qubit[3] q; bit[3] c; h q[0]; #pragma braket noise depolarizing(0.75) q[0] cnot q[0], q[1]; #pragma braket noise depolarizing(0.75) q[0] #pragma braket noise depolarizing(0.75) q[1] cnot q[1], q[2]; #pragma braket noise depolarizing(0.75) q[0] #pragma braket noise depolarizing(0.75) q[1] c = measure q;

以下列表给出了所有受支持的编译指示噪声运算符的规格。

#pragma braket noise bit_flip(<float in [0,1/2]>) <qubit> #pragma braket noise phase_flip(<float in [0,1/2]>) <qubit> #pragma braket noise pauli_channel(<float>, <float>, <float>) <qubit> #pragma braket noise depolarizing(<float in [0,3/4]>) <qubit> #pragma braket noise two_qubit_depolarizing(<float in [0,15/16]>) <qubit>, <qubit> #pragma braket noise two_qubit_dephasing(<float in [0,3/4]>) <qubit>, <qubit> #pragma braket noise amplitude_damping(<float in [0,1]>) <qubit> #pragma braket noise generalized_amplitude_damping(<float in [0,1]> <float in [0,1]>) <qubit> #pragma braket noise phase_damping(<float in [0,1]>) <qubit> #pragma braket noise kraus([[<complex m0_00>, ], ...], [[<complex m1_00>, ], ...], ...) <qubit>[, <qubit>] // maximum of 2 qubits and maximum of 4 matrices for 1 qubit, 16 for 2

Kraus 运算符

要生成 Kraus 运算符,可以遍历矩阵列表,将矩阵的每个元素打印为复杂表达式。

使用克劳斯运算符时,请记住以下几点:

  • qubits 的数量不得超过 2。架构中的当前定义设定了此限制。

  • 参数列表的长度必须是 8 的倍数。这意味着它必须仅由 2x2 矩阵组成。

  • 总长度不超过 22*num_qubits 矩阵。这意味着,1 个 qubit 有 4 个矩阵,2 个 qubits 有 16 个矩阵。

  • 所有提供的矩阵均为完全正迹线保持(CPTP)

  • Kraus 运算符及其转置共轭的乘积需要相加得出一个单位矩阵。