CouplingMap
class qiskit.transpiler.CouplingMap(couplinglist=None, description=None)
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)
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)
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()
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()
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 --> 3allora le componenti connesse di quel grafo sono i sottografi:
0 --> 1
| |
| |
V V
2 --> 3E:
4 --> 5 ---> 6 --> 7Per 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
distance
distance(physical_qubit1, physical_qubit2)
Restituisce la distanza indiretta tra physical_qubit1 e physical_qubit2.
Parametri
Risultati
La distanza non direzionata
Tipo di restituzione
Aumenti
CouplingError – se i qubit non esistono nell’ CouplingMap
draw
draw(method='neato')
Disegna la mappa di accoppiamento.
Questa funzione richiama la funzione graphviz_draw() del pacchetto rustworkx per disegnare l'oggetto CouplingMap oggetto.
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)
Restituisce una mappa di accoppiamento completamente connessa su n qubit.
Tipo di restituzione
from_grid
classmethod from_grid(num_rows, num_columns, bidirectional=True)
Restituisce una mappa di accoppiamento di qubit connessi su una griglia di num_frecce x num_colonne.
Tipo di restituzione
from_heavy_hex
classmethod from_heavy_hex(distance, bidirectional=True)
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: dove è il numero di qubit e è 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
from_heavy_square
classmethod from_heavy_square(distance, bidirectional=True)
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: dove è il numero di qubit e è 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
from_hexagonal_lattice
classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)
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
from_line
classmethod from_line(num_qubits, bidirectional=True)
Restituisce una mappa di accoppiamento di n qubit collegati in una linea.
Tipo di restituzione
from_ring
classmethod from_ring(num_qubits, bidirectional=True)
Restituisce una mappa di accoppiamento di n qubit connessi a ciascuno dei loro vicini in un anello.
Tipo di restituzione
get_edges
get_edges()
Ottiene l'elenco dei bordi del grafo di accoppiamento.
Risultati
Ogni bordo è una coppia di qubit fisici.
Tipo di restituzione
is_connected
is_connected()
Verifica se il grafico è connesso.
Restituisce True se è connesso, False altrimenti
largest_connected_component
largest_connected_component()
Restituisce un insieme di qubit nella componente connessa più grande.
make_symmetric
neighbors
neighbors(physical_qubit)
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)
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
Aumenti
CouplingError – È necessario collegare la mappa di accoppiamento ridotta.
shortest_undirected_path
shortest_undirected_path(physical_qubit1, physical_qubit2)
Restituisce il percorso non diretto più breve tra physical_qubit1 e physical_qubit2.
Parametri
Risultati
Il percorso non diretto più breve
Tipo di restituzione
Elenco
Aumenti
CouplingError – Quando non esiste un percorso tra physical_qubit1 e physical_qubit2.