Skip to main content
IBM Quantum Platform

CouplingMap

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

GitHub

Basi: object

Grafo diretto che specifica l'accoppiamento fisso.

I nodi corrispondono ai qubit fisici (numeri interi) e gli spigoli diretti corrispondono alle porte CNOT consentite, con la sorgente e la destinazione corrispondenti rispettivamente ai qubit di controllo e di destinazione.

Creare un grafico di accoppiamento. Per impostazione predefinita, l'accoppiamento generato non ha nodi.

Parametri

  • couplinglist (list or None) – Un grafo di accoppiamento iniziale, specificato come una lista di adiacenza contenente accoppiamenti, ad esempio [[0,1], [0,2], [1,2] ]. È necessario che i nodi siano indicizzati in modo contiguo a partire da 0. I nodi mancanti saranno aggiunti come nodi isolati nella mappa di accoppiamento.
  • description (str) – Una stringa per descrivere la mappa di accoppiamento.

Attributi

description

graph

distance_matrix

Restituisce la matrice di distanza per la mappa di accoppiamento.

Per tutti i qubit che non hanno un percorso disponibile tra loro, il valore in questa posizione della matrice di distanza sarà math.inf.

is_symmetric

Verificare se il grafico è simmetrico.

Restituisce True se è simmetrico, False altrimenti

physical_qubits

Restituisce un elenco ordinato di bit_fisici


Metodi

add_edge

add_edge(src, dst)

GitHub

Aggiungere un bordo diretto al grafo di accoppiamento.

src (int): qubit fisico di origine dst (int): qubit fisico di destinazione

add_physical_qubit

add_physical_qubit(physical_qubit)

GitHub

Aggiungere un qubit fisico al grafo di accoppiamento come nodo.

qubit_fisico (int): Un numero intero che rappresenta un qubit fisico.

Aumenti

CouplingError – se si sta tentando di aggiungere un qubit duplicato

compute_distance_matrix

compute_distance_matrix()

GitHub

Calcolo della matrice di distanza completa su coppie di nodi.

La mappa delle distanze self._dist_matrix viene calcolata dal grafico utilizzando la lunghezza del percorso più breve di tutte le coppie. Questo viene normalmente gestito internamente dall'attributo distance_matrix o dal metodo distance() ma può essere richiamato se si accede alla matrice delle distanze al di fuori di questi metodi o se si vuole pre-generarla.

connected_components

connected_components()

GitHub

Separare un CouplingMap in sottografi CouplingMap per ogni componente connessa.

Le componenti connesse di un CouplingMap sono i sottografi che non fanno parte di alcun sottografo più grande. Ad esempio, se si dispone di una mappa di accoppiamento che assomiglia a:

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

allora le componenti connesse di quel grafo sono i sottografi:

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

E:

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

Per un oggetto connesso CouplingMap esiste solo un singolo componente connesso, l'intero CouplingMap.

Questo metodo restituirà un elenco di CouplingMap oggetti, uno per ogni componente connessa in questo CouplingMap. Il payload di dati di ciascun nodo graph nell'attributo conterrà il numero di qubit nel grafico originale. Ciò consentirà di mappare l'indice del qubit in un sottografo componente al qubit originale nel grafico combinato CouplingMap. Ad esempio:

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

stamperà 3 poiché l'indice 0 nel secondo componente è il qubit 3 della cmap originale.

Risultati

Un elenco di oggetti CouplingMap per ogni oggetto collegato

componenti. L'ordine di questo elenco è deterministico ma specifico per l'implementazione e non deve essere considerato come parte dell'API.

Tipo di restituzione

elenco

distance

distance(physical_qubit1, physical_qubit2)

GitHub

Restituisce la distanza indiretta tra physical_qubit1 e physical_qubit2.

Parametri

  • physical_qubit1 (int) – Un qubit fisico
  • physical_qubit2 (int) – Un altro qubit fisico

Risultati

La distanza non direzionata

Tipo di restituzione

int

Aumenti

CouplingError – se i qubit non esistono nell’ CouplingMap

draw

draw(method='neato')

GitHub

Disegna la mappa di accoppiamento.

Questa funzione richiama la funzione graphviz_draw() del pacchetto rustworkx per disegnare l'oggetto CouplingMap oggetto.

Avvertenza

Questa funzione richiamerà lo strumento Graphviz di sistema su un file contenente stringhe modificabili dall'utente (come gli oggetti qubit). Si raccomanda di richiamare questa funzione solo con dati di input attendibili.

Parametri

method (str) – Il metodo di impaginazione da utilizzare. Consulta la documentazione di graphviz_draw() per l'elenco dei metodi supportati

Risultati

Mappa di accoppiamento disegnata.

Tipo di restituzione

PIL.Image

from_full

classmethod from_full(num_qubits, bidirectional=True)

GitHub

Restituisce una mappa di accoppiamento completamente connessa su n qubit.

