Skip to main content
IBM Quantum Platform

CouplingMap

class qiskit.transpiler.CouplingMap(couplinglist=None, description=None)

GitHub

Basen: object

Gerichtetes Diagramm, das die feste Kopplung angibt.

Die Knoten entsprechen den physikalischen Qubits (ganze Zahlen) und die gerichteten Kanten entsprechen den zulässigen CNOT-Gattern, wobei Quelle und Ziel den Kontroll- bzw. Ziel-Qubits entsprechen.

Erstellen Sie ein Kopplungsdiagramm. Standardmäßig hat die erzeugte Kopplung keine Knotenpunkte.

Parameter

  • couplinglist (list or None) – Ein anfänglicher Kopplungsgraph, spezifiziert als eine Adjazenzliste, die Kopplungen enthält, z. B. [[0,1], [0,2], [1,2] ]. Es ist erforderlich, dass die Knoten beginnend bei 0 zusammenhängend indiziert sind. Fehlende Knoten werden als isolierte Knoten in die Kopplungskarte eingefügt.
  • description (str) – Eine Zeichenkette zur Beschreibung der Kopplungskarte.

Attribute

description

graph

distance_matrix

Rückgabe der Distanzmatrix für die Kopplungskarte.

Für alle Qubits, zwischen denen kein Pfad verfügbar ist, wird der Wert an dieser Stelle der Abstandsmatrix math.inf sein.

is_symmetric

Prüfen Sie, ob das Diagramm symmetrisch ist.

Rückgabe True, wenn symmetrisch, sonst False

physical_qubits

Liefert eine sortierte Liste von physischen Qubits


Methoden

add_edge

add_edge(src, dst)

GitHub

Hinzufügen einer gerichteten Kante zum Kopplungsgraphen.

src (int): physikalisches Quell-Qubit dst (int): physikalisches Ziel-Qubit

add_physical_qubit

add_physical_qubit(physical_qubit)

GitHub

Fügen Sie ein physikalisches Qubit als Knoten in den Kopplungsgraphen ein.

physical_qubit (int): Eine ganze Zahl, die ein physikalisches Qubit darstellt.

Erhöht

CouplingError – wenn versucht wird, ein doppeltes Qubit hinzuzufügen

compute_distance_matrix

compute_distance_matrix()

GitHub

Berechnen Sie die vollständige Abstandsmatrix für Knotenpaare.

Die Entfernungskarte self._dist_matrix wird aus dem Graphen unter Verwendung aller Paare und der kürzesten Pfadlänge berechnet. Dies wird normalerweise intern durch das distance_matrix attribut oder der distance() methode gehandhabt, kann aber aufgerufen werden, wenn man auf die Abstandsmatrix außerhalb dieser Methoden zugreift oder sie vorab generieren möchte.

connected_components

connected_components()

GitHub

Trennen Sie einen CouplingMap in Teilgraphen CouplingMap für jede verbundene Komponente.

Die verbundenen Komponenten von a CouplingMap sind die Untergraphen, die nicht Teil eines größeren Untergraphen sind. Wenn Sie zum Beispiel eine Kopplungskarte hätten, die wie folgt aussieht:

0 --> 1   4 --> 5 ---> 6 --> 7
|     |
|     |
V     V
2 --> 3

dann sind die zusammenhängenden Komponenten dieses Graphen die Untergraphen:

0 --> 1
|     |
|     |
V     V
2 --> 3

Und:

4 --> 5 ---> 6 --> 7

Für ein verbundenes CouplingMap objekt gibt es nur eine einzige zusammenhängende Komponente, die gesamte CouplingMap.

Diese Methode gibt eine Liste von CouplingMap Objekten zurück, eines für jede zusammenhängende Komponente in diesem CouplingMap. Die Datennutzlast jedes Knotens im Attribut graph enthält die Qubit-Nummer im ursprünglichen Graphen. Dadurch wird es möglich, den Qubit-Index in einem Teilgraphen auf das ursprüngliche Qubit im kombinierten Graphen CouplingMapabzubilden. Zum Beispiel:

