CouplingMap
class qiskit.transpiler.CouplingMap(couplinglist=None, description=None)
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)
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)
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()
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()
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 --> 3dann sind die zusammenhängenden Komponenten dieses Graphen die Untergraphen:
0 --> 1
| |
| |
V V
2 --> 3Und:
4 --> 5 ---> 6 --> 7Fü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
distance
distance(physical_qubit1, physical_qubit2)
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
Erhöht
CouplingError – wenn die Qubits nicht im „ CouplingMap “ existieren
draw
draw(method='neato')
Zeichnet die Kopplungskarte.
Diese Funktion ruft die Funktion graphviz_draw() funktion aus dem Paket rustworkx auf, um das CouplingMap objekt zu zeichnen.
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)
Rückgabe einer vollständig verbundenen Kopplungskarte auf n Qubits.
Rückgabetyp
from_grid
classmethod from_grid(num_rows, num_columns, bidirectional=True)
Rückgabe einer Kopplungskarte von Qubits, die in einem Gitter von num_rows x num_columns verbunden sind.
Rückgabetyp
from_heavy_hex
classmethod from_heavy_hex(distance, bidirectional=True)
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: , wobei die Anzahl der Qubits und der Parameter
distanceist. - 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
from_heavy_square
classmethod from_heavy_square(distance, bidirectional=True)
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: , wobei die Anzahl der Qubits und der Parameter
distanceist. - 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
from_hexagonal_lattice
classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)
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
from_line
classmethod from_line(num_qubits, bidirectional=True)
Gibt eine Kopplungskarte von n Qubits zurück, die in einer Linie verbunden sind.
Rückgabetyp
from_ring
classmethod from_ring(num_qubits, bidirectional=True)
Gibt eine Kopplungskarte von n Qubits zurück, die mit jedem ihrer Nachbarn in einem Ring verbunden sind.
Rückgabetyp
get_edges
get_edges()
Ruft die Liste der Kanten im Kopplungsgraphen ab.
Rückgabe
Jede Kante ist ein Paar physikalischer Qubits.
Rückgabetyp
is_connected
is_connected()
Testen Sie, ob der Graph verbunden ist.
Gibt True zurück, wenn verbunden, sonst False
largest_connected_component
largest_connected_component()
Rückgabe einer Menge von Qubits in der größten zusammenhängenden Komponente.
make_symmetric
neighbors
neighbors(physical_qubit)
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)
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
Erhöht
CouplingError – Die reduzierte Kopplungskarte muss angeschlossen sein.
shortest_undirected_path
shortest_undirected_path(physical_qubit1, physical_qubit2)
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.