Skip to main content
IBM Quantum Platform

TwoQubitBasisDecomposer

class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)

GitHub

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 OneQubitEulerDecomposer per 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. Se False, non tentare l'ottimizzazione. Se None, 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)

GitHub

Decomporre un unitary a due qubit su basi fisse e SU(2)SU(2) utilizzando la migliore approssimazione, dato che ogni applicazione di base ha un basis_fidelity finito.

Parametri

  • unitary (Operator or ndarray) – 4×44 \times 4 unitario da sintetizzare.
  • basis_fidelity (float or None) – Fedeltà da assumere per le applicazioni di KAK Gate. Se dato, sostituisce basis_fidelity dato 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 DAGCircuit viene restituito al posto di QuantumCircuit quando 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

QuantumCircuit

Aumenti

QiskitError – se pulse_optimize è vero, ma non sappiamo come farlo.


Metodi

decomp0

static decomp0(target)

GitHub

Decomporre il target Ud(x,y,z)\sim U_d(x, y, z) con 00 usi del gate di base. Risultato UrU_r ha una traccia:

Tr(UrUtarget)=4(cos(x)cos(y)cos(z)+jsin(x)sin(y)sin(z)\Big\vert\text{Tr}(U_r\cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert (\cos(x)\cos(y)\cos(z)+ j \sin(x)\sin(y)\sin(z)\Big\vert

che è ottimale per tutti gli obiettivi e le basi

decomp1

decomp1(target)

GitHub

Decomporre il target Ud(x,y,z)\sim U_d(x, y, z) con 11 l'uso della porta base Ud(a,b,c)\sim U_d(a, b, c). Il risultato UrU_r ha una traccia:

Tr(UrUtarget)=4cos(xa)cos(yb)cos(zc)+jsin(xa)sin(yb)sin(zc)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert \cos(x-a)\cos(y-b)\cos(z-c) + j \sin(x-a)\sin(y-b)\sin(z-c)\Big\vert

che è ottimale per tutti gli obiettivi e le basi con z==0 o c==0.

decomp2_supercontrolled

decomp2_supercontrolled(target)

GitHub

Decomporre il target Ud(x,y,z)\sim U_d(x, y, z) con 22 usi del gate di base.

Per la base supercontrollata Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), tutti i b, il risultato UrU_r ha traccia

Tr(UrUtarget)=4cos(z)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^\dag) \Big\vert = 4\cos(z)

che è l'approssimazione ottimale per la base della classe CNOT Ud(π/4,0,0)\sim U_d(\pi/4, 0, 0) o della classe DCNOT Ud(π/4,π/4,0)\sim U_d(\pi/4, \pi/4, 0) e per qualsiasi target. Può essere subottimale per b0b \neq 0 (cioè esiste una decomposizione esatta per qualsiasi obiettivo che utilizzi BUd(π/4,π/8,0)B \sim U_d(\pi/4, \pi/8, 0), ma può non essere questa decomposizione). Questa è una decomposizione esatta per le basi supercontrollate e l'obiettivo Ud(x,y,0)\sim U_d(x, y, 0). Nessuna garanzia per le basi non supercontrollate.

decomp3_supercontrolled

decomp3_supercontrolled(target)

GitHub

Decomporre l'obiettivo con 33 usi della base. Si tratta di una decomposizione esatta per la base supercontrollata Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), per tutti i b e per qualsiasi obiettivo. Nessuna garanzia per le basi non supercontrollate.

num_basis_gates

num_basis_gates(unitary)

GitHub

Calcola il numero di porte di base necessarie per la decomposizione di un input unitario

traces

traces(target)

GitHub

Fornite le tracce previste Tr(UUtarget)\Big\vert\text{Tr}(U \cdot U_\text{target}^{\dag})\Big\vert per un diverso numero di porte di base.

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