Skip to main content
IBM Quantum Platform

TwoQubitControlledUDecomposer

class qiskit.synthesis.TwoQubitControlledUDecomposer(rxx_equivalent_gate, euler_basis='ZXZ')

GitHub

Basi: object

Scomporre un'operazione unitaria generale a due qubit in termini di un gate a due qubit di destinazione, che sia localmente equivalente a un RXXGate.

Algoritmo di sintesi

Qualsiasi operatore unitario a due qubit UU può essere scritto, tramite la sua decomposizione canonica (di Weyl) (vedi TwoQubitWeylDecomposition), come un gate di Weyl Ud(a,b,c)U_d(a, b, c) circondato da quattro gate unitari a un singolo qubit:

     ┌─────┐┌───────┐┌─────┐
q_0: ┤ c2r ├┤0      ├┤ c1r ├
     ├─────┤│  Weyl │├─────┤
q_1: ┤ c2l ├┤1      ├┤ c1l ├
     └─────┘└───────┘└─────┘

Il gate di Weyl si scompone in un prodotto di tre rotazioni a due qubit, Ud(a,b,c)=RXX(a)RYY(b)RZZ(c)U_d(a, b, c) = R_{XX}(a)\, R_{YY}(b)\, R_{ZZ}(c) :

     ┌─────────┐┌─────────┐
q_0: ┤0        ├┤0        ├─■──────
     │  Rxx(a) ││  Ryy(b) │ │ZZ(c)
q_1: ┤1        ├┤1        ├─■──────
     └─────────┘└─────────┘

Le rotazioni RYYR_{YY} e RZZR_{ZZ} vengono quindi mappate sulle rotazioni RXXR_{XX} utilizzando cambi di base a singolo qubit. Con " RYY(b)=(SS)RXX(b)(SS)R_{YY}(b) = (S^\dagger \otimes S^\dagger)\, R_{XX}(b)\, (S \otimes S) ":

     ┌─────┐┌─────────┐┌───┐
q_0: ┤ Sdg ├┤0        ├┤ S ├
     ├─────┤│  Rxx(b) │├───┤
q_1: ┤ Sdg ├┤1        ├┤ S ├
     └─────┘└─────────┘└───┘

e RZZ(c)=(HH)RXX(c)(HH)R_{ZZ}(c) = (H \otimes H)\, R_{XX}(c)\, (H \otimes H) :

     ┌───┐┌─────────┐┌───┐
q_0: ┤ H ├┤0        ├┤ H ├
     ├───┤│  Rxx(c) │├───┤
q_1: ┤ H ├┤1        ├┤ H ├
     └───┘└─────────┘└───┘

Infine, ogni rotazione di tipo “ RXXR_{XX} ” viene realizzata utilizzando il gate fornito dall’utente, che è localmente equivalente a RXXGate (il rxx_equivalent_gate), avvolto dai gate a singolo qubit che tengono conto dell’equivalenza locale e di qualsiasi scalatura dell’angolo di rotazione. Una volta espansa ogni rotazione, tutte le porte a un singolo qubit che si trovano tra due porte consecutive a due qubit vengono moltiplicate tra loro e raggruppate, in modo che il circuito sintetizzato utilizzi al massimo tre applicazioni di rxx_equivalent_gate e al massimo otto porte unitarie a un singolo qubit:

     ┌─────┐┌───────────┐┌─────┐┌───────────┐┌─────┐┌───────────┐┌─────┐
q_0: ┤ d2r ├┤0          ├┤ d1r ├┤0          ├┤ e1r ├┤0          ├┤ f1r ├
     ├─────┤│  Equiv(a) │├─────┤│  Equiv(b) │├─────┤│  Equiv(c) │├─────┤
q_1: ┤ d2l ├┤1          ├┤ d1l ├┤1          ├┤ e1l ├┤1          ├┤ f1l ├
     └─────┘└───────────┘└─────┘└───────────┘└─────┘└───────────┘└─────┘

Equiv(a)Qui, Equiv(b) e Equiv(c) sono le operazioni fornite dall’utente rxx_equivalent_gate (la porta localmente equivalente a RXXGate) che realizzano le rotazioni RXX(a)R_{XX}(a), RXX(b)R_{XX}(b) e RXX(c)R_{XX}(c), mentre le caselle rimanenti rappresentano le porte unitarie consolidate a singolo qubit.

Il numero di porte a due qubit effettivamente emesse dipende dai parametri di Weyl del bersaglio: le rotazioni con angolo nullo vengono tralasciate, quindi le operazioni unitarie più vicine a una o due istanze di RXXGate utilizzano rispettivamente una o due applicazioni di rxx_equivalent_gate anziché tre. Un bersaglio vicino all’identità non ne utilizzerà alcuna applicazione.

Parametri

Aumenti

QiskitError – Se il gate non è localmente equivalente a un RXXGate.

__call__

__call__(unitary, approximate=False, use_dag=False, *, atol=1e-12)

GitHub

Scomporre un sistema a due qubit unitary utilizzando il TwoQubitControlledUDecomposer.

Parametri

  • unitary (Operator |ndarray) – 4×44 \times 4 unitario da sintetizzare.
  • approssimativo – Attualmente non utilizzato da questo decompositore; accettato per garantire la compatibilità delle firme con gli altri decompositori a due qubit. Riservato a usi successivi.
  • use_dag – Attualmente non utilizzato da questo decompositore; accettato per garantire la compatibilità delle firme con gli altri decompositori a due qubit. Riservato a usi successivi.
  • atol – Tolleranza assoluta per la verifica degli angoli delle operazioni unitarie su un singolo qubit durante la semplificazione del circuito restituito[. Impostazione predefinita: 1e-12].

Risultati

Circuito quantistico sintetizzato.

Tipo di restituzione

QuantumCircuit

Nota: atol viene passato a OneQubitEulerDecomposer.

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