Tipo di restituzione

CouplingMap

from_grid

classmethod from_grid(num_rows, num_columns, bidirectional=True)

GitHub

Restituisce una mappa di accoppiamento di qubit connessi su una griglia di num_frecce x num_colonne.

Tipo di restituzione

CouplingMap

from_heavy_hex

classmethod from_heavy_hex(distance, bidirectional=True)

GitHub

Restituisce una mappa di accoppiamento del grafo esagonale pesante.

Un grafo a esagoni pesanti è descritto in:

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

Parametri

  • distance (int) – La distanza del codice per il grafico esagonale pesante generato. Il valore della distanza può essere un qualsiasi numero intero dispari positivo. La distanza è correlata al numero di qubit da: n=5d22d12n = \frac{5d^2 - 2d - 1}{2} dove nn è il numero di qubit e dd è il parametro distance .
  • bidirectional (bool) – Se i bordi del grafico di accoppiamento in uscita sono bidirezionali o meno. Per impostazione predefinita è impostato su True

Risultati

Un grafico di accoppiamento esagonale pesante

Tipo di restituzione

CouplingMap

from_heavy_square

classmethod from_heavy_square(distance, bidirectional=True)

GitHub

Restituisce una mappa di accoppiamento del grafo quadrato pesante.

Un grafico quadrato pesante è descritto in:

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

Parametri

  • distance (int) – La distanza del codice per il grafico quadrato pesante generato. Il valore della distanza può essere un qualsiasi numero intero dispari positivo. La distanza è correlata al numero di qubit da: n=3d22dn = 3d^2 - 2d dove nn è il numero di qubit e dd è il parametro distance .
  • bidirectional (bool) – Se i bordi del grafico di accoppiamento in uscita sono bidirezionali o meno. Per impostazione predefinita è impostato su True

Risultati

Un grafico di accoppiamento quadrato pesante

Tipo di restituzione

CouplingMap

from_hexagonal_lattice

classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)

GitHub

Restituisce una mappa di accoppiamento del grafo reticolare esagonale.

Parametri

  • rows (int) – Il numero di righe con cui generare il grafico.
  • cols (int) – Il numero di colonne con cui generare il grafico.
  • bidirectional (bool) – Se i bordi del grafico di accoppiamento in uscita sono bidirezionali o meno. Per impostazione predefinita è impostato su True

Risultati

Un grafo di accoppiamento reticolare esagonale

Tipo di restituzione

CouplingMap

from_line

classmethod from_line(num_qubits, bidirectional=True)

GitHub

Restituisce una mappa di accoppiamento di n qubit collegati in una linea.

Tipo di restituzione

CouplingMap

from_ring

classmethod from_ring(num_qubits, bidirectional=True)

GitHub

Restituisce una mappa di accoppiamento di n qubit connessi a ciascuno dei loro vicini in un anello.

Tipo di restituzione

CouplingMap

get_edges

get_edges()

GitHub

Ottiene l'elenco dei bordi del grafo di accoppiamento.

Risultati

Ogni bordo è una coppia di qubit fisici.

Tipo di restituzione

Tupla (int,int )

is_connected

is_connected()

GitHub

Verifica se il grafico è connesso.

Restituisce True se è connesso, False altrimenti

largest_connected_component

largest_connected_component()

GitHub

Restituisce un insieme di qubit nella componente connessa più grande.

make_symmetric

make_symmetric()

GitHub

Convertire i bordi unidirezionali in bidirezionali.

neighbors

neighbors(physical_qubit)

GitHub

Restituisce i vicini più prossimi di un qubit fisico.

La direzionalità è importante, cioè un vicino deve essere raggiungibile percorrendo un hop in direzione di un bordo.

reduce

reduce(mapping, check_if_connected=True)

GitHub

Restituisce una mappa di accoppiamento ridotta che corrisponde al sottografo di qubit selezionato nella mappatura.

Parametri

  • mapping (list) – Una mappatura dei qubit ridotti ai qubit del dispositivo.
  • check_if_connected (bool) – se Vero, verifica che la mappa di accoppiamento ridotta sia connessa.

Risultati

Una mappa di accoppiamento ridotta per i qubit selezionati.

Tipo di restituzione

CouplingMap

Aumenti

CouplingError – È necessario collegare la mappa di accoppiamento ridotta.

shortest_undirected_path

shortest_undirected_path(physical_qubit1, physical_qubit2)

GitHub

Restituisce il percorso non diretto più breve tra physical_qubit1 e physical_qubit2.

Parametri

  • physical_qubit1 (int) – Un qubit fisico
  • physical_qubit2 (int) – Un altro qubit fisico

Risultati

Il percorso non diretto più breve

Tipo di restituzione

Elenco

Aumenti

CouplingError – Quando non esiste un percorso tra physical_qubit1 e physical_qubit2.

size

size()

GitHub

Restituisce il numero di qubit fisici in questo grafico.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.