RossSelingerSynthesis
class qiskit.transpiler.passes.synthesis.ross_selinger_plugin.RossSelingerSynthesis
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,
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).