Skip to main content
IBM Quantum Platform

RossSelingerSynthesis

class qiskit.transpiler.passes.synthesis.ross_selinger_plugin.RossSelingerSynthesis

GitHub

Basi: UnitarySynthesisPlugin

Plugin di sintesi unitaria Ross-Selinger Qiskit.

L'algoritmo è descritto al punto [1]. Il codice sorgente (in Rust) è disponibile all'indirizzo https://github.com/qiskit-community/rsgridsynth.

Questo plugin viene attivato quando transpile() il unitary_synthesis_method parametro è impostato su "gridsynth".

Questo plugin supporta la personalizzazione ed è possibile fornirgli parametri aggiuntivi passando un dizionario come parametro unitary_synthesis_plugin_config della transpile() funzione.

Parametri supportati nel dizionario:

epsilon ( f64 ):

L'errore di approssimazione consentito.

Riferimenti:

[1] Neil J. Ross, Peter Selinger, Approssimazione ottimale senza ancilla Clifford+T delle rotazioni z,

arXiv:1403.2975


Attributi

max_qubits

Il numero massimo di qubit supportati è 1.

min_qubits

Il numero minimo di qubit supportati è 1.

supported_bases

Il plugin non supporta le basi per la sintesi.

supports_basis_gates

Il plugin non supporta i cancelli di base. Per impostazione predefinita, sintetizza sulla base ["h", "s", "t", "x"] del gate.

supports_coupling_map

Il plugin non supporta le mappe di accoppiamento.

supports_gate_errors

Il plugin non supporta gli errori di gate.

supports_gate_errors_by_qubit

Restituisce se il plugin supporta l'acquisizione gate_errors_by_qubit

Questo differisce da supports_gate_errors/gate_errors utilizzando una visione diversa degli stessi dati. Invece di essere codificato in base al nome del gate, questo è codificato in base al qubit e utilizza Gate istanze per rappresentare i gate (anziché i nomi dei gate).

gate_errors_by_qubit sarà un dizionario nella forma di {(qubits,): [Gate, error]}. Ad esempio:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

Si noti che questo dizionario potrebbe non essere completo o potrebbe essere vuoto, poiché dipende dal backend di destinazione che segnala gli errori su ogni gate per ciascun qubit. I tassi di errore del gate riportati in gate_errors sono forniti dall'oggetto Backend del dispositivo di destinazione e il significato esatto potrebbe variare a seconda del backend.

Il valore predefinito è False

supports_gate_lengths

Il plugin non supporta lunghezze gate.

supports_gate_lengths_by_qubit

Restituisce se il plugin supporta l'acquisizione gate_lengths_by_qubit

Questo differisce da supports_gate_lengths/gate_lengths utilizzando una visione diversa degli stessi dati. Invece di essere codificato in base al nome del gate, questo è codificato in base al qubit e utilizza Gate istanze per rappresentare i gate (anziché i nomi dei gate)

gate_lengths_by_qubit sarà un dizionario nella forma di {(qubits,): [Gate, length]}. Ad esempio:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

dove il length valore è espresso in secondi.

Si noti che questo dizionario potrebbe non essere completo o potrebbe essere vuoto, poiché dipende dal backend di destinazione che riporta le lunghezze di ogni gate per ciascun qubit.

Il valore predefinito è False

supports_natural_direction

Il plugin non supporta la direzione naturale, non presuppone porte bidirezionali a due qubit.

supports_pulse_optimize

Il plugin non supporta l'ottimizzazione degli impulsi.

supports_target

Se il plugin supporta l'utilizzo di target come opzione

target sarà un Target oggetto che rappresenta il dispositivo di destinazione per l'output del passaggio di sintesi.

Per impostazione predefinita, questo sarà False poiché l'interfaccia del plugin è precedente alla Target classe. Se un plugin restituisce True per questo attributo, ci si aspetta che il plugin utilizzi il Target anziché i valori passati se uno qualsiasi di supports_gate_lengths, supports_gate_errors, supports_coupling_map, e supports_basis_gates è impostato (anche se idealmente tutti questi parametri dovrebbero contenere informazioni duplicate).


Metodi

run

run(unitary, **options)

GitHub

Esegui il plugin di sintesi Ross-Selinger sull'unitaria data.

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