

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Liste der Ergebnistypen
<a name="braket-result-types"></a>

Amazon Braket kann verschiedene Arten von Ergebnissen zurückgeben, wenn ein Stromkreis mit `ResultType` gemessen wird. Ein Stromkreis kann die folgenden Arten von Ergebnissen zurückgeben.
+  `AdjointGradient`gibt den Gradienten (Vektorableitung) des Erwartungswerts einer angegebenen Observablen zurück. Diese Observable wirkt auf ein vorgegebenes Ziel in Bezug auf bestimmte Parameter, wobei die Methode der adjungierten Differenzierung verwendet wird. Sie können diese Methode nur verwenden, wenn shots=0 ist.
+  `Amplitude`gibt die Amplitude der angegebenen Quantenzustände in der Ausgangswellenfunktion zurück. Sie ist nur auf den Simulatoren SV1 und vor Ort verfügbar.
+  `Expectation`gibt den Erwartungswert einer bestimmten Observablen zurück, der mit der später in diesem Kapitel eingeführten `Observable` Klasse spezifiziert werden kann. Das zur Messung der beobachtbaren Größe qubits verwendete Ziel muss angegeben werden, und die Anzahl der angegebenen Ziele muss der Anzahl entsprechen, qubits auf die die beobachtbare Größe einwirkt. Wenn keine Ziele angegeben sind, darf die Observable nur mit 1 arbeiten qubit und sie wird auf alle qubits parallel.
+  `Probability`gibt die Wahrscheinlichkeiten für die Messung von Zuständen auf rechnerischer Basis zurück. Wenn keine Ziele angegeben sind, wird die Wahrscheinlichkeit `Probability` zurückgegeben, mit der alle Basiszustände gemessen wurden. Wenn Ziele angegeben sind, werden nur die Randwahrscheinlichkeiten der Basisvektoren für die angegebenen qubits Werte zurückgegeben. Verwaltete Simulatoren, die auf maximal 15 Qubits begrenzt QPUs sind, und lokale Simulatoren sind auf die Speichergröße des Systems beschränkt.
+  `Reduced density matrix`gibt eine Dichtematrix für ein Subsystem eines bestimmten Ziels qubits aus einem System von zurück. qubits Um die Größe dieses Ergebnistyps zu begrenzen, begrenzt Braket die Anzahl der Ziele qubits auf maximal 8.
+  `StateVector`gibt den vollständigen Zustandsvektor zurück. Er ist auf dem lokalen Simulator verfügbar.
+  `Sample`gibt die Anzahl der Messungen eines bestimmten qubit Zielsatzes und eines beobachtbaren Zielwerts zurück. Wenn keine Ziele angegeben sind, darf die Observable nur mit 1 arbeiten qubit und sie wird auf alle qubits parallel. Wenn Ziele angegeben sind, muss die Anzahl der angegebenen Ziele der Anzahl entsprechen, qubits auf die die beobachtbare Größe einwirkt.
+  `Variance`gibt die Varianz (`mean([x-mean(x)]2)`) des angegebenen qubit Zielsatzes und Observable als angeforderten Ergebnistyp zurück. Wenn keine Ziele angegeben sind, darf die Observable nur mit 1 arbeiten qubit und sie wird auf alle qubits parallel. Andernfalls muss die Anzahl der angegebenen Ziele der Anzahl entsprechen, auf die qubits die beobachtbare Größe angewendet werden kann.

 **Die unterstützten Ergebnistypen für verschiedene Anbieter:** 


|  |  |  |  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |
|  | Lokale SIM |  SV1  |  DM1  |  TN1  |  AQT  |  IonQ  |  IQM  |  Rigetti  | 
| Adjunges Gefälle | N | Y | N | N | N | N | N | N | 
| Amplitude | Y | Y | N | N | N | N | N | N | 
| Erwartung | Y | Y | Y | Y | Y | Y | Y | Y | 
| Probability (Wahrscheinlichkeit) | Y | Y | Y | N | Y | Y | Y | Y | 
| Matrix mit reduzierter Dichte | Y | N | Y | N | N | N | N | N | 
| Zustandsvektor | Y | N | N | N | N | N | N | N | 
| Beispiel | Y | Y | Y | Y | Y | Y | Y | Y | 
| Varianz | Y | Y | Y | Y | Y | Y | Y | Y | 

Sie können die unterstützten Ergebnistypen anhand der Geräteeigenschaften überprüfen, wie im folgenden Beispiel gezeigt.

```
from braket.aws import AwsDevice

device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3")

# Print the result types supported by this device
for iter in device.properties.action['braket.ir.openqasm.program'].supportedResultTypes:
    print(iter)
```

```
name='Sample' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=50000
name='Expectation' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=50000
name='Variance' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=50000
name='Probability' observables=None minShots=10 maxShots=50000
```

Um a aufzurufen`ResultType`, hängen Sie es an einen Schaltkreis an, wie im folgenden Beispiel gezeigt.

