Decomposizione quasi-probabilistica (QPD)
qiskit_addon_cutting.qpd
Principali funzionalità di decomposizione della quasiprobabilità.
QPDBasis | Base in cui scomporre un'operazione. |
BaseQPDGate | Classe base per un gate da decomporre utilizzando la decomposizione di quasiprobabilità. |
SingleQubitQPDGate | Porta a singolo qubit da decomporre utilizzando la decomposizione di quasiprobabilità. |
TwoQubitQPDGate | Porta a due qubit da decomporre utilizzando la decomposizione di quasiprobabilità. |
WeightType
class WeightType(value)
Basi: Enum
Tipo di peso associato a un campione QPD.
EXACT
Valore predefinito: 1
Un peso dato in proporzione al suo peso esatto
Sottoposto a campionatura
Valore predefinito: 2
Un peso determinato attraverso una procedura di campionamento
generate_qpd_weights
generate_qpd_weights(qpd_bases, num_samples=1000)
Generare i pesi dalla distribuzione congiunta di quasiprobabilità.
Ogni peso il cui valore assoluto è superiore alla soglia di 1 / num_samples sarà valutato esattamente. I pesi rimanenti - quelli che si trovano nella coda della distribuzione - verranno quindi campionati, ottenendo al massimo num_samples pesi unici.
Parametri
- qpd_bases (
Sequence[QPDBasis]) – GliQPDBasisoggetti da cui generare i pesi - num_samples (
float) – Controlla il numero di pesi da generare
Tipo di restituzione
dict[tuple[int, ...], tuple[float, WeightType]]
Risultati
Una mappatura da una data decomposizione al suo peso. Le chiavi sono tuple di indici - un indice per ogni ingresso QPDBasis. Gli indici corrispondono a una specifica mappatura di decomposizione nella base.
I valori sono tuple. Il primo elemento è un numero corrispondente al peso del contributo. Il secondo elemento è l'indirizzo WeightType, sia EXACT che SAMPLED.
decompose_qpd_instructions
decompose_qpd_instructions(circuit, instruction_ids, map_ids=None, *, inplace=False)
Sostituire tutte le istruzioni QPD del circuito con operazioni e misure Qiskit locali.
Parametri
- circuit (QuantumCircuit) – Il circuito contenente le istruzioni QPD
- instruction_ids (Sequence[Sequence[int]]) – Una sequenza 2D, in modo che ogni sequenza interna corrisponda a indici di istruzioni che comprendono una decomposizione nel circuito. Gli elementi di una sequenza comune appartengono a una decomposizione comune e devono essere campionati insieme.
- map_ids (Sequence[int] | None) – Indici di una specifica mappatura lineare da applicare alle scomposizioni del circuito. Se non vengono forniti ID mappa, il circuito verrà scomposto in modo casuale secondo la distribuzione di probabilità congiunta delle scomposizioni.
- inplace (bool) – Se
True, l'indirizzocircuitverrà modificato al suo posto.
Tipo di restituzione
QuantumCircuit
Risultati
Circuito che ha avuto tutte le sue BaseQPDGate tutte le sue istanze sono state scomposte in operazioni locali.
Il circuito conterrà un nuovo registro classico finale per contenere i risultati della misurazione QPD (accessibile all'indirizzo retval.cregs[-1]).
Aumenti
- ValueError - Un indice in
instruction_idscorrisponde a un cancello che non è un'istanzaBaseQPDGateistanza. - ValueError - Un elenco all'interno di istruzioni_id non ha lunghezza 1 o 2.
- ValueError - Il numero totale di indici in
instruction_idsnon è uguale al numero di istanze del circuitoBaseQPDGateistanze del circuito. - ValueError - Le porte all'interno della stessa decomposizione contengono basi QPD diverse.
- ValueError - La lunghezza di
map_idsnon è uguale al numero di decomposizioni del circuito.
qpdbasis_from_instruction
qpdbasis_from_instruction(gate, /)
Genera un QPDBasis oggetto, dato un'operazione supportata.
Tutte le porte a due qubit che implementano il metodo to_matrix() sono supportate. Questo dovrebbe includere la stragrande maggioranza delle porte senza parametri non vincolati, ma ci sono alcuni casi particolari (si veda, ad esempio, il problema qiskit #10396 ).
È supportata anche l'operazione Move che può essere utilizzata per specificare il taglio di un filo.
Tipo di restituzione
Risultati
L'oggetto appena istanziato QPDBasis appena istanziato
Aumenti
- ValueError - Istruzione non supportata.
- ValueError - Impossibile decomporre l'istruzione con parametri non vincolati.
- ValueError -
to_matrixconversione del gate a due qubit è fallita.
Parametri
gate (Instruction)