SolovayKitaevDecomposition
class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)
Basi: object
L'algoritmo di decomposizione discreta di Solovay Kitaev.
Questa classe viene chiamata in modo ricorsivo dal passaggio del transpiler, per questo è separata. Vedere SolovayKitaev per ulteriori informazioni.
Se basic_approximations viene passato come .npy file, pickle viene utilizzato internamente per caricare i dati. Si tratta di una potenziale vulnerabilità di sicurezza e dovrebbero essere caricati solo file affidabili.
Parametri
-
basic_approximations (str |dict[str, np.ndarray] | list[GateSequence] | None) –
Una descrizione delle approssimazioni di base di SO(3) in termini di porte discrete. Ad ogni iterazione di questo algoritmo, l'errore residuo viene approssimato con la sequenza di porte più vicina presente in questo insieme. Se a
str, questo specifica il nome del file da cui caricare l'approssimazione. Se adict, allora questo contiene{gates: effective_SO3_matrix}coppie, ad esempio{"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}. Se si tratta di una lista, questa contiene le stesse informazioni del dizionario, ma già convertite inGateSequenceoggetti che contengono la matrice SO(3) e i gate.È possibile specificare questo parametro oppure
basis_gatesedepth. -
basis_gates (list[str |Gate] | None) – Un elenco di porte standard discrete (cioè non parametrizzate). L'impostazione predefinita è
["h", "t", "tdg"]. -
depth (int) – Il numero di combinazioni di porte di base da considerare nell'insieme di basi. Determina la velocità di convergenza (e se) dell'algoritmo e deve essere scelto sufficientemente alto.
-
check_input (bool) – Se
True, eseguire passaggi intermedi per verificare se le matrici hanno la forma prevista.
Attributi
basis_gates
L'insieme dei gate di base delle approssimazioni di base.
Se None, il valore predefinito è ["h", "t", "tdg"].
check_input
Eseguire o meno i controlli di runtime sui dati interni.
depth
La massima profondità del gate delle approssimazioni di base.
Metodi
find_basic_approximation
find_basic_approximation(sequence)
Trovare GateSequence in self._basic_approximations che approssima sequence.
Il metodo qiskit.synthesis.discrete_basis.solovay_kitaev.SolovayKitaevDecomposition.find_basic_approximation() è deprecato a partire dalla versione Qiskit 2.3. Verrà rimosso non prima di 3 mesi dalla data di rilascio. Utilizzare invece query_basic_approximation, che accetta come input un Gate o una matrice e restituisce un oggetto QuantumCircuit.
Parametri
sequence (GateSequence) – GateSequence per trovare l'approssimazione a.
Risultati
GateSequence in che approssima sequence.
Tipo di restituzione
GateSequence
load_basic_approximations
static load_basic_approximations(data)
Caricare le approssimazioni di base.
Se data è specificato come stringa, questo metodo si affida internamente a pickle per caricare il file. Si tratta di una potenziale vulnerabilità di sicurezza e dovrebbero essere caricati solo file affidabili.
Parametri
data (list |str |dict) – Se è una stringa, specifica il percorso del file da cui caricare i dati. Se un dizionario, specifica direttamente le scomposizioni come {gates: matrix} o {gates: (matrix, global_phase)}. Lì, gates sono i nomi delle porte che producono la matrice SO(3) matrix, per esempio. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]} e la global_phase può essere data per tener conto di una differenza di fase globale tra la matrice U(2) delle porte quantistiche e la matrice SO(3) memorizzata. Se non viene indicato, il valore di global_phase sarà assunto pari a 0.
Risultati
Un elenco di approssimazioni di base come tipo GateSequence.
Aumenti
ValueError - Se il numero di combinazioni di gate e le matrici associate non corrispondono.
Tipo di restituzione
elenco [GateSequence]
query_basic_approximation
query_basic_approximation(gate)
Interrogare un'approssimazione di base di una matrice.
Parametri
Tipo di restituzione
run
run(gate_matrix, recursion_degree, return_dag=False, check_input=True)
Eseguire l'algoritmo.
Parametri
- gate_matrix (np.ndarray | Gate) – Il cancello a singolo qubit da approssimare. Può essere un
Gate, doveGate.to_matrix()restituisce la matrice, oppure una matrice unitaria che rappresenta il gate. - recursion_degree (int) – Il grado di ricorsione, chiamato nel documento.
QuantumCircuitDAGCircuitreturn_dag (bool) – SeTruerestituisci a, altrimenti a.- check_input (bool) – Se
Trueverificare che la matrice di input sia valida per la decomposizione. Sovrascrive l'attributo di classe con lo stesso nome, ma solo per questa chiamata di funzione.
Risultati
Un circuito a un qubit che approssima gate_matrix nella base discreta specificata.
Tipo di restituzione
save_basic_approximations
save_basic_approximations(filename)
Salvare le approssimazioni di base in un file.
Questo può essere caricato di nuovo tramite l'inizializzatore della classe (preferibile) oppure tramite load_basic_approximations():
filename = "approximations.bin"
sk.save_basic_approximations(filename)
new_sk = SolovayKitaevDecomposition(filename)Parametri
filename (str) – Il nome del file in cui memorizzare le approssimazioni.
Aumenti
ValueError - Se il nome del file ha un'estensione.npy. Il formato non è.npy e la memorizzazione come tale può causare errori quando si carica nuovamente il file.