Skip to main content
IBM Quantum Platform

FermionicGate

class FermionicGate(name, num_modes, /, params=None, *, label=None)

Basen: Gate

Die Basisklasse für alle fermionischen Gatter.

Um die Konsistenz zu gewährleisten, können nur Unterklassen dieser Gate-Klasse zu Instanzen von FermionicCircuit… hinzugefügt werden. Daher dient diese Klasse (vorerst) (größtenteils) als Typ.

Vorsicht

Da es sich hierbei um eine Unterklasse handelt, kann sich die Gate Dokumentation ihrer Methoden auf Qubits beziehen. Diese Verweise sind so zu verstehen, dass sie sich im Zusammenhang mit Instanzen dieser Unterklasse auf Fermionen beziehen.

Es kann auch vorkommen, dass einige der geerbten Methoden aufgrund dieser Neuinterpretation nicht immer sinnvoll sind. Du wurdest gewarnt.

Parameter

  • name (str) – Der Name des Tors.
  • num_qubits – Die Anzahl der Qubits, auf die das Gatter wirkt.
  • params (list | None) – Eine Liste von Parametern.
  • label (str | None) – Eine optionale Beschriftung für das Tor.
  • num_modes (int)

Attribute

num_modes

Die Anzahl der fermionischen Moden, auf die dieses Gatter einwirkt.

Vererbte Attribute

base_class

Rufe die Basisklasse dieser Anweisung ab. Das gehört garantiert zum Vererbungsbaum von 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. Das bedeutet in der Regel, dass die Unterklasse lediglich definiert wurde, um dem Programmierer gegenüber der Basisklasse gewisse Erleichterungen zu bieten, während die Basisklasse aus verhaltensorientierter Sicht die „wahre“ Klasse ist. Insbesondere sollten Sie die Methode nicht überschreiben, wenn base_class Sie eine benutzerdefinierte Version einer Anweisung definieren, die von der Hardware anders implementiert wird, wie beispielsweise eine alternative Messstrategie oder eine Version eines parametrisierten Gatters mit einem bestimmten Parametersatz, um sie in einem Kontext vom Target vollständig parametrisierten Gatter zu unterscheiden.

Dies entspricht oft genau type(obj), außer im Fall von Singleton-Instanzen von Befehlen aus der Standardbibliothek. 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
True

Generell sollten Sie sich nicht auf die genaue Klasse einer Anweisung verlassen; innerhalb einer bestimmten Schaltung ist davon auszugehen, dass in den meisten Situationen ein geeigneteres Unterscheidungsmerkmal Instruction.name darstellt.

decompositions

Rufen Sie die Zerlegungen des Befehls aus dem „ SessionEquivalenceLibrary “ ab.

definition

Definition des Rücklaufs anhand anderer Grundgatter.

label

Etikett mit Rücksendeanweisungen

mutable

Ist diese Instanz eine veränderbare, eindeutige Instanz oder nicht?

Wenn dieses Attribut gesetzt ist, handelt es sich bei der False Gate-Instanz um ein gemeinsam genutztes Singleton, das nicht veränderbar ist.

name

Gib den Namen zurück.

num_clbits

Gibt die Anzahl der clbits zurück.

num_qubits

Gibt die Anzahl der Qubits zurück.

params

Die Parameter dieser Instruction. Im Idealfall handelt es sich dabei um Torwinkel.

Protokollmethoden

_apply_unitary_

_apply_unitary_(vec, norb, nelec, copy)

Wendet dieses Gatter auf einen ffsim-Zustandsvektor an und implementiert damit das ffsim-Protokoll.

Dies ist der Einstiegspunkt für die Identitätsplatzierung im Protokoll ffsim.SupportsApplyUnitary von ffsim: Es wird davon ausgegangen, dass das Gatter auf die Moden 0..num_modes des Zustandsvektors wirkt, und die Aufgabe wird an die platzierungsbewusste Funktion ( _apply_unitary_placed_() siehe SupportsApplyUnitaryPlaced) delegiert, die jedes konkrete fermionische Gatter implementiert. Die Semantik von ( vec einschließlich der Frage, ob ein Vektor None akzeptiert wird), norb, nelec, und ist dieser Methode zu entnehmen copy.

Erhöhungen

