CouplingMap
class qiskit.transpiler.CouplingMap(couplinglist=None, description=None)
Bases : object
Graphique orienté spécifiant le couplage fixe.
Les nœuds correspondent aux qubits physiques (entiers) et les arêtes dirigées correspondent aux portes CNOT autorisées, la source et la destination correspondant respectivement aux qubits de contrôle et aux qubits cibles.
Créer un graphique de couplage. Par défaut, le couplage généré n'a pas de nœuds.
Paramètres
- couplinglist (list or None) – Un graphe de couplage initial, spécifié sous la forme d'une liste d'adjacences contenant des couplages, par exemple [[0,1], [0,2], [1,2] ]. Les nœuds doivent être indexés de manière contiguë en commençant par 0. Les nœuds manquants seront ajoutés en tant que nœuds isolés dans la carte de couplage.
- description (str) – Chaîne décrivant la carte de couplage.
Attributs
description
graph
distance_matrix
Renvoie la matrice de distance pour la carte de couplage.
Pour tous les qubits entre lesquels il n'existe pas de chemin, la valeur de cette position de la matrice de distance sera math.inf.
is_symmetric
Testez si le graphique est symétrique.
Retourne True si symétrique, False sinon
physical_qubits
Renvoie une liste triée de qubits_physiques
Méthodes
add_edge
add_edge(src, dst)
Ajouter une arête dirigée au graphe de couplage.
src (int) : qubit physique source dst (int) : qubit physique destination
add_physical_qubit
add_physical_qubit(physical_qubit)
Ajouter un qubit physique au graphe de couplage en tant que nœud.
qubit_physique (int) : Un nombre entier représentant un qubit physique.
Augmentations
CouplingError – si l'on tente d'ajouter un qubit en double
compute_distance_matrix
compute_distance_matrix()
Calculer la matrice de distance complète sur les paires de nœuds.
La carte des distances self._dist_matrix est calculée à partir du graphe en utilisant la longueur des paires de chemins les plus courts. Ceci est normalement géré en interne par l'attribut distance_matrix ou la méthode distance() mais peut être appelée si vous accédez à la matrice de distance en dehors de ces méthodes ou si vous souhaitez la pré-générer.
connected_components
connected_components()
Séparer un CouplingMap en sous-graphes CouplingMap pour chaque composante connectée.
Les composantes connectées d'un CouplingMap sont les sous-graphes qui ne font partie d'aucun sous-graphe plus grand. Par exemple, si vous avez une carte de couplage qui se présente comme suit :
0 --> 1 4 --> 5 ---> 6 --> 7
| |
| |
V V
2 --> 3alors les composantes connectées de ce graphe sont les sous-graphes :
0 --> 1
| |
| |
V V
2 --> 3et :
4 --> 5 ---> 6 --> 7Pour un objet connecté CouplingMap il n'y a qu'une seule composante connectée, l'ensemble de l'objet CouplingMap.
Cette méthode renvoie une liste CouplingMap d'objets, un pour chaque composante connexe de cet ensemble CouplingMap. La charge utile de données de chaque nœud dans graph l'attribut contiendra le numéro de qubit dans le graphe d'origine. Cela permettra de mettre en correspondance l'indice du qubit dans un sous-graphe composant avec le qubit d'origine dans le graphe combiné CouplingMap. Par exemple :
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])imprimera 3 car l'index 0 dans la deuxième composante est le qubit 3 dans la carte originale.
Retours
Une liste d'objets CouplingMap pour chaque objet connecté
des composants. L'ordre de cette liste est déterministe mais spécifique à l'implémentation et ne doit pas être considéré comme faisant partie de l'API.
Type de retour
distance
distance(physical_qubit1, physical_qubit2)
Renvoie la distance non dirigée entre physical_qubit1 et physical_qubit2.
Paramètres
Retours
La distance non dirigée
Type de retour
Augmentations
CouplingError – si les qubits n'existent pas dans l' CouplingMap
draw
draw(method='neato')
Dessine la carte de couplage.
Cette fonction appelle la fonction graphviz_draw() du paquet rustworkx pour dessiner l'objet CouplingMap l'objet.
Cette fonction lancera l'outil Graphviz du système sur un fichier contenant des chaînes de caractères définies par l'utilisateur (telles que des objets qubit). Il est recommandé de n'appeler cette fonction qu'avec des données fiables.
Paramètres
method (str) – La méthode de mise en page à utiliser. Consultez la documentation de graphviz_draw() pour obtenir la liste des méthodes prises en charge
Retours
Carte de couplage dessinée.
Type de retour
PIL.Image
from_full
classmethod from_full(num_qubits, bidirectional=True)
Retourne une carte de couplage entièrement connectée sur n qubits.
Type de retour
from_grid
classmethod from_grid(num_rows, num_columns, bidirectional=True)
Retourne une carte de couplage de qubits connectés sur une grille de num_rows x num_columns.
Type de retour
from_heavy_hex
classmethod from_heavy_hex(distance, bidirectional=True)
Renvoie une carte de couplage de graphes hexagonaux lourds.
Un graphe hexagonal lourd est décrit dans :
https://journals.aps.org/prx/abstract/10.1103/PhysRevX.10.011022
Paramètres
- distance (int) – La distance du code pour le graphique hexagonal lourd généré. La valeur de la distance peut être un nombre entier positif impair. La distance est liée au nombre de qubits par : où est le nombre de qubits et est le paramètre
distance. - bidirectional (bool) – Si les arêtes du graphe de couplage de sortie sont bidirectionnelles ou non. Par défaut, cette valeur est fixée à
True
Retours
Un graphe d'accouplement hexagonal lourd
Type de retour
from_heavy_square
classmethod from_heavy_square(distance, bidirectional=True)
Retourne une carte de couplage de graphes carrés lourds.
Un graphique carré lourd est décrit dans :
https://journals.aps.org/prx/abstract/10.1103/PhysRevX.10.011022
Paramètres
- distance (int) – La distance de code pour le graphique carré lourd généré. La valeur de la distance peut être un nombre entier positif impair. La distance est liée au nombre de qubits par : où est le nombre de qubits et est le paramètre
distance. - bidirectional (bool) – Si les arêtes du graphe de couplage de sortie sont bidirectionnelles ou non. Par défaut, cette valeur est fixée à
True
Retours
Un graphe de couplage carré lourd
Type de retour
from_hexagonal_lattice
classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)
Renvoie une carte de couplage de graphes de treillis hexagonaux.
Paramètres
- rows (int) – Le nombre de lignes pour générer le graphique.
- cols (int) – Le nombre de colonnes avec lesquelles le graphique doit être généré.
- bidirectional (bool) – Si les arêtes du graphe de couplage de sortie sont bidirectionnelles ou non. Par défaut, cette valeur est fixée à
True
Retours
Un graphe de couplage de treillis hexagonal
Type de retour
from_line
classmethod from_line(num_qubits, bidirectional=True)
Retourne une carte de couplage de n qubits connectés en ligne.
Type de retour
from_ring
classmethod from_ring(num_qubits, bidirectional=True)
Retourne une carte de couplage de n qubits connectés à chacun de leurs voisins dans un anneau.
Type de retour
get_edges
get_edges()
Obtient la liste des arêtes du graphe de couplage.
Retours
Chaque bord est une paire de qubits physiques.
Type de retour
is_connected
largest_connected_component
largest_connected_component()
Retourne un ensemble de qubits dans la plus grande composante connectée.
make_symmetric
neighbors
neighbors(physical_qubit)
Renvoie les plus proches voisins d'un qubit physique.
La directionnalité est importante, c'est-à-dire qu'un voisin doit pouvoir être atteint en faisant un saut dans la direction d'une arête.
reduce
reduce(mapping, check_if_connected=True)
Renvoie une carte de couplage réduite qui correspond au sous-graphe de qubits sélectionné dans la cartographie.
Paramètres
- mapping (list) – Une correspondance entre les qubits réduits et les qubits de l'appareil.
- check_if_connected (bool) – si True, vérifie que la carte de couplage réduite est connectée.
Retours
Une carte de couplage réduite pour les qubits sélectionnés.
Type de retour
Augmentations
CouplingError – La carte de couplage réduite doit être connectée.
shortest_undirected_path
shortest_undirected_path(physical_qubit1, physical_qubit2)
Renvoie le plus court chemin non dirigé entre physical_qubit1 et physical_qubit2.
Paramètres
Retours
Le plus court chemin non dirigé
Type de retour
Liste
Augmentations
CouplingError – Lorsqu’il n’y a pas de lien entre physical_qubit1 et physical_qubit2.