레퍼런스

Result type

명시적인 measure 게이트를 추가하는 대신, 회로에 Braket result type을 붙여서 무엇을 돌려받을지 QXel에 알립니다. 여러 개를 붙일 수 있습니다. 실행 후에는 붙인 순서대로 result.values에서 읽으면 됩니다.

참고 명시적인 measure 게이트는 지원되지 않습니다. circuit.measure() 호출을 모두 제거하고 대신 아래 result type을 붙이세요.

각 타입이 반환하는 값

• Probability: 계산 기저 상태들의 확률. • Sample: 대상 큐비트와 관측 가능량(observable)에 대한 샷별 측정 결과. • Expectation: 대상 큐비트에 대한 관측 가능량의 기댓값 ⟨O⟩. • Variance: 대상 큐비트에 대한 관측 가능량의 분산. • StateVector: 전체 복소 상태 벡터. • Amplitude: 지정한 특정 기저 상태들의 진폭.

Shots: 샘플링 방식 vs 해석적 방식

샘플링 타입(Sample, 그리고 샷에서 추정한 Probability/Expectation/Variance)은 shots>0이 필요합니다. 해석적 타입(StateVector, Amplitude, 정확한 Probability)은 시뮬레이터 상태를 샘플링하는 대신 직접 읽으므로 shots=0이 필요합니다. StateVector와 Amplitude는 상태 벡터와 함께 커지므로 메모리에 의해 제한됩니다.

예제

두 개의 result type을 붙이고 읽어옵니다. 여기서 probability와 expectation은 1000 샷에서 추정됩니다:

python
from braket.circuits import Circuit, Observable

circuit = Circuit().h(0).cnot(0, 1)
circuit.probability()                          # values[0]
circuit.expectation(Observable.Z(), target=0)  # values[1]

result = qxel.run(circuit, shots=1000).result()
print(result.values)

출력

[array([0.501, 0.   , 0.   , 0.499]), 0.002]

values[0]은 '00','01','10','11'에 대한 확률입니다(Bell 상태이므로 '00'과 '11'에 가중치가 실립니다). values[1]은 큐비트 0에 대한 ⟨Z⟩로, 0이 될 확률과 1이 될 확률이 같기 때문에 0에 가깝습니다.