OpenQASM 3.0 でノイズをシミュレートする - Amazon Braket

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 演算子を使用する場合は、次の点に注意してください。

  • の数は 2 を超えるqubitsことはできません。スキーマの現在の定義によって、この制限が設定されます。

  • 引数リストの長さは 8 の倍数である必要があります。つまり、2x2 マトリックスのみで構成する必要があります。

  • 合計長は 22*num_qubits マトリックスを超えないようにします。つまり、1 には 4 つのマトリックスqubit、2 には 16 のマトリックスですqubits。

  • 提供されたすべてのマトリックスは、完全陽性トレース保存 (CPTP) です

  • 変換結合を持つ Kraus 演算子の積は、ID マトリックスに合計する必要があります。