PauliProductMeasurement
class qiskit.circuit.library.PauliProductMeasurement(pauli, label=None)
Grundlagen: Instruction
Pauli Produkt Messanleitung.
Eine Pauli-Produktmessung ist eine grundlegende Operation im fehlertoleranten Quantencomputing. Mathematisch entspricht dies einer gemeinsamen projektiven Messung an mehreren Qubits, wobei die gemessene Observable ein Tensorprodukt von Pauli-Operatoren ist. Das Ergebnis dieser Messung ist ein einzelner Eigenwert, entweder oder , der den Eigenzustand des Pauli-Produkts angibt.
Quellenangaben:
[1] Daniel Litinski. „Ein Spiel mit Oberflächencodes: Groß angelegtes Quantencomputing mit Gitterchirurgie“ arXiv:1808.02892
Parameter
- pauli (qiskit.quantum_info.Pauli) – Ein Tensorprodukt von Pauli-Operatoren, das die Messung definiert, zum Beispiel
Pauli("XY")oderPauli("-XYIZ"). Der Identitäts-Pauli-Operator ist nicht zulässig. Der Pauli-Effekt kann eine Phase von enthalten, jedoch nicht oder . - label (str | None) – Ein optionales Label für das Gate, das in Schaltungsvisualisierungen angezeigt wird. Standardmäßig ist das Label auf gesetzt
PPM(<pauli label>).
Obwohl "I"Pauli-Bedingungen vollständig unterstützt werden, wird empfohlen, Pauli-Bedingungen bei der Erstellung "I" einer PauliProductMeasurement Anweisung zu entfernen, da dies die tatsächliche Messung nicht verändert, sondern die Anweisung für eine kleinere Gruppe von Qubits festlegt.
Erhöhungen
CircuitError – Wenn der Pauli-Operator der Identitätsoperator ist, die Größe 0 hat oder eine komplexe Phase aufweist.
Parameter
- pauli (qiskit.quantum_info.Pauli)
- label (str | None)
Attribute
base_class
Rufe die Basisklasse dieser Anweisung ab. Dies ist garantiert im Vererbungsbaum von enthalten self.
Die „Basisklasse“ einer Anweisung ist die unterste Klasse in ihrem Vererbungsbaum, mit der das Objekt für _alle_ Schaltungsanwendungen als vollständig kompatibel angesehen werden sollte. Dies bedeutet in der Regel, dass die Unterklasse ausschließlich definiert ist, um dem Programmierer gegenüber der Basisklasse gewisse Vorteile zu bieten, und dass die Basisklasse aus Sicht des Verhaltens die „wahre“ Klasse ist. Insbesondere sollten Sie nicht überschreiben, base_class wenn Sie eine benutzerdefinierte Version einer Anweisung definieren, die von der Hardware anders implementiert wird, z. B. eine alternative Messstrategie oder eine Version eines parametrisierten Gatter mit einem bestimmten Parametersatz, um es in einem Target vom vollständig parametrisierten Gatter zu unterscheiden.
Dies entspricht oft genau type(obj), außer im Fall von Singleton-Instanzen von Standardbibliotheksanweisungen. Diese Singleton-Instanzen sind spezielle Unterklassen ihrer Basisklasse, und diese Eigenschaft gibt diese Basisklasse zurück. Zum Beispiel:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
TrueIm Allgemeinen sollten Sie sich nicht auf die genaue Klasse einer Anweisung verlassen; innerhalb einer bestimmten Schaltung ist zu erwarten, dass in den meisten Situationen ein Instruction.name geeigneterer Unterscheidungsfaktor ist.
decompositions
Holen Sie sich die Zerlegungen der Anweisung aus dem Befehlssatz ( SessionEquivalenceLibrary ).
definition
Definition der Rückgabe in Bezug auf andere grundlegende Gatter.
label
Rücksendeetikett
mutable
Ist diese Instanz eine veränderbare eindeutige Instanz oder nicht?
Wenn dieses Attribut ist, ist False die Gate-Instanz ein gemeinsam genutztes Singleton und nicht veränderbar.
name
Den Namen zurückgeben.
num_clbits
Gibt die Anzahl der clbits zurück.
num_qubits
Gibt die Anzahl der Qubits zurück.
params
Die Parameter dieses Instruction. Idealerweise handelt es sich dabei um Torwinkel.
Methoden
add_decomposition
add_decomposition(decomposition)
Fügen Sie eine Zerlegung der Anweisung zum „ SessionEquivalenceLibrary ” hinzu.
broadcast_arguments
broadcast_arguments(qargs, cargs)
Validierung der Argumente.
Parameter
- qargs (List) – Liste der Quantenbit-Argumente.
- cargs (List) – Liste der klassischen Bitargumente.
Ergiebigkeit
Tuple(Liste, Liste) – Ein Tupel mit einzelnen Argumenten.
Erhöhungen
CircuitError – Wenn die Eingabe ungültig ist. Beispielsweise stimmt die Anzahl der Argumente nicht mit der vom Gatter erwarteten Anzahl überein.
copy
copy(name=None)
Kopie der Anleitung.
Parameter
name (str) – Name, der dem kopierten Schaltkreis gegeben werden soll; wenn None dann bleibt der Name unverändert.
Rückgabe
eine Kopie der aktuellen Anweisung, wobei der Name aktualisiert wurde, falls er angegeben wurde
Rückgabetyp
inverse
inverse(annotated=False)
Verhindert den Aufruf inverse einer Anweisung „ PauliProductMeasurement “.
is_parameterized
pauli
pauli()
Gibt das durch diese Messung realisierte Pauli-Produkt zurück.
Dies ist ein öffentlicher Zugriffsoperator, der das diesem Pauli Befehl zugrunde liegende Tensorprodukt der Pauli-Operatoren rekonstruiert und zurückgibt, einschließlich seiner globalen Phase von +1 oder -1.
Rückgabe
Das durch diesen Befehl gemessene Pauli-Produkt.
Rückgabetyp
repeat
repeat(n)
Erstellt eine Anweisung, die self -mal wiederholt wird.
Parameter
n (int) – Anzahl der Wiederholungen der Anweisung
Rückgabe
Enthält die Definition.
Rückgabetyp
Erhöhungen
CircuitError – Wenn n < 1 ist.
reverse_ops
reverse_ops()
Bei einer zusammengesetzten Anweisung kehren Sie die Reihenfolge der Unteranweisungen um.
Dies geschieht durch rekursives Umkehren aller Unteranweisungen. Es invertiert kein Gate.
Rückgabe
eine neue Anweisung mit
Unteranweisungen umgekehrt.
Rückgabetyp
soft_compare
soft_compare(other)
Weicher Vergleich zwischen Toren. Ihre Namen, die Anzahl der Qubits und die Anzahl der klassischen Bits müssen übereinstimmen. Die Anzahl der Parameter muss übereinstimmen. Jeder Parameter wird verglichen. Wenn es sich um ein „ ParameterExpression ” handelt, wird es nicht berücksichtigt.
Parameter
other (instruction) – andere Anweisung.
Rückgabe
sind selbst und andere bis zu Parameterausdrücken gleich.
Rückgabetyp
to_mutable
to_mutable()
Gibt eine veränderbare Kopie dieses Gates zurück.
Diese Methode gibt eine neue veränderbare Kopie dieser Gate-Instanz zurück. Wenn eine Singleton-Instanz verwendet wird, handelt es sich um eine neue eindeutige Instanz, die mutiert werden kann. Wenn die Instanz bereits veränderbar ist, handelt es sich um eine Deepcopy dieser Instanz.
validate_parameter
validate_parameter(parameter)
Der Befehlsparameter unterliegt keiner Validierung oder Normalisierung.