Skip to main content
IBM Quantum Platform

Quasi-Wahrscheinlichkeitszerlegung (QPD)

qiskit_addon_cutting.qpd

Wichtigste Funktionalität der Quasiprobabilitätszerlegung.

Kolumne „ 1 “
Kolumne „ 2 “
QPDBasisBasis, in die ein Vorgang zerlegt werden kann.
BaseQPDGateBasisklasse für ein Gatter, das mittels Quasi-Wahrscheinlichkeitszerlegung zerlegt werden soll.
SingleQubitQPDGateEin-Qubit-Gatter, das mit Hilfe der Quasiprobabilitätszerlegung zerlegt werden soll.
TwoQubitQPDGateZwei-Qubit-Gatter, das mit Hilfe der Quasi-Wahrscheinlichkeitszerlegung zerlegt wird.

WeightType

class WeightType(value)

GitHub

Basen: Enum

Art des Gewichts, das mit einer QPD-Probe verbunden ist.

EXAKT

Standardwert: 1

Ein Gewicht, das im Verhältnis zu seinem genauen Gewicht angegeben wird

SAMPLED

Standardwert: 2

Ein Gewicht, das durch ein Stichprobenverfahren ermittelt wurde

generate_qpd_weights

generate_qpd_weights(qpd_bases, num_samples=1000)

GitHub

Erzeugen Sie Gewichte aus der gemeinsamen Quasi-Wahrscheinlichkeitsverteilung.

Jedes Gewicht, dessen absoluter Wert über einem Schwellenwert von 1 / num_samples liegt, wird genau bewertet. Aus den verbleibenden Gewichten - denjenigen am Ende der Verteilung - wird dann eine Stichprobe gezogen, was zu höchstens num_samples eindeutigen Gewichten führt.

Parameter

  • qpd_bases (Sequence[QPDBasis]) – Die QPDBasis objekte, aus denen Gewichte erzeugt werden sollen
  • num_samples (float) – Steuert die Anzahl der zu erzeugenden Gewichte

Rückgabetyp

dict[tuple[int, ...], tuple[float, WeightType]]

Rückgabe

Eine Abbildung von einer gegebenen Zerlegung auf ihr Gewicht. Schlüssel sind Tupel von Indizes - ein Index pro Eingabe QPDBasis. Die Indizes entsprechen einer bestimmten Zersetzungsabbildung in der Basis.

Werte sind Tupel. Das erste Element ist eine Zahl, die dem Gewicht des Beitrags entspricht. Das zweite Element ist die WeightType, entweder EXACT oder SAMPLED.

decompose_qpd_instructions

decompose_qpd_instructions(circuit, instruction_ids, map_ids=None, *, inplace=False)

GitHub

Ersetzen Sie alle QPD-Anweisungen in der Schaltung durch lokale Qiskit-Operationen und -Messungen.

Parameter

  • circuit (QuantumCircuit) – Die Schaltung mit QPD-Befehlen
  • instruction_ids (Sequence[Sequence[int]]) – Eine 2D Sequenz, so dass jede innere Sequenz den Indizes der Befehle entspricht, die eine Zerlegung in der Schaltung umfassen. Die Elemente innerhalb einer gemeinsamen Sequenz gehören zu einer gemeinsamen Zerlegung und sollten zusammen abgetastet werden.
  • map_ids (Sequence[int] | None) – Indizes für eine bestimmte lineare Abbildung, die auf die Zerlegungen im Schaltkreis anzuwenden ist. Wenn keine Map-IDs angegeben werden, wird der Schaltkreis nach dem Zufallsprinzip gemäß der gemeinsamen Wahrscheinlichkeitsverteilung der Zerlegungen zerlegt.
  • inplace (bool) – Unter True wird die circuit an Ort und Stelle geändert.

Rückgabetyp

QuantumCircuit

Rückgabe

Kreislauf, bei dem alle seine BaseQPDGate instanzen in lokale Operationen zerlegt wurden.

Die Schaltung enthält ein neues, endgültiges klassisches Register, das die Ergebnisse der QPD-Messung enthält (zugänglich unter retval.cregs[-1]).

Erhöht

  • ValueError - Ein Index in instruction_ids entspricht einem Gatter, das keine BaseQPDGate instanz ist.
  • ValueError - Eine Liste in instruction_ids hat nicht die Länge 1 oder 2.
  • ValueError - Die Gesamtzahl der Indizes in instruction_ids ist nicht gleich der Anzahl der BaseQPDGate instanzen in der Schaltung.
  • ValueError - Gatter innerhalb ein und derselben Zerlegung enthalten unterschiedliche QPD-Basen.
  • ValueError - Die Länge von map_ids ist nicht gleich der Anzahl der Zerlegungen in der Schaltung.

qpdbasis_from_instruction

qpdbasis_from_instruction(gate, /)

GitHub

Erzeugen Sie ein QPDBasis objekt, das eine unterstützte Operation enthält.

Alle Zwei-Qubit-Gatter, die die Methode to_matrix() methode implementieren, werden unterstützt. Dies sollte die große Mehrheit der Gates ohne ungebundene Parameter einschließen, aber es gibt einige Sonderfälle (siehe z.B. qiskit issue #10396 ).

Die Move wird ebenfalls unterstützt und kann zur Angabe eines Drahtschnitts verwendet werden.

Rückgabetyp

QPDBasis

Rückgabe

Das neu instanziierte QPDBasis objekt

Erhöht

  • ValueError - Anweisung wird nicht unterstützt.
  • ValueError - Befehl mit ungebundenen Parametern kann nicht zerlegt werden.
  • ValueError - to_matrix Umwandlung eines Zwei-Qubit-Gatters fehlgeschlagen.

Parameter

gate (Instruction)

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.