TwoQubitBasisDecomposer
class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)
Basi: object
Una classe per la decomposizione di unitari a 2-qubit in un numero minimo di utilizzi di una porta di base a 2-qubit.
Parametri
- gate (Gate) – Porta a due qubit da utilizzare nella decomposizione KAK.
- basis_fidelity (float) – Fedeltà da assumere per le applicazioni di KAK Gate. L'impostazione predefinita è
1.0. - euler_basis (str) – Stringa base da fornire a
OneQubitEulerDecomposerper la sintesi di 1Q. Le opzioni valide sono ['ZYZ','ZXZ','XYX','U','U3','U1X','PSX','ZSX','RR']. - pulse_optimize (bool | None) – Se
True, cercare di fare una decomposizione che minimizzi gli unitari locali tra le porte di entangling. Questo solleverà un'eccezione se non viene implementata una decomposizione ottimale. Attualmente, solo [{CX, SX, RZ}] è noto. SeFalse, non tentare l'ottimizzazione. SeNone, tentare l'ottimizzazione, ma non sollevare il problema se sconosciuto.
__call__
__call__(unitary, basis_fidelity=None, approximate=True, use_dag=False, *, _num_basis_uses=None)
Decomporre un unitary a due qubit su basi fisse e utilizzando la migliore approssimazione, dato che ogni applicazione di base ha un basis_fidelity finito.
Parametri
- unitary (Operator or ndarray) – unitario da sintetizzare.
- basis_fidelity (float or None) – Fedeltà da assumere per le applicazioni di KAK Gate. Se dato, sostituisce
basis_fidelitydato all'inizio. - approximate (bool) – Approssima se le fedeltà delle basi sono inferiori a 1.0.
- use_dag (bool) – Se è vero, quando questa classe viene richiamata viene restituito un oggetto
DAGCircuitviene restituito al posto diQuantumCircuitquando questa classe viene chiamata. - _num_basis_uses (int) – forzare una particolare approssimazione passando un numero compreso tra [0 e 3].
Risultati
Circuito quantistico sintetizzato.
Tipo di ritorno
Aumenti
QiskitError – se pulse_optimize è vero, ma non sappiamo come farlo.
Metodi
decomp0
static decomp0(target)
Decomporre il target con usi del gate di base. Risultato ha una traccia:
che è ottimale per tutti gli obiettivi e le basi
decomp1
decomp1(target)
Decomporre il target con l'uso della porta base . Il risultato ha una traccia:
che è ottimale per tutti gli obiettivi e le basi con z==0 o c==0.
decomp2_supercontrolled
decomp2_supercontrolled(target)
Decomporre il target con usi del gate di base.
Per la base supercontrollata , tutti i b, il risultato ha traccia
che è l'approssimazione ottimale per la base della classe CNOT o della classe DCNOT e per qualsiasi target. Può essere subottimale per (cioè esiste una decomposizione esatta per qualsiasi obiettivo che utilizzi , ma può non essere questa decomposizione). Questa è una decomposizione esatta per le basi supercontrollate e l'obiettivo . Nessuna garanzia per le basi non supercontrollate.
decomp3_supercontrolled
decomp3_supercontrolled(target)
Decomporre l'obiettivo con usi della base. Si tratta di una decomposizione esatta per la base supercontrollata , per tutti i b e per qualsiasi obiettivo. Nessuna garanzia per le basi non supercontrollate.
num_basis_gates
num_basis_gates(unitary)
Calcola il numero di porte di base necessarie per la decomposizione di un input unitario