Perché ci sono implementazioni di UGate e U3Gate così diverse nella documentazione di Qiskit?
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
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.