3. 单量子比特门的组合与恒等式
在上一节中,我们已经认识了 X、Y、Z、H、S、T 以及任意相位门等基本单量子比特门。但在真实电路里,一个量子比特往往要连续经过多个门,例如先绕 X 轴转 90°,再绕 Z 轴转 45°,最后再绕 X 轴转 −90°。要判断这一串操作究竟等价于什么,就必须掌握单量子比特门的“代数”:矩阵乘法、对易与反对易关系,以及把任意门写成绕 Z、Y 轴旋转的欧拉角分解。本节的目标,是让你能够把一串门化简成一个旋转角,或者反过来,把任意目标门拆成可实现的 Z-Y-Z 序列。
一、门的乘法:从左到右读电路,从右到左乘矩阵
量子门是酉矩阵,连续作用对应矩阵乘法。约定非常重要:若电路从左到右依次是 \(U_1\)、\(U_2\)、\(U_3\),作用在态 \(|\psi\rangle\) 上,则总效果为
\(|\psi'\rangle = U_3 U_2 U_1 |\psi\rangle\)
也就是说,电路顺序从左到右,矩阵乘法从右到左。这个约定与量子线路图的阅读方向一致,务必在整门课程中保持一致。例如 \(X\) 后接 \(Z\),总矩阵是 \(ZX\),而不是 \(XZ\)。由于 \(XZ = -ZX\),两者相差一个全局相位 −1,虽然对单个量子比特的测量结果没有影响,但在受控操作或作为更大电路的一部分时,这个符号会真实地影响相对相位,因此不能随意丢弃。
矩阵乘法还告诉我们一个实用结论:任意两个单量子比特门的乘积仍然是单量子比特门,即 \(SU(2)\) 对乘法封闭。这意味着无论电路里串了多少个单比特门,最终都可以合并成一个 2×2 酉矩阵,再进一步写成三个旋转角的组合。
二、对易与反对易:哪些门可以交换顺序
两个算符 \(A\)、\(B\) 的对易子定义为 \([A,B]=AB-BA\),反对易子为 \(\{A,B\}=AB+BA\)。若 \([A,B]=0\),称二者对易,可以交换顺序;若 \(\{A,B\}=0\),称二者反对易,交换顺序会多出一个负号。
单量子比特门中最重要的一组关系是泡利矩阵:
- \([X,Y]=2iZ,\quad [Y,Z]=2iX,\quad [Z,X]=2iY\),即任意两个不同的泡利矩阵反对易;
- \(X^2=Y^2=Z^2=I\),每个泡利矩阵自乘为单位矩阵;
- \(XY=iZ,\quad YZ=iX,\quad ZX=iY\),循环顺序不能颠倒。
这些关系直接决定了许多化简技巧。例如 \(HXH=Z\)、\(HZH=X\),说明 Hadamard 门把 X 基与 Z 基互换;\(SXS^\dagger=Y\),说明相位门把 X 轴旋转到 Y 轴。在优化电路时,如果发现两个相邻门对易,就可以交换它们的位置,把同类的旋转合并,从而减少门数量。反之,如果两个门反对易,交换时就必须补上一个负号或额外的相位门。
三、旋转算符与欧拉角分解
绕 \(n\) 轴旋转角度 \(\theta\) 的单量子比特门写作
\(R_n(\theta)=\exp\!\left(-i\frac{\theta}{2}\,\hat{n}\cdot\vec{\sigma}\right)=\cos\frac{\theta}{2}I-i\sin\frac{\theta}{2}(\hat{n}\cdot\vec{\sigma})\)
其中 \(\vec{\sigma}=(X,Y,Z)\)。特别地,
\(R_z(\theta)=\begin{pmatrix}e^{-i\theta/2}&0\\0&e^{i\theta/2}\end{pmatrix},\qquad R_y(\theta)=\begin{pmatrix}\cos\frac{\theta}{2}&-\sin\frac{\theta}{2}\\\sin\frac{\theta}{2}&\cos\frac{\theta}{2}\end{pmatrix}\)
注意这里采用的是“半角”约定:\(R_z(\pi)=Z\) 差一个全局相位,\(R_z(\pi/2)=S\) 也差一个全局相位。全局相位不影响测量,但在受控门中必须小心。
欧拉角定理指出:任意单量子比特酉矩阵 \(U\)(在忽略全局相位意义下)都可以写成三个旋转的乘积。最常用的形式是 Z-Y-Z 分解:
\(U = R_z(\alpha)\,R_y(\theta)\,R_z(\beta)\)
其中 \(\alpha,\beta\in[0,2\pi)\),\(\theta\in[0,\pi]\)。这三个角就是欧拉角。它的几何意义是:先把量子比特绕 Z 轴转 \(\beta\),再绕 Y 轴转 \(\theta\),最后绕 Z 轴转 \(\alpha\)。由于 \(R_z\) 只改变相对相位,\(R_y\) 负责混合 \(|0\rangle\) 与 \(|1\rangle\),因此 Z-Y-Z 分解在超导量子比特和离子阱中都非常自然:Z 旋转通常由虚拟相位或相位门实现,Y 旋转由微波脉冲实现。
四、从矩阵元反解欧拉角
给定一个目标酉矩阵 \(U=\begin{pmatrix}u_{00}&u_{01}\\u_{10}&u_{11}\end{pmatrix}\),如何求出 \(\alpha,\theta,\beta\)?把 Z-Y-Z 分解展开后与 \(U\) 逐项比较,可得一组实用公式。先计算
\(\theta = 2\arctan\!\left(\frac{|u_{10}|}{|u_{00}|}\right)\)
再令 \(\phi_1=\arg(u_{10})-\arg(u_{00})\),\(\phi_2=\arg(u_{11})-\arg(u_{01})\),则
\(\alpha=\phi_1+\phi_2,\qquad \beta=\phi_2-\phi_1\)
当 \(u_{00}=0\) 或 \(u_{10}=0\) 时,上述比值会出现 0/0 或无穷,需要改用 \(u_{01}\)、\(u_{11}\) 分支,或直接令其中一个角为 0 再解另一个角。这是实际编程实现时最容易出错的地方,建议在代码里对 \(|u_{00}|<\varepsilon\) 和 \(|u_{10}|<\varepsilon\) 分别做分支处理。
五、一个可复现的算例
取目标门 \(U=H\)(Hadamard 门)。其矩阵为
H = (1/√2) [[1, 1],
[1, -1]]
按公式:\(|u_{00}|=|u_{10}|=1/\sqrt2\),所以 \(\theta=2\arctan(1)=\pi/2\)。\(\arg(u_{00})=0\),\(\arg(u_{10})=0\),故 \(\phi_1=0\);\(\arg(u_{11})=\pi\),\(\arg(u_{01})=0\),故 \(\phi_2=\pi\)。于是 \(\alpha=\pi\),\(\beta=\pi\)。验证:
\(R_z(\pi)R_y(\pi/2)R_z(\pi) = -iH\)
与 \(H\) 只差一个全局相位 \(-i\),对测量无影响。这说明 Hadamard 门可以用“Z 转 π → Y 转 π/2 → Z 转 π”实现。若硬件上 Z 旋转是免费的虚拟相位,那么实现 H 的真实代价就只是一次 Y 方向的 π/2 脉冲。
UGate(theta, phi, lam) 或 u3 直接指定三个欧拉角;在 Cirq 中可用 cirq.rz(a) @ cirq.ry(t) @ cirq.rz(b) 显式搭建。若你手头只有 \(R_x\) 和 \(R_z\),可先用 \(R_y(\theta)=R_x(\pi/2)R_z(\theta)R_x(-\pi/2)\) 把 Y 旋转换算过去,再整体合并相邻的 Z 旋转。六、化简与验证流程
面对一串单量子比特门,推荐按以下顺序处理:
- 把每个门写成 \(R_z\)、\(R_y\) 或泡利矩阵的形式,统一约定;
- 利用对易关系把同轴旋转移到一起,合并为单个旋转角;
- 对剩余的异轴旋转,用 Z-Y-Z 分解或 \(R_y=R_xR_zR_x^\dagger\) 换轴;
- 把结果整理成 \(R_z(\alpha)R_y(\theta)R_z(\beta)\),读出三个角;
- 用矩阵乘法或模拟器验证:比较目标矩阵与分解结果,忽略全局相位后应完全一致。
验证时不要只看单个矩阵元是否相等,而应计算 \(U_{\text{target}}^\dagger U_{\text{decomp}}\),若结果等于 \(e^{i\gamma}I\)(\(\gamma\) 为任意实数),则分解正确。这一步能有效避免因半角约定、符号方向或全局相位导致的隐蔽错误。