As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Simule ruídos com o Open 3.0 QASM
Para simular o ruído com o OpenQASM3, você usa instruções pragmáticas para adicionar operadores de ruído. Por exemplo, para simular a versão ruidosa do GHZprograma fornecida anteriormente, você pode enviar o seguinte programa aberto. QASM
// 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;
As especificações para todos os operadores de ruído pragmática suportados são fornecidas na lista a seguir.
#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
Operador Kraus
Para gerar um operador Kraus, você pode iterar por meio de uma lista de matrizes, imprimindo cada elemento da matriz como uma expressão complexa.
Ao usar operadores Kraus, lembre-se do seguinte:
-
O número de não qubits deve exceder 2. A definição atual nos esquemas
define esse limite. -
O tamanho da lista de argumentos deve ser múltiplo de 8. Isso significa que ele deve ser composto apenas por matrizes 2x2.
-
O comprimento total não excede 2 matrizes 2*num_qubits. Isso significa 4 matrizes para 1 qubit e 16 para 2. qubits
-
Todas as matrizes fornecidas preservam traços completamente positivos (). CPTP
-
O produto dos operadores de Kraus com seus conjugados de transposição precisa se somar a uma matriz de identidade.