from qiskit.transpiler import CouplingMap

cmap = CouplingMap([[0, 1], [1, 2], [2, 0], [3, 4], [4, 5], [5, 3]])
component_cmaps = cmap.connected_components()
print(component_cmaps[1].graph[0])

gibt 3 aus, da der Index 0 in der zweiten Komponente das Qubit 3 in der ursprünglichen cmap ist.

Rückgabe

Eine Liste von CouplingMap Objekten für jedes verbundene

-Komponenten gestellt. Die Reihenfolge dieser Liste ist deterministisch, aber implementierungsspezifisch und sollte nicht als Teil der API verwendet werden.

Rückgabetyp

Liste

distance

distance(physical_qubit1, physical_qubit2)

GitHub

Gibt den ungerichteten Abstand zwischen physical_qubit1 und physical_qubit2 zurück.

Parameter

  • physical_qubit1 (int) – Ein physikalisches Qubit
  • physical_qubit2 (int) – Ein weiteres physikalisches Qubit

Rückgabe

Die ungerichtete Entfernung

Rückgabetyp

int

Erhöht

CouplingError – wenn die Qubits nicht im „ CouplingMap “ existieren

draw

draw(method='neato')

GitHub

Zeichnet die Kopplungskarte.

Diese Funktion ruft die Funktion graphviz_draw() funktion aus dem Paket rustworkx auf, um das CouplingMap objekt zu zeichnen.

Warnung

Diese Funktion ruft das systemeigene Graphviz-Tool für eine Datei auf, die vom Benutzer steuerbare Zeichenfolgen (wie beispielsweise Qubit-Objekte) enthält. Es wird empfohlen, diese Funktion nur bei vertrauenswürdigen Eingaben aufzurufen.

Parameter

method (str) – Die zu verwendende Layout-Methode. Eine Liste der unterstützten Methoden finden Sie in der Dokumentation graphviz_draw() zu

Rückgabe

Gezeichnete Kupplungskarte.

Rückgabetyp

PIL.Image

from_full

classmethod from_full(num_qubits, bidirectional=True)

GitHub

Rückgabe einer vollständig verbundenen Kopplungskarte auf n Qubits.

Rückgabetyp

CouplingMap

from_grid

classmethod from_grid(num_rows, num_columns, bidirectional=True)

GitHub

Rückgabe einer Kopplungskarte von Qubits, die in einem Gitter von num_rows x num_columns verbunden sind.

Rückgabetyp

CouplingMap

from_heavy_hex

classmethod from_heavy_hex(distance, bidirectional=True)

GitHub

Rückgabe einer schweren Hexagon-Graph-Kopplungskarte.

Ein schwerer Hexagon-Graph wird beschrieben in:

https://journals.aps.org/prx/abstract/10.1103/PhysRevX.10.011022

Parameter

  • distance (int) – Der Codeabstand für das erzeugte schwere Hexdiagramm. Der Wert für den Abstand kann eine beliebige ungerade positive ganze Zahl sein. Der Abstand bezieht sich auf die Anzahl der Qubits durch: n=5d2−2d−12n = \frac{5d^2 - 2d - 1}{2}, wobei nn die Anzahl der Qubits und dd der Parameter distance ist.
  • bidirectional (bool) – Ob die Kanten im Ausgangskopplungsgraphen bidirektional sind oder nicht. Standardmäßig ist dies eingestellt auf True

Rückgabe

Ein schweres Sechskant-Kupplungsdiagramm

Rückgabetyp

CouplingMap

from_heavy_square

classmethod from_heavy_square(distance, bidirectional=True)

GitHub

Rückgabe einer schweren quadratischen Graphenkopplungskarte.

Ein schwerer quadratischer Graph wird in beschrieben:

https://journals.aps.org/prx/abstract/10.1103/PhysRevX.10.011022

