“量子力学牛逼”——这句话我最早是在某个技术社区的留言区看到的当时觉得这就是一句外行人的情绪宣泄。直到我自己真正开始啃量子信息相关的资料、跑第一个量子电路模拟之后才意识到这句看起来像口号的话其实是一个非常准确的描述。量子力学并不只是一门物理分支它是现代信息技术的底层逻辑之一。从半导体、激光、核磁共振到如今的量子计算、量子通信、量子传感背后全是这套理论在起作用。这篇文章我想从一个技术从业者的视角把量子力学里最核心、最反直觉、也最影响技术走向的几个概念拆开讲顺带聊一聊怎么从零开始上手量子计算编程以及我在自学过程中踩过的一些坑。适合所有对量子计算、量子信息感兴趣但没有系统学过量子力学的人。我会尽量用大白话把数学和物理包装下的硬骨头说清楚。1. 为什么说量子力学牛逼三条经典世界的铁律这里全被推翻了1.1 我们习惯的“确定性”在微观世界里不是主角经典物理里一个物体有确定的位置、确定的速度。你只要知道初始条件理论上就能推算出它之后任何时刻的状态。这种“机械决定论”在大尺度下非常好用火箭上天、汽车过弯都用这一套。但到了原子尺度这套直觉彻底失效。一个电子你没办法同时说清楚它在哪儿、往哪儿跑。这不是因为仪器不够精密而是“位置”和“动量”这两个概念在量子世界根本就不是预先存在的确定属性。你测量位置得到的是一个概率分布你测量动量得到的又是另一个概率分布。两者之间存在一条硬性限制你越想把位置测得准动量就越不确定反过来也一样。这个限制不是技术问题而是理论本性。我当初学到这里的时候脑子里还是“它其实有一个真实位置只是我们不知道”的念头后来才被迫放弃这种经典残留的想象。微观世界的底层不是“不知道”而是“没有确定的值”。这个认知转变是我觉得量子力学牛逼的第一个原因。1.2 叠加态在被测量之前粒子可以同时处于多个状态“叠加态”比不确定性更难接受。一个经典例子是双缝干涉实验。单个粒子打向一块开有两条缝的挡板按经典直觉它要么走左缝要么走右缝背后屏幕上应该出现两条对应的亮纹。但实际结果是单个粒子也会产生干涉条纹。这意味着它在穿过挡板时不是“选了某条缝”而是以某种方式同时穿过了两条缝然后在屏幕上自己和自己干涉。你没法用“它其实走了一条路只是我们不知道”来解释干涉条纹因为这种解释会算出完全错误的强度分布。只能说粒子处于一个叠加态左缝分量的概率幅和右缝分量的概率幅同时存在只有测量发生时才坍缩成“从左边来”或“从右边来”。我用一个生活化类比来帮你建立直觉你以为自己只能在“吃苹果”和“吃梨”之间二选一但在量子世界里你可以处于“0.7的苹果 0.7i的梨”这种状态而且这个“i”不是装饰它会带来干涉效果。等测量发生你才随机地变成“吃了苹果”或“吃了梨”。这个类比不严谨但足够帮你理解“叠加”和“概率幅”的大概位置。1.3 测量坍缩看这个动作本身就是参与量子力学的第三个反直觉点是“观测”不再是旁观。在经典世界里你拿望远镜看一只猫猫不会因为你看了它而改变行为。但在量子世界测量是一个物理互动过程光子打到粒子上探测器记录信号这些都会扰动系统本身。最典型的证据还是双缝实验——如果你在缝口加一个探测器试图看清粒子到底走哪条缝背后的干涉条纹立刻消失变成了两条普通亮纹。也就是说“看一眼”这个动作强行把一个叠加态压成了某个经典结果。这也是为什么很多科普把“观测”讲得特别玄。但从技术角度理解其实没那么神秘测量就是让系统和一个宏观装置发生纠缠然后系统状态被“投影”到某个确定的基向量上。后面我在说到量子计算的时候你会发现这个“测量即扰动”的特性反而可以变成安全性的来源。2. 量子力学最反直觉的两个核心叠加与纠缠到底意味着什么2.1 经典比特与量子比特一个点和一个球面的区别搞技术的人最关心的是量子信息。经典计算机用比特一个比特只能存0或1就像开关的“开”和“关”。量子计算机用量子比特也就是qubit。一个qubit的数学表示是二维复向量空间里的一个单位向量。如果用最简化的写法一个qubit的状态可以写成|ψ α|0 β|1这里的“|0”和“|1”是基态α和β是两个复数叫概率幅它们的模平方之和等于1。当α和β都不为0时这个qubit就处于叠加态既“是0”又“是1”或者说它具备0和1两种成分的某种组合。注意概率幅是复数所以两个不同的路径可能会互相增强也可能互相抵消。这种干涉效应是量子算法能在某些问题上胜过经典算法的根本原因。经典比特的玩法是“确定性地翻转”量子比特的玩法是“用复数概率幅做旋转和干涉”。一句话总结经典比特是一个零维的点量子比特是一个球面上的点。2.2 一个特别好用的工具布洛赫球刚开始学量子比特的时候看见α和β这种复数就头大。后来我发现一个东西能极大帮助建立直觉就是布洛赫球。你可以把一个qubit的所有可能状态想象成一个球面。北极是|0南极是|1赤道上的点是一系列等概率的叠加态区别在于“相位”不同。任何操作比如Hadamard门、X门、相位门本质上都是把这个球面上的点做旋转。测量则是把这个点“拍扁”到一个轴上让你看到0或1的经典结果。有了这个画面你会发现量子编程里那些看着吓人的门操作其实都是一些“绕着球面转”的动作。我建议所有新手在学量子计算时先花半小时把布洛赫球的图看熟它比任何文字解释都管用。2.3 纠缠不是“超光速通信”而是更强的非局域关联叠加之后量子力学里第二件让人头皮发麻的事情是纠缠。两个量子比特可以处在一种特殊状态里你无法分别描述它们各自的状态只能把这两个比特当做一个整体来写。最简单的纠缠态之一是贝尔态测量第一个比特得到0第二个比特一定得到1测量第一个得到1第二个一定得到0。这个关联不随距离衰减哪怕两个比特一个在月球一个在地球测量结果也保持这种同步。很多人第一反应是“这是不是可以超光速通信了”不能。原因在于任何一个单独的测量者面对的都是随机的测量结果。你操控不了自己这边样本是0还是1所以也就没法用这个关联去编码一段确定的信息。真正有意义的是纠缠态的关联强度超过了任何经典关联能达到的上限。在量子计算里纠缠是让计算空间指数膨胀的关键资源在量子通信里纠缠是检测窃听的基础。所以不要把它当成“通信天梯”要把它当成“关联资源”来理解。3. 量子技术怎么落地计算、通信、传感一条线3.1 量子计算不是更快而是换了一个计算范式量子计算最容易被人误解的地方就是以为它只是“更快的超级计算机”。真不是。它换的是一套完全不同的计算范式只在特定问题上有效。经典算法处理问题的复杂度很多情况下是指数级的。比如对一个很大的整数做质因数分解经典算法的时间会随位数增加而爆炸式增长。量子算法换了一种思路利用叠加态把大量可能性同时“放在桌面上”再用干涉操作让正确结果的概率被放大、错误结果的概率被抵消。这样一来某些特定问题的复杂度就被大幅降下来了。再说得直白点量子计算不是“并行地跑多个经典计算”而是“把问题编码到概率幅上靠干涉来读出答案”。它能有效处理的问题类型有限比如大数分解、无序搜索、量子多体系统模拟等。但日常的上网、文档处理、关系型数据库查询它并不会更快甚至更慢。我在实际接触这套东西后的感受是量子计算机是新型实验设备不是万能的“算力火箭”。3.2 量子通信安全性的底层逻辑是“不可克隆”量子通信里最成熟的方向是量子密钥分发。它解决的核心问题不是“加密”而是“密钥怎么安全地分发给双方”。经典通信里你要保证密钥安全通常依赖数学难题的复杂度比如大数分解。但量子密钥分发换了一种思路它的安全性建立在量子力学基本原理上。核心是两条一是不可克隆定理你无法完美复制一个未知的量子态二是测量即扰动窃听者一旦去测量就会留下痕迹。在实际流程里发送方把信息编码在单光子的量子态上发给接收方。如果中间有人截获并测量量子态会发生不可逆的改变接收方通过比对部分测量结果就能判断出信道里有没有窃听者。一旦确认信道安全双方再拿这个密钥去做对称加密。这里有一个常见误区量子通信不是直接传千兆流量也不是把已经加密的密文用量子态传一遍。它主要解决“密钥协商”这个环节。加密主体仍然是经典数据。在我看来这个技术最漂亮的地方是安全不再靠“猜不对”而是靠“物理规律不允许”。3.3 量子传感用量子干涉测更微弱的信号量子技术里比较低调但很实用的是量子传感。很多传感器本质上是在利用量子干涉或纠缠来提高测量的灵敏度。举个例子光的干涉对相位变化极其敏感。当一个量子系统处于某种干涉状态时外界极微小的扰动都会改变干涉结果。所以基于量子原理的重力梯度仪、磁场传感器、原子钟能做到比传统设备更高的精度。深海勘探、地磁测量、医学影像里的某些微弱信号检测都可能用上这类技术。我不把这个方向展开得太复杂只想说一点很多人一提到量子就只想到“计算”和“通信”其实“测量”这个方向离产业更近也更容易看到现实价值。3.4 当前量子硬件的三条路线超导、离子阱、光量子量子计算机的硬件目前主流有三条技术路线。超导路线是把电路做成“人工原子”利用超导约瑟夫森结制造出非线性能级再在微波波段进行操控。优点是门操作速度快、集成潜力大缺点是需要稀释制冷机把芯片降到接近绝对零度才能工作。整个系统的体积和成本都很高。离子阱路线是用电磁场把单个离子悬浮在真空中再用激光做量子逻辑操作。离子之间的相干时间很长门操作的错误率也比较低但问题是操作速度慢比特数做到几十个以后控制和校准难度指数上升。光量子路线以光子作为量子比特好处是可以在室温下工作退相干时间极短适合做量子通信和某些特殊计算坏处是光子之间天然不互动要构建确定性逻辑门比较困难且光子的损耗和测量效率还不理想。这三条路线目前谁都没有彻底胜出。我个人的判断是短期内不会是“通用量子计算机”的天下一统更可能是不同硬件配套不同场景。软件层和算法层必须跟着硬件的真实能力做适配这是很多人没有意识到的事情。4. 从零上手量子计算一个避开弯路的学习路线4.1 先补三个数学基础线性代数、复数、概率论量子力学是用线性代数写成的这一点怎么强调都不为过。你需要熟悉的数学工具第一是线性代数向量、矩阵、内积、张量积、特征值、特征向量。量子态就是向量量子门就是矩阵复合系统就是张量积空间。第二是复数概率幅是复数不是实数。你要理解虚数单位i出现在系数里会造成什么样的干涉效果不用太深入会做基本的复数乘除、取模长就够了。第三是概率论测量结果的分布、多次实验的统计规律、条件概率这些在理解量子测量时天天用。我建议不要一上来就啃偏微分方程也别急着看量子场论。做技术和工程的人最优先补的是线性代数尤其是“矩阵乘法和向量内积”的几何直觉。你只要能把这两个东西吃透后面读量子计算的公式会顺畅很多。4.2 用“量子信息”视角入门不要先硬啃薛定谔方程很多初学者最容易犯的错误是拿着一本讲量子力学通论的教材从头啃结果被波函数、算符、微分方程劝退。这种做法对物理系学生没问题但对我们这些想搞懂量子计算、量子通信的人来说路线不对。更好的路线是直接学“量子信息”方向的内容。这个方向的起点是假设量子态存在假设演化是酉变换假设测量是投影然后基于这三条公理去讨论计算和通信。你会发现它更像在学一门“线性代数应用课”而不是“物理专业课”。我第一次读到这套公理化框架的时候有种“原来如此”的感觉量子计算不需要你先理解波粒二象性的哲学解释它只要求你会用数学规则。先建立“量子态、酉变换、测量”这三个概念再回头补物理图像路径会顺畅得多。4.3 动手用开源量子编程框架跑第一个量子程序理论看十遍不如跑一遍电路。现在开源量子编程框架已经比较成熟你可以在自己电脑上模拟几十个量子比特不需要真机。下面是一个最简单的示例创建两个量子比特做一次Hadamard门再做一次受控非门最后测量。这个过程会生成一个纠缠态。# 代码基于主流开源量子编程框架之一qiskit结构适用于同类量子SDK from qiskit import QuantumCircuit, Aer, execute # 创建2个量子比特、2个经典比特的电路 qc QuantumCircuit(2, 2) # 对第0个比特做Hadamard门让它进入叠加态 qc.h(0) # 做受控非门第0个比特作为控制位目标位是第1个比特 qc.cx(0, 1) # 测量两个比特把结果记录到经典比特 qc.measure([0, 1], [0, 1]) # 用模拟器运行1024次 simulator Aer.get_backend(aer_simulator) result execute(qc, simulator, shots1024).result() counts result.get_counts(qc) print(counts)运行结果会类似这样{00: 512, 11: 512}注意看结果里几乎只会出现“00”和“11”不太会出现“01”和“10”。这说明两个比特已经纠缠在一起第一个比特是0时第二个比特也为0第一个比特是1时第二个比特也为1。如果你去掉受控非门输出则会变成四个结果都接近均匀分布。这一步实验是整个领域的“Hello World”我强烈建议你自己跑一下。跑通了之后你对叠加、纠缠、测量的理解会比看十篇文章都深刻。4.4 新手最容易卡住的三个地方第一卡波函数坍缩。很多人被这个词吓到了。其实用线性代数看它就是一个“投影”操作测量结果出来后状态被压到某一个基向量上。把“坍缩”换成“投影”难度立刻下降一大半。第二卡试图用经典概念去解释量子现象。比如想“电子其实知道该走哪条路”或者“纠缠只是预先约定好”。这些经典类比在简单场景下有用但一深究就错。我建议你接受“经典语言在这里不够用”这个事实直接用数学语言去描述过程。第三卡学了就忘。这太正常了。量子力学的直觉不是一两天能建立的。我自己的办法是带着“这个性质能用来做什么”的问题反复回看概念。比如学到叠加就想一下双缝干涉学到纠缠就想一下密钥分发学到测量就想一下量子电路在真机上的噪声。知识一旦能被“用起来”就不容易忘。5. 常见误区与避坑实录我不想你踩我踩过的坑5.1 误区一观测等于“有意识的人在看”这是量子力学科普里被误解最深的一点。不是说人的意识不重要而是“测量”在物理上指的是宏观装置与微观系统之间的相互作用。一个光子撞击粒子也算测量一台探测器记录信号也算测量。不需要一个“人的意识”介入坍缩就会发生。我自己早期看科普被“观测者效应”带偏了很久。后来才明白把“测量”理解成一个物理过程而不是玄学事件才真正读得懂量子计算里的“measure”。这一点想通了很多困惑会一扫而空。5.2 误区二量子计算机马上要取代传统计算机量子计算机不是“更好的电脑”而是“另一种电脑”。它在质因数分解、无序搜索、量子模拟等领域有优势但日常办公、网页渲染、视频编解码、传统数据库仍然是经典计算机的主场。更现实的技术路线是混合计算量子协处理器负责少数高价值问题经典处理器负责其余大部分任务。我在接触真实应用场景后最大的体会是别被“量子霸权”之类的词吓到那些只是特定基准测试上的指标不代表量子计算机能全面碾压经典计算机。5.3 误区三量子纠缠等于超光速传信息前面已经反复强调过这里再说一遍贝尔态无法用来传信息。因为单边测量结果是随机的你无法控制另一端得到什么。虽然关联是瞬时的但信息传递需要发送方主动编码而编码在这里做不到。排除这个误区特别重要因为它会影响你对“纠缠”本质的理解。如果你一直把纠缠当成“通信通道”就会忽略它真正厉害的地方——它是高维关联资源可以用来提高信息处理的一些理论极限。5.4 实战提醒模拟器结果和真实硬件结果之间的差距用模拟器跑量子电路结果通常“干净漂亮”概率分布和教科书几乎一致。但真实量子硬件不是这样的。退相干、门误差、测量误差都会让输出结果偏移理想值。比如你跑上面那个贝尔态电路在真机上可能得到类似这样的结果{00: 490, 11: 510, 01: 15, 10: 9}看到“01”和“10”的时候别慌不是代码写错了是噪声和误差。学会分辨“理论结果”和“真实结果”是量子计算实践里很重要的一课。我后来再看各种量子芯片的论文时第一件事就是看它们的错误率指标而不是看比特数有多高。比特数再大错误率压不下去也跑不了有意义的算法。最后再分享一个我自己的体会量子力学这个领域最大的门槛其实不是数学而是承认“常识不够用”。我一开始硬套经典直觉结果越学越乱后来干脆把那些反直觉结论当成数学公理去用反而很快上手了。你想真正理解量子力学为什么“牛逼”我的建议是别站在远处看科普去跑一个两比特的量子电路亲手看一下那些不该出现的误差结果什么样。理论、代码、真实噪声各来一遍你对这句话的理解会和现在完全不同。
阅读完成 · 觉得有帮助?