Tipi di risultato - Amazon Braket

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tipi di risultato

Amazon Braketpuò restituire diversi tipi di risultati quando un circuito viene misurato utilizzandoResultType. Un circuito può restituire i seguenti tipi di risultati.

  • Amplituderestituisce l'ampiezza degli stati quantistici specificati nella funzione d'onda di uscita. È disponibile sulSV1e solo simulatori locali.

  • Expectationrestituisce il valore atteso di un dato osservabile, che può essere specificato conObservableclasse introdotta più avanti in questo capitolo. La destinazionequbitsusato per misurare l'osservabile deve essere specificato e il numero di obiettivi specificati deve essere uguale al numero diqubitssu cui agisce l'osservabile. Se non sono specificati obiettivi, l'osservabile deve operare solo su 1qubite viene applicato a tuttiqubitsin parallel.

  • Probabilityrestituisce le probabilità di misurare gli stati di base computazionali. Se non sono specificati obiettivi,Probabilityrestituisce la probabilità di misurare tutti gli stati base. Se sono specificati obiettivi, solo le probabilità marginali dei vettori di base sullo specificatoqubitsvengono restituiti.

  • Reduced density matrixrestituisce una matrice di densità per un sottosistema di destinazione specificataqubitsda un sistema diqubits. Per limitare le dimensioni del tipo di risultato,Braketlimita il numero di obiettiviqubitsfino a un massimo di 8.

  • StateVectorrestituisce il vettore dello stato completo. È disponibile sul simulatore locale.

  • Samplerestituisce i conteggi di misurazione di un target specificatoqubitimpostato e osservabile. Se non sono specificati obiettivi, l'osservabile deve operare solo su 1qubite viene applicato a tuttiqubitsin parallel. Se vengono specificati obiettivi, il numero di obiettivi specificati deve essere uguale al numero diqubitssu cui agisce l'osservabile.

  • Variancerestituisce la varianza (mean([x-mean(x)]2)) dell'oggetto specificatoqubitimpostato e osservabile come tipo di risultato richiesto. Se non sono specificati obiettivi, l'osservabile deve operare solo su 1qubite viene applicato a tuttiqubitsin parallel. In caso contrario, il numero di obiettivi specificati deve essere uguale al numero diqubitsa cui può essere applicato l'osservabile.

I tipi di risultati supportati per diversi dispositivi:

Local sim

SV1

DM1

TN1

Rigetti

IonQ

OQC

Amplitude

Y

Y

N

N

N

N

N

Expect (

Y

Y

Y

Y

Y

Y

Y

Probability

Y

Y

Y

N

E*

Y

Y

Matrice a densità ridotta

Y

N

Y

N

N

N

N

Vettore di stato

Y

N

N

N

N

N

N

Project N.E.M.O.

Y

Y

Y

Y

Y

Y

Y

variance

Y

Y

Y

Y

Y

Y

Y

Nota

*Rigettisupporta solo tipi di risultati probabilistici fino a 40qubits.

Puoi controllare i tipi di risultati supportati esaminando le proprietà del dispositivo, come mostrato nell'esempio seguente.

device = AwsDevice("arn:aws:braket:::device/qpu/rigetti/Aspen-11") # print the result types supported by this device for iter in device.properties.action['braket.ir.jaqcd.program'].supportedResultTypes: print(iter)
name='Sample' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=100000 name='Expectation' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=100000 name='Variance' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=100000 name='Probability' observables=None minShots=10 maxShots=100000
Nota

I tipi di risultati non si applicano aD-Wavesistemi, motivo per cui non sono inclusi nella tabella precedente.

Per chiamare unResultType, aggiungilo a un circuito come mostrato nell'esempio seguente.

from braket.circuits import Observable circ = Circuit().h(0).cnot(0, 1).amplitude(state=["01", "10"]) circ.probability(target=[0, 1]) circ.probability(target=0) circ.expectation(observable=Observable.Z(), target=0) circ.sample(observable=Observable.X(), target=0) circ.state_vector() circ.variance(observable=Observable.Z(), target=0) # print one of the result types assigned to the circuit print(circ.result_types[0])

Osservabili

Amazon Braketinclude un kitObservableclasse, che può essere utilizzata per specificare un osservabile da misurare.

Puoi applicare al massimo una non identità unica osservabile a ciascunoqubit. Se si specificano due o più osservabili diversi senza identità per lo stessoqubit, verrà visualizzato un messaggio di errore. A tal fine, ogni fattore di un prodotto tensore conta come un singolo osservabile, quindi è consentito avere più prodotti tensori che agiscono sullo stessoqubit, a condizione che il fattore che agisce su talequbitè uguale.

LaObservableclass include i seguenti osservabili.

Observable.I() Observable.H() Observable.X() Observable.Y() Observable.Z() # get the eigenvalues of the observable print("Eigenvalue:", Observable.H().eigenvalues) # or whether to rotate the basis to be computational basis print("Basis rotation gates:",Observable.H().basis_rotation_gates) # get the tensor product of observable for the multi-qubit case tensor_product = Observable.Y() @ Observable.Z() # view the matrix form of an observable by using print("The matrix form of the observable:\n",Observable.Z().to_matrix()) print("The matrix form of the tensor product:\n",tensor_product.to_matrix()) # also factorize an observable in the tensor form print("Factorize an observable:",tensor_product.factors) # self-define observables given it is a Hermitian print("Self-defined Hermitian:",Observable.Hermitian(matrix=np.array([[0, 1],[1, 0]])))
Eigenvalue: [ 1 -1] Basis rotation gates: (Ry('angle': -0.7853981633974483, 'qubit_count': 1),) The matrix form of the observable: [[ 1.+0.j 0.+0.j] [ 0.+0.j -1.+0.j]] The matrix form of the tensor product: [[ 0.+0.j 0.+0.j 0.-1.j 0.-0.j] [ 0.+0.j -0.+0.j 0.-0.j 0.+1.j] [ 0.+1.j 0.+0.j 0.+0.j 0.+0.j] [ 0.+0.j -0.-1.j 0.+0.j -0.+0.j]] Factorize an observable: (Y('qubit_count': 1), Z('qubit_count': 1)) Self-defined Hermitian: Hermitian('qubit_count': 1, 'matrix': [[0.+0.j 1.+0.j], [1.+0.j 0.+0.j]])