Skip to main content
IBM Quantum Platform

NLocal

class qiskit.circuit.library.NLocal(num_qubits=None, rotation_blocks=None, entanglement_blocks=None, entanglement=None, reps=1, insert_barriers=False, parameter_prefix='θ', overwrite_block_parameters=True, skip_final_rotation_layer=False, skip_unentangled_qubits=False, initial_state=None, name='nlocal', flatten=None)

GitHub

Basen: BlueprintCircuit

Die n-örtliche Schaltkreisklasse.

Die Struktur der n-lokalen Schaltung besteht aus abwechselnden Rotations- und Verschränkungsschichten. In beiden Schichten wirken parametrisierte Schaltungsblöcke in definierter Weise auf die Schaltung ein. In der Rotationsschicht werden die Blöcke übereinander gestapelt, in der Verflechtungsschicht nach der Strategie entanglement . Die Schaltungsblöcke können beliebige Größen haben (kleiner gleich der Anzahl der Qubits in der Schaltung). Jede Ebene wird reps Mal wiederholt, und standardmäßig wird eine abschließende Rotationsebene angefügt.

Ein Rotationsblock auf 2 Qubits und ein Verschränkungsblock auf 4 Qubits unter Verwendung von 'linear' Verschränkung ergibt zum Beispiel die folgende Schaltung.

┌──────┐ ░ ┌──────┐                      ░ ┌──────┐
┤0     ├─░─┤0     ├──────────────── ... ─░─┤0     ├
│  Rot │ ░ │      │┌──────┐              ░ │  Rot │
┤1     ├─░─┤1     ├┤0     ├──────── ... ─░─┤1     ├
├──────┤ ░ │  Ent ││      │┌──────┐      ░ ├──────┤
┤0     ├─░─┤2     ├┤1     ├┤0     ├ ... ─░─┤0     ├
│  Rot │ ░ │      ││  Ent ││      │      ░ │  Rot │
┤1     ├─░─┤3     ├┤2     ├┤1     ├ ... ─░─┤1     ├
├──────┤ ░ └──────┘│      ││  Ent │      ░ ├──────┤
┤0     ├─░─────────┤3     ├┤2     ├ ... ─░─┤0     ├
│  Rot │ ░         └──────┘│      │      ░ │  Rot │
┤1     ├─░─────────────────┤3     ├ ... ─░─┤1     ├
└──────┘ ░                 └──────┘      ░ └──────┘

|                                 |
+---------------------------------+
       repeated reps times

Falls angegeben, können zwischen den einzelnen Blöcken Barrieren eingefügt werden. Wenn ein Ausgangszustandsobjekt bereitgestellt wird, wird es vor dem NLocal hinzugefügt.

Siehe auch

Die Funktion n_local() funktion konstruiert eine funktional äquivalente Schaltung, aber schneller.

Veraltet seit Version 2.1

Die Klasse qiskit.circuit.library.n_local.n_local.NLocal ist ab Qiskit 2.1 veraltet. Sie wird in Qiskit 3.0 entfernt. Dies gilt auch für NLocal-Unterklassen. Verwenden Sie stattdessen die entsprechende Funktion aus dem Modul qiskit.circuit.library.n_local.

