

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Simula il rumore con OpenQASM 3.0
<a name="braket-openqasm-noise-simulation"></a>

Per simulare il rumore con OpenQASM3, si utilizzano le istruzioni *pragma* per aggiungere operatori di rumore. Ad esempio, per simulare la versione rumorosa del [programma GHZ fornita in precedenza, è possibile inviare il seguente programma](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;
```

Le specifiche per tutti gli operatori di rumore pragma supportati sono fornite nell'elenco seguente.

```
#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
```

## Operatore Kraus
<a name="braket-openqasm-kraus-operator"></a>

Per generare un operatore Kraus, puoi scorrere un elenco di matrici, stampando ogni elemento della matrice come espressione complessa.

Quando usi gli operatori Kraus, ricorda quanto segue:
+ Il numero di non qubits deve superare 2. La [definizione corrente negli schemi](https://github.com/aws/amazon-braket-sdk-python/blob/0d28a8fa89263daf5d88bc706e79200d8dc091a8/src/braket/circuits/noises.py#L811-L814)) stabilisce questo limite.
+ La lunghezza dell'elenco degli argomenti deve essere un multiplo di 8. Ciò significa che deve essere composto solo da matrici 2x2.
+ La lunghezza totale non supera 2 matrici 2\$1num\$1qubits. Ciò significa 4 matrici per 1 e 16 per 2. qubit qubits
+ Tutte le matrici fornite sono CPTP ([Completely Positive Trace Preserving](https://github.com/aws/amazon-braket-sdk-python/blob/0d28a8fa89263daf5d88bc706e79200d8dc091a8/src/braket/circuits/quantum_operator_helpers.py#L94-L108)).
+ Il prodotto degli operatori Kraus con i loro coniugati di trasposizione deve sommarsi a una matrice di identità.