Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Um Rauschen mit Open zu simulierenQASM3, verwenden Sie Pragma-Befehle, um Rauschoperatoren hinzuzufügen. Um beispielsweise die zuvor bereitgestellte Version des GHZ-Programms zu simulieren, können Sie das folgende OpenQASM-Programm einreichen.
// 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;
Die Spezifikationen für alle unterstützten Pragma-Noise-Operatoren finden Sie in der folgenden Liste.
#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-Operator
Um einen Kraus-Operator zu generieren, können Sie durch eine Liste von Matrizen iterieren und jedes Element der Matrix als komplexen Ausdruck drucken.
Beachten Sie bei der Verwendung von Kraus-Operatoren Folgendes:
-
Die Anzahl von qubits darf 2 nicht überschreiten. Die aktuelle Definition in den Schemas
legt diesen Grenzwert fest. -
Die Länge der Argumentliste muss ein Vielfaches von 8 sein. Das bedeutet, dass sie nur aus 2x2-Matrizen bestehen darf.
-
Die Gesamtlänge überschreitet nicht 2 2*num_qubits-Matrizen. Das bedeutet 4 Matrizen für 1 qubit und 16 für 2 qubits.
-
Bei allen mitgelieferten Matrizen handelt es sich um eine vollständig positive Spurensicherung (CPTP)
. -
Das Produkt der Kraus-Operatoren mit ihren transponierten Konjugaten muss sich zu einer Identitätsmatrix addieren.