← 返回博客

数学科普系列 · 第 3 篇

矩阵与线性变换:量子门到底是什么

前情提要:我们已经把量子态想成一支"有长度、有方向"的矢量,把坐标轴方向想成一支支单位箭头(基矢量);也认识了"量子门"——一种把量子比特从一个态变到另一个态的操作,把几个门串成一条线就成了一段量子"程序",并且据说少数几个基本门的组合就能逼近任意操作。本文要揭开的,正是这个"门"在数学上的真实身份。

一、一个"门"在数学上到底长啥样

第 5 篇里我们说:给量子写程序,就是在一条线路上摆一个个"门"。可你有没有想过——这"门"到底是什么东西?

答案朴素得有点意外:一个量子门,就是一个矩阵。 明确一点:一个作用在 n 个量子比特上的门,就是一个 2^n × 2^n 的数字方阵。单比特门是 2×2,双比特门是 4×4,以此类推。

别被"方阵"吓到。矩阵在这里不是用来算账的,它是一份"线性操作说明书":你喂给它一个矢量(也就是一个量子态),它吐出来一个被"动过手脚"的新矢量。

所谓"线性",意思是它同时干三件事而绝不偏心:

  • 把一根矢量拉长或压短(缩放);
  • 把一根矢量转个方向(旋转);
  • 把好几根矢量先各自操作、再加起来,结果跟"先加起来再操作"一模一样(这就是线性的数学定义,记成 A(x + y) = Ax + Ay)。

一句话:矩阵是"对矢量执行一次确定性操作"的机器。旋转、翻转、缩放,它一次全包了。

二、单比特门:三个最熟的 2×2 方阵

拿最简单的单比特门开刀。一个比特只有两个基态 |0> 和 |1>,所以任何单比特门都是 2×2 矩阵。我们把 |0> 写成竖着的 (1, 0),把 |1> 写成 (0, 1),下面看三个经典门怎么动它们。

X 门(翻转门):就是经典的非门,把 0 变 1、1 变 0。它的矩阵是:

X = [ 0  1 ]
    [ 1  0 ]

你验算一下:X 乘 (1,0) 得到 (0,1),即 |0> 翻成 |1>;X 乘 (0,1) 得到 (1,0),即 |1> 翻回 |0>。完美翻转。它在 Bloch 球上的直觉是"绕 X 轴转 180 度"——把北极点转到南极点。

H 门(阿达马门,制造叠加):这是量子计算里出镜率最高的门,作用是把一个确定的态变成"一半一半"的叠加。它的矩阵是:

H = 1/根号2 · [ 1   1 ]
              [ 1  -1 ]

拿 |0> = (1,0) 喂进去:H|0> = (1/根号2, 1/根号2),也就是 (|0> + |1>)/根号2。看,正是第 5 篇里反复出现的"等概率叠加态"。H 干的事很优雅:它把竖直的基轴,扭成 45 度方向的对角线——于是"确定在 0"被抹平成"在 0 和 1 之间悬着"。

CNOT(受控非门,双比特):它管两个比特,一个"控制位"一个"目标位"。控制位是 0 就啥也不干;控制位是 1,就把目标位翻转。它是 4×4 矩阵,但直觉比矩阵本身更好记:

控制=0:  |00> -> |00>,  |01> -> |01>
控制=1:  |10> -> |11>,  |11> -> |10>

CNOT 是制造"纠缠"的关键工具——两个比特从此绑在一起,看一个就知道另一个。

概念:X、H、CNOT 三个门的矢量变换示意,箭头在基轴上转动

三、门串成线路 = 矩阵从左到右相乘

线路上不止一个门。比如"先 H 再 X",那它作用到 |0> 上到底算什么?

规则很直白:一堆门串起来,等于把这些门对应的矩阵按书写顺序从左到右乘起来。 "先 H 后 X",就是算 X · H(注意:写在右边的 H 先作用,写在左边的 X 后作用)。整个操作 = 矩阵乘积 XH,再去乘初始矢量。

这里有个新手必踩的坑,专门点一下:矩阵书写顺序和"执行顺序"是反着的。算式里靠右的矩阵先碰矢量,靠左的后碰。所以 X·H·|0> 的意思是"先 H,后 X"。别和平时读数顺序搞混。

四、为什么"门的顺序"不能乱:矩阵乘法不交换

你大概在小学学过,普通数字相乘 3 × 5 = 5 × 3,顺序无所谓。但矩阵乘法不保证交换——大多数时候 A·X ≠ X·A。

回到我们的例子做个直观对比:

  • 先 H 后 X:X·H·|0>。H 先把 |0> 变成 (|0> + |1>)/根号2,再被 X 翻转两个分量,得到 (|1> + |0>)/根号2——还是同一个等概率叠加。
  • 先 X 后 H:H·X·|0>。X 先把 |0> 翻成 |1>,H 再把 |1> 变成 (|0> - |1>)/根号2——一个带负号相位差的叠加。

两个不同的结果!所以量子程序里"哪个门在前、哪个门在后"是动真格的,不能随便调。这就呼应了第 5 篇那句"线路的顺序就是程序的顺序"——现在你明白它为什么成立:因为每个门是矩阵,而矩阵乘法的顺序改不得。

概念:顺序错乱导致不同末态,两条路径分叉的示意图

五、回到那句"几个门就够了"

还记得开头提的第 17 篇吗?"少数几个门的组合就能逼近任意操作。" 现在它的数学面纱可以摘下来了:"门组合" = "矩阵连乘","逼近任意操作" = "用少数几个基本矩阵的乘积逼近任意线性变换"。 当我们说 H、T、CNOT 是"通用门集",等价于说:用它们对应的那几个矩阵反复相乘,能搭出你想要的任何 2^n × 2^n 矩阵——也就是任何你想对量子比特做的操作。

这就像用红黄蓝三原色能调出几乎所有颜色。门集"通用性"的本质,是线性代数里"一组基能张成整个空间"的亲戚。

读后小测

3 句话复述

1. 一个量子门在数学上就是一个矩阵,它是"对一个矢量执行旋转、翻转、缩放"的线性操作说明书。 2. 单比特门是 2×2 矩阵,X 翻转 0 和 1、H 制造等概率叠加、CNOT 让两个比特纠缠。 3. 门串成线路 = 矩阵从左到右相乘,而矩阵乘法不交换,所以门的先后顺序决定结果。

1 件动手小事

在纸上写下 H = 1/根号2 · [[1,1],[1,-1]],手算 H 乘 |0> = (1,0):第一项 (1×1 + 1×0)/根号2 = 1/根号2,第二项 (1×1 + (-1)×0)/根号2 = 1/根号2,得到 (|0> + |1>)/根号2。这一下,你就亲手把"门"从一个抽象名词,变成了一次具体的矩阵乘法。

---

下一篇《概率与统计:测量到底在赌什么》:你会看到测量为什么其实是"赌"量子会塌缩到哪个本征态、而干涉又是怎么靠概率幅先相加再平方才现身的。

flowchart LR A["初态矢量: 0 态"] --> B["乘矩阵 H"] B --> C["末态: 0和1等概率叠加"]