密度矩阵上的量子门操作:如何对混合态应用非门?
我太懂这种感受了——找了一堆论文,上来就甩超算符的数学推导,完全不给接地气的实操例子,看完还是一头雾水。咱们从你提到的「把n×n混合态转成2n×1向量」这个思路切入,结合更直观的密度矩阵操作,一步步把这个问题落地。
首先明确基础:你说的混合态是2×2密度矩阵:
$$\rho = \begin{pmatrix} \alpha & \beta \ \beta^\dagger & \delta \end{pmatrix}$$
它满足迹为1($\alpha + \delta = 1$)且是半正定矩阵,非门的幺正矩阵是$X = \begin{pmatrix} 0 & 1 \ 1 & 0 \end{pmatrix}$。
方法1:直接对密度矩阵应用幺正操作(最直观的实操方式)
对混合态执行幺正操作的核心规则是:$\rho' = X \rho X^\dagger$(因为幺正矩阵的共轭转置等于它的逆,所以也可以写成$X \rho X^{-1}$)。咱们直接代入计算给你看:
- 先计算左边的$X \rho$:
$$
X \rho = \begin{pmatrix} 0 & 1 \ 1 & 0 \end{pmatrix} \begin{pmatrix} \alpha & \beta \ \beta^\dagger & \delta \end{pmatrix} = \begin{pmatrix} \beta^\dagger & \delta \ \alpha & \beta \end{pmatrix}
$$ - 再乘以右边的$X\dagger$(非门是实矩阵,所以$X\dagger = X$):
$$
X \rho X^\dagger = \begin{pmatrix} \beta^\dagger & \delta \ \alpha & \beta \end{pmatrix} \begin{pmatrix} 0 & 1 \ 1 & 0 \end{pmatrix} = \begin{pmatrix} \delta & \beta^\dagger \ \beta & \alpha \end{pmatrix}
$$
说白了,操作后的混合态就是把原矩阵的对角元$\alpha$和$\delta$交换,非对角元的位置互换同时保持共轭关系(原(1,2)位是$\beta$,操作后(2,1)位是$\beta$;原(2,1)位是$\beta\dagger$,操作后(1,2)位是$\beta\dagger$)。
方法2:转成向量后应用超算符(对应你提到的向量表示思路)
如果要扩展到更大的量子系统,把密度矩阵转成向量再用超算符操作是更通用的方式,咱们一步步来:
- 把密度矩阵转成4×1向量:用列堆叠(vectorization)的方式,把矩阵的每一列依次叠起来:
$$
|\rho\rangle\rangle = \begin{pmatrix} \alpha \ \beta^\dagger \ \beta \ \delta \end{pmatrix}
$$ - 构建非门对应的超算符矩阵:幺正操作对应的超算符是$X \otimes X*$($X$是X的复共轭,因为X是实矩阵,所以$X^=X$),展开后是:
$$
X \otimes X = \begin{pmatrix} 0 & 0 & 0 & 1 \ 0 & 0 & 1 & 0 \ 0 & 1 & 0 & 0 \ 1 & 0 & 0 & 0 \end{pmatrix}
$$ - 超算符与向量相乘:
$$
(X \otimes X) |\rho\rangle\rangle = \begin{pmatrix} 0 & 0 & 0 & 1 \ 0 & 0 & 1 & 0 \ 0 & 1 & 0 & 0 \ 1 & 0 & 0 & 0 \end{pmatrix} \begin{pmatrix} \alpha \ \beta^\dagger \ \beta \ \delta \end{pmatrix} = \begin{pmatrix} \delta \ \beta \ \beta^\dagger \ \alpha \end{pmatrix}
$$ - 还原回密度矩阵:把向量的前两个元素作为第一列,后两个作为第二列,得到的结果和方法1完全一致:
$$
\rho' = \begin{pmatrix} \delta & \beta^\dagger \ \beta & \alpha \end{pmatrix}
$$
实操代码示例(用NumPy实现)
如果要在代码里快速实现,方法1的代码最简洁:
import numpy as np # 定义原混合态的参数(这里用具体数值举例,你可以替换成自己的α、β、δ) alpha = 0.6 beta = 0.2 + 0.1j delta = 0.4 # 满足alpha + delta = 1 # 构造密度矩阵 rho = np.array([[alpha, beta], [np.conj(beta), delta]]) # 定义非门矩阵 X = np.array([[0, 1], [1, 0]]) # 应用非门操作 rho_prime = X @ rho @ np.conj(X.T) print("操作后的混合态密度矩阵:") print(rho_prime)
这样是不是就清晰多了?跳过那些晦涩的超算符定义,直接从实操的两种路径入手,不管是手动计算还是代码实现都能搞定。
内容的提问来源于stack exchange,提问作者linkhyrule5

