Skip to main content
IBM Quantum Platform

Decomposizione quasi-probabilistica (QPD)

qiskit_addon_cutting.qpd

Principali funzionalità di decomposizione della quasiprobabilità.

QPDBasisBase in cui scomporre un'operazione.
BaseQPDGateClasse base per un gate da decomporre utilizzando la decomposizione di quasiprobabilità.
SingleQubitQPDGatePorta a singolo qubit da decomporre utilizzando la decomposizione di quasiprobabilità.
TwoQubitQPDGatePorta a due qubit da decomporre utilizzando la decomposizione di quasiprobabilità.

WeightType

class WeightType(value)

GitHub

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)

GitHub

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

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)

GitHub

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'indirizzo circuit verrà 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_ids corrisponde a un cancello che non è un'istanza BaseQPDGate istanza.
  • ValueError - Un elenco all'interno di istruzioni_id non ha lunghezza 1 o 2.
  • ValueError - Il numero totale di indici in instruction_ids non è uguale al numero di istanze del circuito BaseQPDGate istanze del circuito.
  • ValueError - Le porte all'interno della stessa decomposizione contengono basi QPD diverse.
  • ValueError - La lunghezza di map_ids non è uguale al numero di decomposizioni del circuito.

qpdbasis_from_instruction

qpdbasis_from_instruction(gate, /)

GitHub

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

QPDBasis

Risultati

L'oggetto appena istanziato QPDBasis appena istanziato

Aumenti

  • ValueError - Istruzione non supportata.
  • ValueError - Impossibile decomporre l'istruzione con parametri non vincolati.
  • ValueError - to_matrix conversione del gate a due qubit è fallita.

Parametri

gate (Instruction)

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