Parameter

  • distance (int) – Der Codeabstand für den erzeugten schweren quadratischen Graphen. Der Wert für den Abstand kann eine beliebige ungerade positive ganze Zahl sein. Der Abstand bezieht sich auf die Anzahl der Qubits durch: n=3d2−2dn = 3d^2 - 2d, wobei nn die Anzahl der Qubits und dd der Parameter distance ist.
  • bidirectional (bool) – Ob die Kanten im Ausgangskopplungsgraphen bidirektional sind oder nicht. Standardmäßig ist dies eingestellt auf True

Rückgabe

Ein schwerer quadratischer Kupplungsgraph

Rückgabetyp

CouplingMap

from_hexagonal_lattice

classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)

GitHub

Rückgabe einer Kopplungskarte eines hexagonalen Gittergraphen.

Parameter

  • rows (int) – Die Anzahl der Zeilen, mit denen das Diagramm erstellt werden soll.
  • cols (int) – Die Anzahl der Spalten, mit denen das Diagramm erstellt werden soll.
  • bidirectional (bool) – Ob die Kanten im Ausgangskopplungsgraphen bidirektional sind oder nicht. Standardmäßig ist dies eingestellt auf True

Rückgabe

Ein hexagonaler Gitterkopplungsgraph

Rückgabetyp

CouplingMap

from_line

classmethod from_line(num_qubits, bidirectional=True)

GitHub

Gibt eine Kopplungskarte von n Qubits zurück, die in einer Linie verbunden sind.

Rückgabetyp

CouplingMap

from_ring

classmethod from_ring(num_qubits, bidirectional=True)

GitHub

Gibt eine Kopplungskarte von n Qubits zurück, die mit jedem ihrer Nachbarn in einem Ring verbunden sind.

Rückgabetyp

CouplingMap

get_edges

get_edges()

GitHub

Ruft die Liste der Kanten im Kopplungsgraphen ab.

Rückgabe

Jede Kante ist ein Paar physikalischer Qubits.

Rückgabetyp

Tupel (int,int )

is_connected

is_connected()

GitHub

Testen Sie, ob der Graph verbunden ist.

Gibt True zurück, wenn verbunden, sonst False

largest_connected_component

largest_connected_component()

GitHub

Rückgabe einer Menge von Qubits in der größten zusammenhängenden Komponente.

make_symmetric

make_symmetric()

GitHub

Umwandlung von unidirektionalen in bidirektionale Kanten.

neighbors

neighbors(physical_qubit)

GitHub

Gibt die nächsten Nachbarn eines physischen Qubits zurück.

Die Richtungsabhängigkeit spielt eine Rolle, d. h. ein Nachbar muss über einen Schritt in Richtung einer Kante erreichbar sein.

reduce

reduce(mapping, check_if_connected=True)

GitHub

Gibt eine reduzierte Kopplungskarte zurück, die dem in der Abbildung ausgewählten Untergraphen von Qubits entspricht.

Parameter

  • mapping (list) – Eine Abbildung von reduzierten Qubits auf Geräte-Qubits.
  • check_if_connected (bool) – wenn True, prüft, ob die reduzierte Kopplungskarte verbunden ist.

Rückgabe

Eine reduzierte coupling_map für die ausgewählten Qubits.

Rückgabetyp

CouplingMap

Erhöht

CouplingError – Die reduzierte Kopplungskarte muss angeschlossen sein.

shortest_undirected_path

shortest_undirected_path(physical_qubit1, physical_qubit2)

GitHub

Gibt den kürzesten ungerichteten Pfad zwischen physical_qubit1 und physical_qubit2 zurück.

Parameter

  • physical_qubit1 (int) – Ein physikalisches Qubit
  • physical_qubit2 (int) – Ein weiteres physikalisches Qubit

Rückgabe

Der kürzeste ungerichtete Weg

Rückgabetyp

Liste

Erhöht

CouplingError – Wenn zwischen physical_qubit1 und physical_qubit2 kein Pfad vorhanden ist.

size

size()

GitHub

Gibt die Anzahl der physischen Qubits in diesem Graphen zurück.

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