Skip to main content
IBM Quantum Platform

CouplingMap

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

GitHub

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)

GitHub

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)

GitHub

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()

GitHub

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()

GitHub

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 --> 3

alors les composantes connectées de ce graphe sont les sous-graphes :

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

et :

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

Pour 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

liste

distance

distance(physical_qubit1, physical_qubit2)

GitHub

Renvoie la distance non dirigée entre physical_qubit1 et physical_qubit2.

Paramètres

  • physical_qubit1 (int) – Un qubit physique
  • physical_qubit2 (int) – Un autre qubit physique

Retours

La distance non dirigée

Type de retour

int

Augmentations

CouplingError – si les qubits n'existent pas dans l' CouplingMap

draw

draw(method='neato')

GitHub

Dessine la carte de couplage.

Cette fonction appelle la fonction graphviz_draw() du paquet rustworkx pour dessiner l'objet CouplingMap l'objet.

Avertissement

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)

GitHub

Retourne une carte de couplage entièrement connectée sur n qubits.

Type de retour

CouplingMap

from_grid

classmethod from_grid(num_rows, num_columns, bidirectional=True)

GitHub

Retourne une carte de couplage de qubits connectés sur une grille de num_rows x num_columns.

Type de retour

CouplingMap

from_heavy_hex

classmethod from_heavy_hex(distance, bidirectional=True)

GitHub

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 : n=5d22d12n = \frac{5d^2 - 2d - 1}{2}nn est le nombre de qubits et dd 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

CouplingMap

from_heavy_square

classmethod from_heavy_square(distance, bidirectional=True)

GitHub

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 : n=3d22dn = 3d^2 - 2dnn est le nombre de qubits et dd 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

CouplingMap

from_hexagonal_lattice

classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)

GitHub

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

CouplingMap

from_line

classmethod from_line(num_qubits, bidirectional=True)

GitHub

Retourne une carte de couplage de n qubits connectés en ligne.

Type de retour

CouplingMap

from_ring

classmethod from_ring(num_qubits, bidirectional=True)

GitHub

Retourne une carte de couplage de n qubits connectés à chacun de leurs voisins dans un anneau.

Type de retour

CouplingMap

get_edges

get_edges()

GitHub

Obtient la liste des arêtes du graphe de couplage.

Retours

Chaque bord est une paire de qubits physiques.

Type de retour

Tuple (int,int )

is_connected

is_connected()

GitHub

Tester si le graphique est connecté.

Retourne True si connecté, False sinon

largest_connected_component

largest_connected_component()

GitHub

Retourne un ensemble de qubits dans la plus grande composante connectée.

make_symmetric

make_symmetric()

GitHub

Convertir les arêtes unidirectionnelles en arêtes bidirectionnelles.

neighbors

neighbors(physical_qubit)

GitHub

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)

GitHub

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

CouplingMap

Augmentations

CouplingError – La carte de couplage réduite doit être connectée.

shortest_undirected_path

shortest_undirected_path(physical_qubit1, physical_qubit2)

GitHub

Renvoie le plus court chemin non dirigé entre physical_qubit1 et physical_qubit2.

Paramètres

  • physical_qubit1 (int) – Un qubit physique
  • physical_qubit2 (int) – Un autre qubit physique

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.

size

size()

GitHub

Renvoie le nombre de qubits physiques dans ce graphique.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.