Parameter

  • num_qubits (int | None) – Die Anzahl der Qubits der Schaltung.
  • rotation_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – Die in den Rotationsschichten verwendeten Blöcke. Werden mehrere übergeben, werden diese nacheinander angewendet (wie neue Unterebenen).
  • entanglement_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – Die in den Verschränkungsschichten verwendeten Blöcke. Werden mehrere übergeben, werden diese nacheinander angewendet. Informationen zur Verwendung unterschiedlicher Verschränkungen für die Unterebenen finden Sie unter get_entangler_map().
  • entanglement (list[int] | list[list[int]] | None) – Die Indizes, die angeben, auf welche Qubits die Eingabeblöcke wirken. Wenn None, werden die Verschränkungsblöcke am oberen Ende der Schaltung angebracht.
  • reps (int) – Gibt an, wie oft die Rotations- und Verschränkungsblöcke wiederholt werden.
  • insert_barriers (bool) – Wenn True, werden zwischen den einzelnen Schichten Barrieren eingefügt. Wenn False, werden keine Barrieren eingefügt.
  • parameter_prefix (str) – Das Präfix, das verwendet wird, wenn Standardparameter generiert werden.
  • overwrite_block_parameters (bool |list[list[Parameter]]) – Wenn die Parameter in den hinzugefügten Blöcken überschrieben werden sollen. Wenn False, werden die Parameter in den Blöcken nicht geändert.
  • skip_final_rotation_layer (bool) – Ob dem Stromkreis eine abschließende Rotationsschicht hinzugefügt wird.
  • skip_unentangled_qubits (bool) – Wenn True, wirken die Rotationsgatter nur auf verschränkte Qubits. Wenn False, wirken die Rotationsgatter auf alle Qubits.
  • initial_state (QuantumCircuit | None) – Ein QuantumCircuit Objekt, mit dem ein Anfangszustand beschrieben werden kann, der dem NLocal-Schaltkreis vorangestellt wird.
  • name (str) – Der Name der Rennstrecke.
  • flatten (bool | None) – Setzen Sie dies auf True , um eine flache Schaltung auszugeben, anstatt sie in mehrere Schichten von Gatterobjekten zu verschachteln. Standardmäßig wird der Inhalt des Ausgabeschaltkreises in verschachtelte Objekte eingewickelt, um eine übersichtlichere Darstellung zu erreichen. Wenn Sie diese Schaltung jedoch für etwas anderes als Visualisierung verwenden, wird dringend empfohlen, dieses Flag auf True zu setzen, um einen großen Performance-Overhead für die Parameterbindung zu vermeiden.

Erhöht

  • ValueError - Wenn der Parameter reps kleiner als oder gleich 0 ist.
  • TypeError - Wenn der Parameter reps kein int-Wert ist.

Attribute

entanglement

Holen Sie sich die Verflechtungsstrategie.

Rückgabe

Die Verflechtungsstrategie, siehe get_entangler_map() für weitere Einzelheiten zur Interpretation des Formats.

entanglement_blocks

Die Blöcke in den Verflechtungsschichten.

Rückgabe

Die Blöcke in den Verflechtungsschichten.

flatten

Gibt zurück, ob die Schaltung in verschachtelte Gatter/Anweisungen eingeschlossen oder abgeflacht ist.

initial_state

Rückgabe des Ausgangszustands, der vor dem n-örtlichen Schaltkreis hinzugefügt wird.

Rückgabe

Der Ausgangszustand.

insert_barriers

Ob Barrieren zwischen den Schichten eingefügt werden oder nicht.

Rückgabe

True, wenn zwischen den Schichten Barrieren eingefügt sind, False , wenn nicht.

num_layers

Rückgabe der Anzahl der Schichten in der n-örtlichen Schaltung.

Rückgabe

Die Anzahl der Schichten in der Schaltung.

num_parameters_settable

Die Anzahl der Parameter, die insgesamt auf unterschiedliche Werte eingestellt werden können.

Dies ändert sich nicht, wenn die Parameter gebunden oder gegen gleiche Parameter ausgetauscht werden, und unterscheidet sich daher von num_parameters , das die Anzahl der eindeutigen Parameter objekte zählt, die sich derzeit in der Schaltung befinden.

Rückgabe

Die Anzahl der ursprünglich in der Schaltung verfügbaren Parameter.

Anmerkung

Für diese Menge muss die Schaltung noch nicht gebaut werden.

num_qubits

Gibt die Anzahl der Qubits in dieser Schaltung zurück.

Rückgabe

Die Anzahl der Qubits.

ordered_parameters

Die in der zugrunde liegenden Schaltung verwendeten Parameter.

Dazu gehören auch Float-Werte und Duplikate.

Beispiele

>>> # prepare circuit ...
>>> print(nlocal)
     ┌───────┐┌──────────┐┌──────────┐┌──────────┐
q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├
     └───────┘└──────────┘└──────────┘└──────────┘
>>> nlocal.parameters
{Parameter(θ[1]), Parameter(θ[3])}
>>> nlocal.ordered_parameters
[1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])]

Rückgabe

Die in der Schaltung verwendeten Parameterobjekte.

parameter_bounds

Die Parametergrenzen für die ungebundenen Parameter in der Schaltung.

Rückgabe

Eine Liste von Paaren, die die Grenzen angeben, als (untere, obere). None bedeutet, dass der Parameter in der entsprechenden Richtung nicht begrenzt ist. Wenn None zurückgegeben wird, ist das Problem völlig unbegrenzt.

preferred_init_points

Die Ausgangspunkte für die Parameter. Kann bei der Optimierung als erste Vermutung gespeichert werden.

Rückgabe