NotImplementedError – wenn dieses Gatter nicht implementiert ( _apply_unitary_placed_ ein bloßes, das nur als Typmarker dient FermionicGate ) und daher nicht auf einen Zustandsvektor angewendet werden kann.

Parameter

Rückgabetyp

np.ndarray

Vererbte Methoden

add_decomposition

add_decomposition(decomposition)

Füge eine Aufschlüsselung der Anweisung in die „ SessionEquivalenceLibrary “ ein.

broadcast_arguments

broadcast_arguments(qargs, cargs)

Validierung und Verarbeitung der Argumente sowie deren Beziehungen zueinander.

Beispielsweise bedeutet cx([q[0],q[1]], q[2]) cx(q[0], q[2]); cx(q[1], q[2]). Diese Methode liefert die Argumente in der richtigen Gruppierung. Im angegebenen Beispiel:

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

Die allgemeinen Sendevorschriften lauten wie folgt:

  • Wenn len(qargs) == 1:

    [q[0], q[1]] -> [q[0]],[q[1]]
  • Wenn len(qargs) == 2:

    [[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
    [[q[0]], [r[0], r[1]]]       -> [q[0], r[0]], [q[0], r[1]]
    [[q[0], q[1]], [r[0]]]       -> [q[0], r[0]], [q[1], r[0]]
  • Wenn len(qargs) >= 3:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]

Parameter

  • qargs (list) – Liste der Argumente für Quantenbits.
  • cargs (list) – Liste klassischer Bit-Argumente.

Rückgabe

Ein Tupel mit einem einzigen Argument.

Erhöhungen

CircuitError – Wenn die Eingabe ungültig ist. Beispielsweise stimmt die Anzahl der Argumente nicht mit der vom Gatter erwarteten Anzahl überein.

Rückgabetyp

Iterable [ Tupel [ Liste, Liste ]]

control

control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)

Gibt die kontrollierte Version von sich selbst zurück.

Das gesteuerte Gatter wird als implementiert, ControlledGate wenn annotated ist False, und als, AnnotatedOperation wenn annotated ist True.

Seit Version 2.3 veraltet

qiskit.circuit.gate.Gate.control()Das Argument annotated ist ab Qiskit 2.3 veraltet. Es wird in Qiskit 3.0 entfernt. Die Methode „ Gate.control ()“ akzeptiert „annotated=None“ nicht mehr. Die neue Standardeinstellung ist „annotated=True“, wodurch das gesteuerte Gatter als „ AnnotatedOperation “ dargestellt wird (sofern nicht bereits eine eigene Klasse für gesteuerte Gatter existiert). Sie können „annotated=False“ explizit festlegen, um das bisherige Verhalten beizubehalten. Es wird jedoch empfohlen, „annotated=True“ zu verwenden, da dadurch die Erstellung der kontrollierten Schaltung auf den Transpiler verschoben wird und darüber hinaus zusätzliche Optimierungen der kontrollierten Gatter ermöglicht werden (was in der Regel zu Schaltungen höherer Qualität führt).

Parameter

  • num_ctrl_qubits (int) – Anzahl der hinzuzufügenden Steuerelemente. Der Standardwert ist 1.
  • label (str | None) – Optionale Beschriftung des Tors. Der Standardwert ist None. Wird ignoriert, wenn das gesteuerte Gate als annotierte Operation implementiert ist.
  • ctrl_state (int |str | None) – Der Steuerzustand des Gatters, angegeben entweder als Ganzzahl oder als Bitfolge (z. B. "110"). Wenn None, wird standardmäßig der Zustand „all-ones“ angenommen 2**num_ctrl_qubits - 1.
  • annotated (bool | None) – Gibt an, ob das gesteuerte Gatter als gesteuertes Gatter oder als kommentierte Operation implementiert werden soll. Wenn None, wird dies als behandelt False.

Rückgabe

Eine gesteuerte Version dieses Gatters.

Erhöhungen

QiskitError – ungültig oder num_ctrl_qubits ctrl_state.

copy

copy(name=None)

Kopie der Anleitung.

Parameter

name (str) – Name, der der kopierten Schaltung zugewiesen werden soll; wenn dann None bleibt der Name unverändert.

Rückgabe

