Perché ci sono implementazioni di UGate e U3Gate così diverse nella documentazione di Qiskit?

Aug 20 2020

La documentazione per la nuova versione Qiskit 0.20.0 afferma che:

  • UGate è "implementato utilizzando due impulsi X90 su sistemi IBM Quantum:

$U(θ,ϕ,λ)=RZ(ϕ−π/2)RX(π/2)RZ(π−θ)RX(π/2)RZ(λ−π/2)$"

  • U3Gate è "implementato utilizzando due impulsi X90 su sistemi IBM Quantum:

$U3(θ,ϕ,λ)=RZ(ϕ)RX(−π/2)RZ(θ)RX(π/2)RZ(λ)$"

Sembra che solo quest'ultimo corrisponda alla sequenza di rotazione nota per U3:$z$-rotazione ($\lambda$), $y$-rotazione ($\theta$), $z$-rotazione ($\varphi$)

Sebbene le loro matrici di presentazione coincidano completamente: $$ \mathrm{U3}= \mathrm{U}= \begin{pmatrix} \cos(\theta/2) & -\mathrm{e}^{i\lambda}\sin(\theta/2) \\ \mathrm{e}^{i\phi}\sin(\theta/2) & \mathrm{e}^{i(\phi+\lambda)}\cos(\theta/2) \end{pmatrix}. $$

È un'inesattezza nella documentazione o mi manca qualcosa e queste porte sono effettivamente diverse?

Per ogni evenienza, la suddetta differenza dichiarata nella documentazione si riferisce all'implementazione hardware (non software) di questi gate sui sistemi IBM Q.

Risposte

3 e-eight Aug 20 2020 at 20:48

Se guardi il codice sorgente, vedrai che UGateè definito come un alias per U3Gate. Quanto al motivo per cui hanno bisogno di questo alias, non lo so per certo. Ma se dovessi azzardare un'ipotesi, sarebbe perché nella maggior parte della letteratura sull'informatica quantistica,$U$è usato per riferirsi a un cancello / operatore unitario arbitrario. Poiché in qiskit U3Gateè la più generica porta unitaria a qubit singolo, ha senso identificarla con$U$ dalla letteratura sull'informatica quantistica.