门与电路

量子电路(quantum circuit)

量子电路是写下一段量子程序最常见的方式。你可以把它想象成一张横过来的乐谱:每个量子比特是一条水平的线,也就是一根导线,你从左到右读它,就像时间在向前流动。沿着每根导线,你放上一个个画成小方块的门,用来变换这些量子比特。在最右端,你通常会画一个测量符号,在那里你最终从每个量子比特读出一个 0 或 1。所以一个电路其实就是一份配方:把量子比特准备在一个已知状态(常常是 |0>),施加一串选定的门,然后测量。

这些门并不是随意的乱搅。每一个都是可逆的酉操作,意思是原则上你可以把它倒着运行回去。有些门只作用在一根导线上(比如 H 门,它把一个量子比特放进 |0> 和 |1> 的均衡叠加态);另一些门,比如 CNOT,横跨两根导线,可以让它们纠缠起来,于是这两个量子比特不再各自有独立的故事。一小组门,比如 {H, T, CNOT},是通用的:只要数量足够,你就能以任意所需的精度,搭建出量子计算机能做的任何计算,就像少数几种逻辑门就足以搭起任何经典芯片一样。

诚实的部分在于最后会发生什么。如此用心地排列这些门,整个目的就是让错误答案的振幅相互抵消、让正确答案的振幅彼此相加,这靠的是干涉,这样当你测量时,你就很可能读出有用的东西。电路并不会悄悄把每个答案都试一遍再把最好的递给你;每跑一次,你只会得到一个随机的结果,其权重由玻恩规则的概率决定,因此你通常要把这个电路重复跑很多次,才能看出其中的规律。把门的顺序设计成让干涉偏向你想要的那个答案,这正是量子算法设计中既困难又有趣的工作。

q0: |0> --[H]--*-------- (measure) q1: |0> -------(+)------- (measure)

一个从左到右读的双导线电路:H 把 q0 放进叠加态,接着一个 CNOT(控制点在 q0,目标在 q1)让两者纠缠,最后两个量子比特都被测量。

在今天的 NISQ 硬件上,每多加一个门都会带来一点噪声,所以真实的电路必须保持浅而短;又长又深的电路将需要纠错,而这种纠错目前还无法做到大规模可用。

又称
quantum gate modelcircuit model