

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# OpenQASM 3.0을 사용한 기울기 계산
<a name="braket-openqasm-computing-gradients"></a>

Amazon Braket은 `shots=0` (정확) 모드에서 실행할 때 온디맨드 시뮬레이터와 로컬 시뮬레이터 모두에서 기울기 계산을 지원합니다. 이는 수반 미분법을 사용하여 달성됩니다. 계산하려는 기울기를 지정하려면 다음 예제의 코드에 설명된 대로 적절한 pragma를 제공할 수 있습니다.

```
OPENQASM 3.0;
input float alpha;

bit[2] b;
qubit[2] q;

h q[0];
h q[1];
rx(alpha) q[0];
rx(alpha) q[1];
b[0] = measure q[0];
b[1] = measure q[1];

#pragma braket result adjoint_gradient h(q[0]) @ i(q[1]) alpha
```

모든 개별 파라미터를 명시적으로 나열하는 대신, pragma 내에서 `all` 키워드를 지정할 수도 있습니다. 이렇게 하면 나열된 모든 `input` 파라미터에 대한 기울기가 계산되므로, 파라미터 수가 매우 클 때 편리한 옵션이 될 수 있습니다. 이 경우 pragma는 다음 예제의 코드와 유사합니다.

```
#pragma braket result adjoint_gradient h(q[0]) @ i(q[1]) all
```

Amazon Braket의 OpenQASM 3.0 구현에서는 개별 연산자, 텐서 곱, 에르미트 관찰 가능 항목, `Sum` 관찰 가능 항목 등 모든 관찰 가능 항목 유형이 지원됩니다. 기울기를 계산할 때 사용할 특정 연산자는 `expectation()` 함수 내에 래핑되어야 하며, 관찰 가능 항목의 각 항이 작용하는 큐비트는 명시적으로 지정되어야 합니다.