기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
OpenQASM 3.0으로 노이즈 시뮬레이션
OpenQASM3로 노이즈를 시뮬레이션하려면 pragma 지침을 사용하여 노이즈 연산자를 추가합니다. 예를 들어 이전에 제공된 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 노이즈 연산자에 대한 사양은 다음 목록에 나와 있습니다.
#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의 경우 행렬 4qubit개, 2의 경우 행렬 16개를 의미합니다qubits.
-
제공된 모든 매트릭스는 완전히 양의 추적 보존(CPTP)
입니다. -
Kraus 연산자와 트랜스포지토리 결합체의 곱은 자격 증명 매트릭스에 추가해야 합니다.