翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 作用素を生成するには、マトリックスのリストを繰り返し実行し、マトリックスの各要素を複素数表現として出力します。
Kraus 作用素を使用する場合は、次の点に注意してください。
-
qubitsの数は 2 を超えることはできません。この制限は、スキーマの現在の定義
によって設定されています。 -
引数リストの長さは 8 の倍数である必要があります。つまり、2x2 マトリックスのみで構成する必要があります。
-
作用素マトリックス数の合計が 22*num_qubits 個を超えることはありません。つまり、1 qubitには 4 個のマトリックス、2 qubitsには 16 個のマトリックスという制限があります。
-
提供されたすべてのマトリックスは、完全に正なトレース保存 (CPTP)
の条件を満たしています。 -
Kraus 作用素と転置共役の積は、単位マトリックスになる必要があります。