Skip to main content
IBM Quantum Platform

SolovayKitaevDecomposition

class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)

GitHub

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.

Nota

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 a dict, 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 in GateSequence oggetti che contengono la matrice SO(3) e i gate.

    È possibile specificare questo parametro oppure basis_gates e depth .

  • 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)

GitHub

Trovare GateSequence in self._basic_approximations che approssima sequence.

Deprecato dalla versione 2.3

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)

GitHub

Caricare le approssimazioni di base.

Nota

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)

GitHub

Interrogare un'approssimazione di base di una matrice.

Parametri

gate (ndarray |Gate)

Tipo di restituzione

QuantumCircuit

run

run(gate_matrix, recursion_degree, return_dag=False, check_input=True)

GitHub

Eseguire l'algoritmo.

Parametri

  • gate_matrix (np.ndarray | Gate) – Il cancello a singolo qubit da approssimare. Può essere un Gate, dove Gate.to_matrix() restituisce la matrice, oppure una matrice unitaria 2×22\times 2 che rappresenta il gate.
  • recursion_degree (int) – Il grado di ricorsione, chiamato nn nel documento.
  • QuantumCircuitDAGCircuitreturn_dag (bool) – Se True restituisci a, altrimenti a.
  • check_input (bool) – Se True verificare 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

QuantumCircuit | DAGCircuit

save_basic_approximations

save_basic_approximations(filename)

GitHub

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.

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