这可以看作是对量子计算机如何在硬件级别进行基本数学运算的软件补充?
西班牙量子信息和量子技术网络第四网络的一位观众提出了这个问题。该人给出的背景是:“ 我是材料科学家。您正在介绍先进的复杂理论概念,但我很难描绘出量子计算机在简单任务中的实际操作。如果我使用二极管,晶体管等,我可以轻松弄清楚自己需要加1 + 1的经典运算。您将如何在量子计算机上进行详细操作? ”
这可以看作是对量子计算机如何在硬件级别进行基本数学运算的软件补充?
西班牙量子信息和量子技术网络第四网络的一位观众提出了这个问题。该人给出的背景是:“ 我是材料科学家。您正在介绍先进的复杂理论概念,但我很难描绘出量子计算机在简单任务中的实际操作。如果我使用二极管,晶体管等,我可以轻松弄清楚自己需要加1 + 1的经典运算。您将如何在量子计算机上进行详细操作? ”
Answers:
根据所链接的问题,最简单的解决方案是尽可能使经典处理器执行此类操作。当然,这可能是不可能的,因此我们要创建一个adder。
单比特加法器有两种类型- 半加法器和全加法器。半加法器取输入和乙并输出“总和”(XOR运算)小号= 甲⊕ 乙和“进位”(AND运算)C ^ = 甲⋅ 乙。全加法器还具有“在进位” Ç 我Ñ输入和“执行”输出Ç Ò ù 吨,取代Ç。此返回小号= 甲⊕ 乙⊕ Ç 我Ñ和。
查看量子位寄存器上的CNOT门控制寄存器B:CNOT A → B | 0 ⟩一个| 0 ⟩乙这立即给出的输出乙寄存器作为甲⊕乙=小号。但是,我们尚未计算进位,并且B寄存器的状态已更改,因此我们还需要执行AND操作。这可以使用3比特的Toffoli(受控CNOT / CCNOT)门来完成。可以通过使用寄存器A和B作为控制寄存器并在状态|中初始化第三个寄存器(C)来完成此操作。0⟩
图1:半加法器的电路图,由Toffoli和CNOT组成。输入比特是和乙,给总和小号与进位输出C ^。
全加法器的一个简单扩展是波纹进位加法器,它的名字叫“涟漪”,使进位成为一系列加法器中下一个加法器的进位,允许任意大小(如果慢)的总和。这种加法器的量子版本可以在这里找到
对于许多系统而言,实现Toffoli门远不如实现单个qubit(甚至两个qubit)门那么简单。这个答案给出了将托菲利分解成多个较小门的方法。但是,在诸如IBMQX的实际系统中,也可能存在一些问题,量子位可以用作目标。这样,IBMQX2上的实际实现看起来像这样:
图3:在IBMQX2上实现半加法器。除了将Toffoli门分解为多个较小的门外,还需要其他门,因为并非所有的量子位寄存器都可以用作目标。将寄存器q [0]和q [1]相加以获得q [1]中的总和和q [2]中的进位。在这种情况下,结果q [2] q [1]应该为10。在处理器上运行该结果会以42.8%的概率提供正确的结果(尽管它仍然是最可能的结果)。
`` 如果我使用二极管,晶体管等,我很容易就能弄清楚自己需要加1 + 1的经典运算。您将如何在量子计算机上进行详细操作?''
令人印象深刻!我怀疑大多数人无法轻易弄清楚如何组合二极管和晶体管来实现经典的两位加法器(尽管我不怀疑这位材料科学家可以做到这一点)。;)
从理论上讲,实现经典加法器的方式在经典和量子计算机中非常相似:在两种情况下,都可以通过实现Toffoli门来实现!(请参阅@ Mithrandir24601的答案。)
但是材料科学家可能想了解如何在物理设备上实现这样的门(或其他量子门的等价序列)。使用不同的量子技术可能有无限的方法来实现此目的,但是这是使用捕获的离子和超导量子位对该门的两种直接实现:
您还可以将Toffoli门分解为一系列单量子位和CNOT门。 https://media.nature.com/lw926/nature-assets/srep/2016/160802/srep30600/images/srep30600-f5.jpg 您可以了解如何在Nielsen中使用光子,腔QED和捕获离子实现这些和庄。
介绍了一种在量子计算机上计算总和的新方法。该技术使用了量子傅立叶变换,通过消除了对临时进位位的需求,减少了加法所需的量子位数量。
托马斯·德雷珀(Thomas G.Draper)于1998年9月1日撰写的“在量子计算机上加法”的PDF链接,于 2000年6月15日修订。
总结以上链接,根据以下电路图(从第6页获取)进行加法:
引用论文(同样,第6页):
两个量子位之和的并行计算
我想体验两个量子位之和的并行计算,将0和“ 1 相为-1 ”的叠加加到1上;我受到Mithrandir24601的回答的启发。结果如下。我希望我的回答是在所要求的范围内。它显示了如何同时将1加1以及如何将0加到0,但是虽然计算了两个答案,但是每次运行计算时,我们只能读出其中一个计算的答案。您可以看到,在1000次运行中,有417次我们读出了答案“ 1”(1 = 0 + 1),而有380次我们读出了答案“ 2”(2 = 1 + 1)。
(当1位翻转为零时,我们零用了34次; 0 = 0 + 1是54次; 1 = 1 + 1是29次; 2 = 0 + 1是28次; 42 3次是3 = 0 + 1,并且16次得到3 = 1 + 1;这些错误中的每一个无疑都是由位翻转,相位翻转或两者引起的。
一个量子位寄存器中的0和“ -1 与相位-1相加”的叠加被添加到两个量子位寄存器中的1中。对于三个量子位,从左到右的前两个量子位是和(或5的第3个和第4个),最右边的量子位显示是添加了基态(视为0)还是激发态(初始为1添加了-1)的相位。