Layout
class qiskit.transpiler.Layout(input_dict=None)
Basi: object
Dettatura a due vie per rappresentare un Layout.
costruire un Layout da un dizionario biiettivo, mappando qubit virtuali a qubit fisici
Metodi
add
add(virtual_bit, physical_bit=None)
Aggiunge un elemento di mappa tra bit e physical_bit. Se physical_bit non è definito, il bit sarà mappato su un nuovo bit fisico.
Parametri
add_register
add_register(reg)
Aggiunge alla fine physical_qubits che mappa ogni bit della reg.
Parametri
reg (Register) – Un registro di (qu)bit. Ad esempio, QuantumRegister(3, ‘qr’).
combine_into_edge_map
combine_into_edge_map(another_layout)
Combina self e un altro layout in una "mappa dei bordi".
Ad esempio:
self another_layout resulting edge map
qr_1 -> 0 0 <- q_2 qr_1 -> q_2
qr_2 -> 2 2 <- q_1 qr_2 -> q_1
qr_3 -> 3 3 <- q_0 qr_3 -> q_0La mappa dei bordi viene utilizzata per comporre i dag tramite, ad esempio, compose.
Parametri
another_layout (Layout) – L'altro layout da combinare.
Risultati
Una "mappa dei bordi".
Tipo di restituzione
Aumenti
LayoutError – another_layout può essere più grande di se stesso, ma non più piccolo. Altrimenti, aumenti.
compose
compose(other, qubits)
Comporre questo layout con un altro layout.
Se questo layout rappresenta una mappatura dai bit P alle posizioni dei bit Q e l'altro layout rappresenta una mappatura dai bit Q alle posizioni dei bit R, allora il layout composto rappresenta una mappatura dai bit P alle posizioni dei bit R.
Parametri
- other (Layout) – L'esistente
Layoutper comporre questoLayoutcon. - qubits (list[Qubit]) – Un insieme di
Qubitoggetti su cuiotherè definita la funzione, utilizzato per stabilire la corrispondenza tra le posizioni deiotherqubit e i qubit effettivi.
Risultati
Un nuovo oggetto layout che rappresenta questo layout composto con il layout other .
Tipo di restituzione
copy
from_dict
from_dict(input_dict)
Popola un layout da un dizionario.
Il dizionario deve essere una mappatura biunivoca tra qubit virtuali (tuple) e qubit fisici (int).
Parametri
input_dict (dict) –
ad es.:
{(QuantumRegister(3, 'qr'), 0): 0,
(QuantumRegister(3, 'qr'), 1): 1,
(QuantumRegister(3, 'qr'), 2): 2}
Can be written more concisely as follows:
* virtual to physical::
{qr[0]: 0,
qr[1]: 1,
qr[2]: 2}
* physical to virtual::
{0: qr[0],
1: qr[1],
2: qr[2]}from_intlist
static from_intlist(int_list, *qregs)
Converte un elenco di interi in un Layout che mappa i qubit virtuali (indice dell'elenco) in qubit fisici (i valori dell'elenco).
Parametri
- int_list (list) – Un elenco di numeri interi.
- *qregs ( QuantumRegisters ) - I registri quantici a cui applicare il layout.
Risultati
L'oggetto Layout corrispondente.
Tipo di restituzione
Aumenti
LayoutError – Layout di immissione non valido.
from_qubit_list
static from_qubit_list(qubit_list, *qregs)
Popola un layout da un elenco contenente qubit virtuali, Qubit o Nessuno.
Parametri
- qubit_list (list) – e. g.: [ [qr0], Nessuno, [qr2], [qr3] ]
- *qregs ( QuantumRegisters ) - I registri quantici a cui applicare il layout.
Risultati
l'oggetto Layout corrispondente
Tipo di restituzione
Aumenti
LayoutError – Se gli elementi non sono né Qubit né None
generate_trivial_layout
static generate_trivial_layout(*regs)
Crea un Layout banale ("uno a uno") con i registri e i qubit in regs.
Parametri
*regs* (registri, qubit* ) - registri e qubit da includere nel layout.
Risultati
Un layout con tutte le regole nell'ordine dato.
Tipo di restituzione
get_physical_bits
get_physical_bits()
Restituisce il dizionario in cui le chiavi sono (qu)bit fisici e i valori sono (qu)bit virtuali.
get_registers
get_registers()
Restituisce i registri nel layout [QuantumRegister(2, ‘qr0’ ), QuantumRegister(3, ‘qr1’ )] :returns: Un set di registri nel layout :rtype: Set
get_virtual_bits
get_virtual_bits()
Restituisce il dizionario in cui le chiavi sono (qu)bit virtuali e i valori sono (qu)bit fisici.
inverse
inverse(source_qubits, target_qubits)
Trova l'inverso di questo layout.
Questo è possibile quando la disposizione è una mappatura biunivoca, ma i qubit di ingresso e di uscita possono essere diversi (in particolare, questa disposizione può essere la mappatura dai qubit virtuali estesi con le cancellature ai qubit fisici). Così, se questo layout rappresenta una mappatura dai bit P alle posizioni dei bit Q, il layout inverso rappresenta una mappatura dai bit Q alle posizioni dei bit P.
Parametri
- source_qubits (list[Qubit]) – Un elenco di
Qubitoggetti che rappresentano il dominio del layout. - target_qubits (list[Qubit]) – Un elenco di
Qubitoggetti che rappresentano l'immagine del layout.
Risultati
Un nuovo oggetto di layout che rappresenta l'inverso di questo layout.
order_based_on_type
static order_based_on_type(value1, value2)
decide quale sia fisico/virtuale in base al tipo. Restituzione (virtuale, fisica)
reorder_bits
reorder_bits(bits)
Dato un elenco ordinato di bit, riordinarli secondo questa disposizione.
L'elenco dei bit deve corrispondere esattamente ai bit virtuali di questo layout.
Parametri
bits (list[Bit]) – gli elementi da riordinare.
Risultati
bit ordinati.
Tipo di restituzione
Elenco
swap
swap(left, right)
Scambia la mappa tra destra e sinistra.
Parametri
- left (tuple orint) – Oggetto da scambiare con la destra.
- right (tuple orint) – Oggetto da scambiare con la sinistra.
Aumenti
LayoutError – Se sinistra e destra non sono dello stesso tipo.
to_permutation
to_permutation(qubits)
Crea una permutazione corrispondente a questo layout.
Questo è possibile quando il layout è una mappatura bijettiva con gli stessi qubit di origine e di destinazione (ad esempio, un "final_layout" corrisponde a una permutazione dei qubit del circuito fisico). Se questa disposizione è una mappatura dai qubit alle loro nuove posizioni, la permutazione risultante descrive quali qubit occupano le posizioni 0, 1, 2, ecc. dopo l'applicazione della permutazione.
Ad esempio, supponiamo che l'elenco dei qubit sia [qr_0, qr_1, qr_2], e che la disposizione mappi qr_0 a 2, qr_1 a 0, e qr_2 a 1. In termini di posizioni in qubits, questo mappa 0 a 2, 1 a 0 e 2 a 1, con la permutazione corrispondente a [1, 2, 0].
Parametri