AQC
class qiskit.synthesis.unitary.aqc.AQC(optimizer=None, seed=None)
Basi: object
Un'implementazione generica del compilatore quantistico approssimativo. Questa implementazione è indipendente dall'implementazione sottostante del circuito approssimato, dell'obiettivo e dell'ottimizzatore. Gli utenti possono passare le corrispondenti implementazioni delle classi astratte:
- L' ottimizzatore è un'implementazione del protocollo
Minimizer, un callable utilizzato per eseguire il processo di ottimizzazione. La scelta dell'ottimizzatore può influenzare la convergenza complessiva, il tempo necessario per il processo di ottimizzazione e il valore obiettivo raggiunto. - Il circuito approssimato rappresenta un modello di parametri che vogliamo ottimizzare. Attualmente, esiste solo un'implementazione basata su blocchi di unità CNOT a 4 rotazioni:
CNOTUnitCircuit. Per maggiori dettagli, consultare il documento. - L' obiettivo approssimato è strettamente legato all'implementazione del circuito approssimato e fornisce due metodi per calcolare la funzione obiettivo e il gradiente rispetto ai parametri approssimati del circuito. Questo obiettivo viene passato all'ottimizzatore. Attualmente esistono due implementazioni basate su blocchi di unità CNOT a 4 rotazioni:
DefaultCNOTUnitObjectivee la sua versione accelerataFastCNOTUnitObjective. Entrambe le implementazioni condividono la stessa idea di massimizzazione del prodotto di Hilbert-Schmidt tra la matrice target e la sua approssimazione. Il precedente approccio di implementazione deve essere considerato come un approccio di base. Può soffrire di problemi di prestazioni ed è adatto soprattutto per un numero ridotto di qubit (fino a 5 o 6), mentre il secondo, quello accelerato, può essere applicato a problemi più grandi. - Occorre considerare la crescita esponenziale delle dimensioni della matrice con il numero di qubit, perché l'implementazione non solo crea una matrice di destinazione potenzialmente grande, ma alloca anche un numero di buffer di memoria temporanei di dimensioni paragonabili alla matrice di destinazione.
Parametri
- optimizer (Minimizer | None) – un ottimizzatore da utilizzare nella procedura di ottimizzazione della ricerca del miglior circuito approssimato. Per impostazione predefinita, viene utilizzato il minimizzatore di scipy con il metodo
L-BFGS-B, con iterazioni massime impostate su 1000. - seed (int | None) – un valore di seme da utilizzare per il generatore di numeri casuali.
Metodi
compile_unitary
compile_unitary(target_matrix, approximate_circuit, approximating_objective, initial_point=None)
Compila approssimativamente un circuito rappresentato come matrice unitaria risolvendo un problema di ottimizzazione definito da approximating_objective e utilizzando approximate_circuit come modello per il circuito approssimato.
Parametri
- target_matrix (ndarray) – una matrice unitaria da approssimare.
- approximate_circuit (ApproximateCircuit) – un circuito modello che verrà riempito con i valori dei parametri ottenuti nella procedura di ottimizzazione.
- approximating_objective (ApproximatingObjective) – una definizione del problema di ottimizzazione.
- initial_point (ndarray | None) – valori iniziali degli angoli/parametri da cui avviare l'ottimizzazione.
Tipo di restituzione
Nessuna