脆弱的量子位:聊聊为什么量子计算机这么难造
Ping Zhou, 2021-11-13
之前聊了不少量子计算的算法,今天换个话题,回到量子计算的一个根本问题,聊聊为什么量子计算机这么难制造。
经典计算机里的晶体管,工作时状态是确定的0或1,这样的可靠性是因为晶体管的状态并不取决于单个电子,而是许多电子的平均。这样一来,即使有少数电子的状态受到干扰翻转了(例如电子在线路中逃逸了),也不影响整个晶体管的状态。这也是经典计算机能可靠工作的关键。
举个例子来说,假如一个经典计算机里的比特由3个电子的状态表示,每个电子可能处于两种状态之一,记作 \(|\uparrow\rangle\) 和 \(|\downarrow\rangle\) 。在工作的时候,假如某个电子发生了翻转:
\begin{matrix} |\uparrow\uparrow\uparrow\rangle \Rightarrow |\uparrow\downarrow\uparrow\rangle \end{matrix}这种情况并不会造成经典比特的翻转。实际情况里,一个经典比特会由多得多的电子状态来表示,少数电子造成翻转的可能性就更小了,由此保证了经典计算机的可靠性。
但是,这个性质也决定了经典计算机的『经典』特性,使它无法表现出『量子』的一面。
设想一下,假如我们想用两个经典比特构造一个量子相干态:
\begin{matrix} |\uparrow\uparrow\uparrow\rangle |\downarrow\downarrow\uparrow\rangle + |\downarrow\downarrow\downarrow\rangle |\uparrow\uparrow\uparrow\rangle \end{matrix}在逻辑上,这个状态可以写成
\begin{matrix} |L\rangle = |1\rangle |0\rangle + |0\rangle |1\rangle \end{matrix}假如某个电子翻转了,例如第一个晶体管的状态从 \(|\uparrow\uparrow\uparrow\rangle\) 变成了 \(|\uparrow\uparrow\downarrow\rangle\) ,物理状态发生了变化,但逻辑状态没有变:
\begin{matrix} |P\rangle = |\uparrow\uparrow\uparrow\rangle |\downarrow\downarrow\uparrow\rangle + |\downarrow\downarrow\downarrow\rangle |\uparrow\uparrow\uparrow\rangle \\ \Rightarrow |\uparrow\uparrow\downarrow\rangle |\downarrow\downarrow\uparrow\rangle + |\downarrow\downarrow\downarrow\rangle |\uparrow\uparrow\uparrow\rangle \\ \\ |L\rangle = |1\rangle |0\rangle + |0\rangle |1\rangle \\ \Rightarrow |1\rangle |0\rangle + |0\rangle |1\rangle \end{matrix}您可能会问:这不挺好么?物理上虽然有电子发生了翻转,但逻辑上就像什么也没发生一样!
但是!关键问题来了:电子的翻转不可能『凭空发生』,这必然是和这两个比特之外的『外部世界』发生了相互作用导致的。这种相互作用,必然导致外部世界的状态也发生了变化。假设这个外部世界的状态,变化前是 \(|0\rangle\) ,变化后变成了 \(|1\rangle\) ,我们需要把它也考虑进来,这个演化过程就变成了这样:
\begin{matrix} |P\rangle = |\uparrow\uparrow\uparrow\rangle |\downarrow\downarrow\uparrow\rangle |0\rangle + |\downarrow\downarrow\downarrow\rangle |\uparrow\uparrow\uparrow\rangle |0\rangle \\ \Rightarrow |\uparrow\uparrow\downarrow\rangle |\downarrow\downarrow\uparrow\rangle |1\rangle + |\downarrow\downarrow\downarrow\rangle |\uparrow\uparrow\uparrow\rangle |0\rangle \\ \\ |L\rangle = |1\rangle |0\rangle |0\rangle + |0\rangle |1\rangle |0\rangle \\ \Rightarrow |1\rangle |0\rangle |1\rangle + |0\rangle |1\rangle |0\rangle \end{matrix}这里增加的第3个量子位,就是外界状态。
在这个演化过程发生前(也就是箭头的左边),无论内部状态如何,外部状态都是 \(|0\rangle\) ,因此第三个量子位可以的丢掉:
\begin{matrix} |L\rangle = |1\rangle |0\rangle + |0\rangle |1\rangle \end{matrix}在演化过程发生后(箭头的右边),外部状态就不能丢掉了,它有可能是 \(|0\rangle\) ,也有可能是 \(|1\rangle\) 。但我们如果从系统内部看,外部状态是否发生变化对我们是不可知的,我们只知道,从内部看系统的状态变成了这样:
\begin{matrix} |L^{\prime}\rangle = \left\{ \begin{array}{ll} |1\rangle |0\rangle & (\verb=outside is = |0\rangle) \\ |0\rangle |1\rangle & (\verb=outside is = |1\rangle) \end{array} \right. \end{matrix}也就是说,演化后我们的系统状态,是 \(|1\rangle|0\rangle\) 或者 \(|0\rangle|1\rangle\) 之一,具体是哪个,取决于外部世界的状态(也就是是否有逃逸电子与外部世界相互作用)。这意味着我们的系统『坍缩』成了经典状态,原来的superposition状态没有了!你也可以这么理解,逃逸出去的电子与外界相互作用,相当于外部世界对这个电子进行了一次『测量』,这么一搞,我们系统原来的相干态就没了,也就是量子计算里经常提到的『退相干』(decoherence)。
从这个例子可以看到,我们的量子系统只要有一个电子逃逸出去与外界相互作用,就会导致整个系统退相干!
这也是为什么量子计算机这么难制造的原因了:一方面我们要尽可能隔离量子电路,避免它与外界相互作用;另一方面,我们又要使用和操作量子计算机,于是就不可避免需要接触和控制量子电路。要达成这两个看起来互相矛盾的目标,简直是不可能完成的任务!
当然,办法还是有的,从物理体系,工程工艺,到纠错算法等等,都使我们一天天接近实用的目标。具体的这里就不展开了,以后再说。
感谢阅读!