Die Anfangswerte für die Parameter oder Keine, wenn keine festgelegt wurden.

reps

Die Anzahl der Wiederholungen von Rotations- und Verschränkungsblock.

Rückgabe

Die Anzahl der Wiederholungen.

rotation_blocks

Die Blöcke in den Rotationsebenen.

Rückgabe

Die Blöcke in den Rotationsebenen.

name

Typ: str

Ein von Menschen lesbarer Name für den Stromkreis.

Beispiel

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

Methoden

add_layer

add_layer(other, entanglement=None, front=False)

GitHub

Anhängen einer weiteren Ebene an das NLocal.

Parameter

  • other (QuantumCircuit |qiskit.circuit.Instruction) – Die zu kombinierende Ebene kann ein weiteres „NLocal“, eine „Instruction“ oder ein „Gate“ oder ein „ QuantumCircuit “ sein.
  • entanglement (list[int] | str |list[list[int]] | None) – Die Verschränkungs- oder Qubit-Indizes.
  • front (bool) – Wenn True, wird other vorne angehängt, sonst hinten.

Rückgabe

selbst, so dass verkettete Kompositionen möglich sind.

Erhöht

TypeError - Wenn der andere nicht kompatibel ist, d.h. keine Anweisung ist und keine Methode to_instruction hat.

Rückgabetyp

NLokal

assign_parameters

assign_parameters(parameters, inplace=False, **kwargs)

GitHub

Weisen Sie dem n-local-Kreis Parameter zu.

Diese Methode unterstützt auch die Übergabe einer Liste anstelle eines Wörterbuchs. Wird eine Liste übergeben, so muss diese die gleiche Länge haben wie die Anzahl der ungebundenen Parameter in der Schaltung. Die Zuweisung der Parameter erfolgt in der Reihenfolge der Parameter in ordered_parameters().

Rückgabe

Eine Kopie der NLocal-Schaltung mit den angegebenen Parametern.

Erhöht

AttributeError - Wenn die Parameter als Liste angegeben werden und nicht mit der Anzahl der Parameter übereinstimmen.

Parameter

Rückgabetyp

QuantumCircuit | Keine

get_entangler_map

get_entangler_map(rep_num, block_num, num_block_qubits)

GitHub

Holen Sie sich die Entangler-Karte für in der Wiederholung rep_num und den Block block_num.

Die Entanglerkarte für den aktuellen Block wird aus dem Wert von self.entanglement abgeleitet. Nachfolgend sind die verschiedenen Fälle aufgeführt, wobei i und j die Wiederholungszahl bzw. die Blocknummer und n die Anzahl der Qubits im Block bezeichnen.

verschränkungsart
verwicklungskarte
None[[0, ..., n - 1]]
str (z. B. 'full')die angegebene Konnektivität auf n den Qubits
List[int][entanglement]
List[List[int]]entanglement
List[List[List[int]]]entanglement[i]
List[List[List[List[int]]]]entanglement[i][j]
List[str]die in entanglement[i]
List[List[str]]die in entanglement[i][j]
Callable[int, str]Entspricht List[str]
Callable[int, List[List[int]]]Entspricht List[List[List[int]]]

Beachten Sie, dass alle Indizes modulo der Länge des Arrays, auf das sie wirken, genommen werden müssen, d.h. es wird kein Out-of-Bounds-Index-Fehler ausgelöst, sondern wir wiederholen vom Anfang der Liste.

Parameter

  • rep_num (int) – Die aktuelle Wiederholung, in der wir uns befinden.
  • block_num (int) – Die Blocknummer innerhalb der Verschränkungsschichten.
  • num_block_qubits (int) – Die Anzahl der Qubits im Block.

Rückgabe

Die Entangler-Karte für den aktuellen Block in der aktuellen Wiederholung.

Erhöht

ValueError - Wenn der Wert von entanglement nicht auf eine entsprechende Entangler-Karte übertragen werden konnte.

Rückgabetyp

Sequence[* Sequence*[ int ]]

get_unentangled_qubits

get_unentangled_qubits()

GitHub

Ermittelt die Indizes der nicht verschränkten Qubits in einer Menge.

Rückgabe

Die unverwirrten Qubits.

Rückgabetyp

set[ int ]

print_settings()

GitHub

Gibt Informationen über die Einstellung zurück.

Rückgabe

Der Klassenname und die Attribute/Parameter der Instanz als str.

Rückgabetyp

str

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