Controlli
qiskit_paulice.checks
Funzionalità per l'individuazione di controlli di Pauli efficaci nello spazio-tempo.
add_pauli_checks
add_pauli_checks(circuit, target_qubits, noise_model, cost='gamma', cost_nshots=10000, method='windowed', ancilla_qubits=None, check_creg_name='checks_c', check_qreg_name='checks_q', seed=None)
Aggiungere i controlli di Pauli spazio-temporali a un circuito di Clifford.
L'algoritmo di selezione dei controlli individua i controlli validi e a basso peso su ciascun qubit di destinazione nell'ordine in cui sono specificati in target_qubits e sceglie il controllo che garantisce la massima copertura di rilevamento degli errori (ovvero che minimizza il cost valore di ). Una volta che un controllo è stato confermato su target_qubits[0], verrà impostato per il resto dell'algoritmo e avrà inizio la ricerca di un controllo valido su target_qubits[1] . Per questo motivo, l'ordine in cui vengono specificati i parametri target_qubits può influire in qualche misura sull'insieme dei controlli generati dalla funzione.
Questa funzione genera qiskit_paulice.CheckedCircuit istanze contenenti un numero di controlli compreso tra 0 e un controllo per ogni qubit di destinazione. Può essere utile osservare la convergenza della funzione di costo man mano che si aggiungono ulteriori controlli, poiché è possibile notare che la convergenza del costo si verifica già con un numero inferiore di controlli.
Per ulteriori dettagli su come individuare controlli di Pauli efficaci nello spazio-tempo, si veda Sezione supplementare II-VI di Martiel, Javadi.
Parametri
-
circuit (QuantumCircuit) – Il circuito di Clifford da abbinare alle casacche di Pauli con motivi a scacchi spazio-temporali. Il circuito deve terminare con una misurazione su almeno un qubit. Il circuito può essere definito su qubit virtuali o fisici.
ancilla_qubitsSe il circuito ha uno schema, l'utente deve fornirlo. -
target_qubits (Sequence[int]) – Indici dei
circuitqubit che saranno utilizzati per intrecciare i qubit di controllo con il carico utile. Quandocircuitha una struttura (modalità ISA), si tratta di indici di qubit fisici, nello stesso spazio di indici diancilla_qubits. -
noise_model (NoiseModel) – Un modello di rumore che descrive l'effetto del rumore sul dispositivo di destinazione. Questo modello verrà utilizzato per stimare l'effetto di un determinato controllo durante il processo di selezione dei controlli. Sebbene sia possibile generare un modello di rumore a partire dal rumore di Pauli-Lindblad appreso, spesso è sufficiente un’approssimazione più grossolana del rumore generato dai dati di benchmark del backend. I bordi ancilla/target introdotti dall'inserimento dei check che non sono presenti nei dati forniti
GateWiseNoiseoLayeredNoisevengono dedotti automaticamente (tasso mediano per coppia di Pauli sui dati forniti); fornirli esplicitamente per sovrascrivere tale impostazione. -
cost (Literal['gamma', 'LER']) –
Metrica da ottimizzare. Può essere
"gamma"oppure"LER"(tasso di errore logico)."gamma": Il valore gamma associato al canale di rumore logico inverso (ovvero il canale di rumore costituito dagli errori all'interno del cono di luce di misurazione che non sono rilevabili dai controlli)."LER": Il tasso di errore logico empirico dopo la post-selezione. Esegue simulazioni Monte Carlo per calcolare la frazione di scatti post-selezionati interessati da rumore logico non coperto.
-
cost_nshots (int) – Numero di simulazioni Monte Carlo utilizzate dalle metriche di costo basate sul metodo Monte Carlo (attualmente solo
"LER"). -
method (Literal['windowed', 'genetic', 'windowed_genetic']) –
Selezionare il metodo di prelievo (
"windowed","genetic", o"windowed_genetic"). Ogni metodo aggiungerà i controlli intarget_qubitsmodo sequenziale. Una volta che un controllo è stato applicato a un determinato qubit di destinazione, non verrà annullato anche se vengono aggiunti ulteriori controlli.costCiascun metodo seleziona i controlli che garantiscono la massima capacità di rilevamento degli errori (ovvero il valore più basso)."windowed": Prelevare piccoli sottoinsiemi di fili su ciascun qubit di destinazione per individuare controlli validi"genetic": Sviluppare una serie di verifiche candidate a partire dallo spazio vettoriale completo di ciascun qubit di destinazione"windowed_genetic": Eseguire una ricerca genetica all’interno di finestre casuali di collegamenti su ciascun qubit di destinazione
-
ancilla_qubits (Sequence[int] | None) – Elenco degli indici dei qubit fisici (uno per ogni indice in
target_qubits) che specificano dove posizionare gli ancilla di controllo nel circuito di uscita.NoneÈ necessario quandocircuit.layoutnon è.ancilla_qubits[i]condividerà i gate di entanglement contarget_qubits[i]durante l'implementazione deli-esimo controllo. -
check_creg_name (str) – Nome del registro classico per le misurazioni di controllo (impostazione predefinita: “checks_c”)
-
check_qreg_name (str) – Nome del registro quantistico che contiene gli ancilla di controllo nei circuiti di uscita (impostazione predefinita: “checks_q”). Ignorato in modalità ISA.
-
seed (int | None) – Seme casuale per controllare la casualità durante la ricerca di controlli validi. Sebbene questo seme controlli una parte della casualità nell’algoritmo, permane comunque un certo grado di non determinismo quando si utilizza
LERla funzione di costo o una delle due varianti del metodo di selezione genetica.NoneLa combinazione dicost="gamma"emethod="windowed"è completamente deterministica seseednon è.
Risultati
Un elenco di qiskit_paulice.CheckedCircuit istanze: istanze contenenti il circuito di base senza controlli e una per ogni controllo aggiunto. L'elemento finale dell'output contiene i qiskit_paulice.CheckedCircuit con i controlli su ogni qubit di destinazione, supponendo che sia stato possibile trovare un insieme valido di controlli.