

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 OpenQASM 3.0 模拟噪声
<a name="braket-openqasm-noise-simulation"></a>

要使用 Open 模拟噪声QASM3，可以使用 *pragma* 指令添加噪音运算符。例如，要模拟之前提供的 [GHZ 程序](braket-openqasm-create-submit-task.md#braket-openqasm-example-program)的噪声版本，您可以提交以下 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 运算符
<a name="braket-openqasm-kraus-operator"></a>

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

使用克劳斯运算符时，请记住以下几点：
+ qubits 的数量不得超过 2。[架构中的当前定义](https://github.com/aws/amazon-braket-sdk-python/blob/0d28a8fa89263daf5d88bc706e79200d8dc091a8/src/braket/circuits/noises.py#L811-L814))设定了此限制。
+ 参数列表的长度必须是 8 的倍数。这意味着它必须仅由 2x2 矩阵组成。
+ 总长度不超过 22\$1num\$1qubits 矩阵。这意味着，1 个 qubit 有 4 个矩阵，2 个 qubits 有 16 个矩阵。
+ 所有提供的矩阵均为[完全正迹线保持(CPTP）](https://github.com/aws/amazon-braket-sdk-python/blob/0d28a8fa89263daf5d88bc706e79200d8dc091a8/src/braket/circuits/quantum_operator_helpers.py#L94-L108)。
+ Kraus 运算符及其转置共轭的乘积需要相加得出一个单位矩阵。