```
from braket.circuits import Circuit, 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])
```

**Anmerkung**  
Verschiedene Quantengeräte liefern Ergebnisse in verschiedenen Formaten. RigettiGeräte geben beispielsweise Messwerte zurück, während IonQ Geräte Wahrscheinlichkeiten liefern. Das Amazon Braket SDK bietet eine Messeigenschaft für alle Ergebnisse. Bei Geräten, die Wahrscheinlichkeiten zurückgeben, werden diese Messungen jedoch nachberechnet und basieren auf den Wahrscheinlichkeiten, da keine Messungen pro Schuss verfügbar sind. Um festzustellen, ob ein Ergebnis nachberechnet wurde, überprüfen Sie den Wert auf dem Ergebnisobjekt. `measurements_copied_from_device` Dieser Vorgang ist in der Datei [gate\_model\_quantum\_task\_result.py](https://github.com/aws/amazon-braket-sdk-python/blob/ca5b08dada4839ca31c012ff50aa20b656fd1879/src/braket/tasks/gate_model_quantum_task_result.py#L70-L72) im Amazon Braket GitHub SDK-Repository detailliert beschrieben.

## Observablen
<a name="braket-result-types-observables"></a>

Mit der `Observable` Klasse von Amazon Braket können Sie eine bestimmte beobachtbare Größe messen. 

Sie können jeweils nur ein eindeutiges beobachtbares Objekt ohne Identität zuweisen. qubit Ein Fehler tritt auf, wenn Sie zwei oder mehr verschiedene Observablen ohne Identität für dasselbe angeben. qubit Zu diesem Zweck zählt jeder Faktor eines Tensorprodukts als einzelne beobachtbare Größe. Das bedeutet, dass Sie mehrere Tensorprodukte auf demselben System haben könnenqubit, solange die Faktoren, die darauf einwirken, gleich qubit bleiben.

Eine Observable kann skaliert werden und weitere Observablen (skaliert oder nicht) hinzugefügt werden. Dadurch entsteht eine`Sum`, die im Ergebnistyp verwendet werden kann. `AdjointGradient`

Die `Observable` Klasse umfasst die folgenden Observablen.

```
import numpy as np

Observable.I()
Observable.H()
Observable.X()
Observable.Y()
Observable.Z()

# Get the eigenvalues of the observable
print("Eigenvalue:", Observable.H().eigenvalues)
# Or rotate the basis to be computational basis
print("Basis rotation gates:", Observable.H().basis_rotation_gates)

# Get the tensor product of the 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())

# 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]])))

print("Sum of other (scaled) observables:", 2.0 * Observable.X() @ Observable.X() + 4.0 * Observable.Z() @ Observable.Z())
```

```
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]])
Sum of other (scaled) observables: Sum(TensorProduct(X('qubit_count': 1), X('qubit_count': 1)), TensorProduct(Z('qubit_count': 1), Z('qubit_count': 1)))
```

## Parameters
<a name="braket-result-types-parameters"></a>

Schaltungen können freie Parameter enthalten. Diese freien Parameter müssen nur einmal erstellt werden, um sie mehrfach auszuführen, und können zur Berechnung von Gradienten verwendet werden. 

Jeder freie Parameter verwendet einen in einer Zeichenfolge codierten Namen, der für folgende Zwecke verwendet wird: 
+ Parameterwerte festlegen
+ Identifizieren Sie, welche Parameter verwendet werden sollen

```
from braket.circuits import Circuit, FreeParameter, observables
from braket.parametric import FreeParameter

theta = FreeParameter("theta")
phi = FreeParameter("phi")
circ = Circuit().h(0).rx(0, phi).ry(0, phi).cnot(0, 1).xx(0, 1, theta)
```

## Adjungierter Gradient
<a name="braket-result-types-adjoint-gradient"></a>

Das SV1 Gerät berechnet den adjungierten Gradienten eines beobachtbaren Erwartungswerts, einschließlich eines Hamilton-Werts mit mehreren Termen. Geben Sie zur Unterscheidung von Parametern ihren Namen (im Zeichenkettenformat) oder als direkte Referenz an.

```
from braket.aws import AwsDevice
from braket.devices import Devices

device = AwsDevice(Devices.Amazon.SV1)

circ.adjoint_gradient(observable=3 * Observable.Z(0) @ Observable.Z(1) - 0.5 * observables.X(0), parameters = ["phi", theta])
```

Wenn feste Parameterwerte als Argumente an einen parametrisierten Schaltkreis übergeben werden, werden die freien Parameter entfernt. Das Ausführen dieser Schaltung mit `AdjointGradient` erzeugt einen Fehler, da die freien Parameter nicht mehr existieren. Das folgende Codebeispiel zeigt die korrekte und falsche Verwendung:

```
# Will error, as no free parameters will be present
#device.run(circ(0.2), shots=0)

# Will succeed
device.run(circ, shots=0, inputs={'phi': 0.2, 'theta': 0.2})
```