eine Kopie der aktuellen Anleitung, wobei der Name aktualisiert wird, sofern er angegeben wurde

Rückgabetyp

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

Kehr diese Anweisung um.

Ist „annotated“ auf „False“ gesetzt, wird die inverse Anweisung als neue Anweisung mit der rekursiv invertierten Definition implementiert.

Ist „annotated“ auf „True“ gesetzt, wird die inverse Anweisung als implementiert und entspricht der angegebenen Anweisung AnnotatedOperation, die mit dem „inverse modifier“ versehen ist.

Spezielle Befehle, die von „Instruction“ abgeleitet sind, können ihre eigene Umkehrung implementieren (z. B. T und Tdg, Barrier usw.) Insbesondere können sie festlegen, wie mit dem Argument verfahren werden soll – dies annotated kann auch bedeuten, es zu ignorieren und stets eine konkrete Gatterklasse zurückzugeben, wenn die Inverse als Standardgatter definiert ist.

Parameter

annotated (bool) – Wenn dieser Wert auf „True“ gesetzt ist, wird das inverse Ausgangsgatter als zurückgegeben AnnotatedOperation.

Rückgabe

Die Umkehroperation.

Erhöhungen

CircuitError – wenn es sich nicht um eine zusammengesetzte Anweisung handelt und für diese keine Umkehrung implementiert wurde.

is_parameterized

is_parameterized()

Gibt zurück, ob das Kompilierungszeitparameter enthält Instruction .

power

power(exponent, annotated=False)

Erhebe dieses Tor zur Potenz von exponent.

Wird entweder als einheitliches Gatter implementiert (siehe UnitaryGate) oder als kommentierte Operation (siehe AnnotatedOperation). Bei mehreren Standardgattern, wie z. B. RXGate, wenn sich die Leistung eines Gatters anhand eines anderen Standardgatters ausdrücken lässt, das direkt zurückgegeben wird.

Parameter

  • exponent (float) – die Kraft, das Tor anzuheben, um
  • annotated (bool) – Gibt an, ob das Power-Gate als annotierte Operation implementiert werden kann. Bei einigen Standardgattern, wie z. B. RXGate, wird dieses Argument ignoriert, wenn die Leistung eines Gatters als Funktion eines anderen Standardgatters ausgedrückt werden kann.

Rückgabe

Eine Operation, die gate^exponent

Erhöhungen

CircuitError – Wenn das Gatter nicht unitär ist

repeat

repeat(n)

Erstellt eine Anweisung, die nn -mal wiederholt self wird.

Parameter

n (int) – Anzahl der Wiederholungen der Anweisung

Rückgabe

Enthält die Definition.

Rückgabetyp

qiskit.circuit.Instruction

Erhöhungen

CircuitError – Wenn n < 1 ist.

reverse_ops

reverse_ops()

Bei einem zusammengesetzten Befehl kehrt man die Reihenfolge der Teilbefehle um.

Dies geschieht durch rekursive Umkehrung aller Unteranweisungen. Es invertiert kein Gatter.

Rückgabe

eine neue Anweisung mit

Unterbefehle wurden umgekehrt.

Rückgabetyp

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

Weicher Vergleich zwischen den 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 man ein „ ParameterExpression “ ist, wird dies nicht berücksichtigt.

Parameter

other (instruction) – sonstige Anweisungen.

Rückgabe

sind „self“ und „other“ bis auf Parameterausdrücke gleich.

Rückgabetyp

bool

to_matrix

to_matrix()

Gibt ein „ Numpy.array “ für die unitäre Gate-Matrix zurück.

Rückgabe

wenn die Gate-Unterklasse eine Matrixdefinition aufweist.

Rückgabetyp

np.ndarray

Erhöhungen

CircuitError – Wenn eine Gate-Unterklasse diese Methode nicht implementiert, wird beim Aufruf dieser Methode der Basisklasse eine Ausnahme ausgelöst.

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 hierbei um eine neue, eindeutige Instanz, deren Zustand geändert werden kann. Wenn die Instanz bereits veränderbar ist, handelt es sich um eine Deep-Kopie dieser Instanz.

validate_parameter

validate_parameter(parameter)

Gate-Parameter sollten vom Typ „int“, „float“ oder „ ParameterExpression “ sein

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