机器之心报道
编辑:杜伟
研究者希望 Twist 为创建更多有助于编程人员更易面对量子计算挑战的语言铺平道路。
与使用比特的传统计算机不同,量子计算机使用量子比特(qubit)将信息编码为 0 或 1,或同时编码。再加上量子物理学的助力,这些冰箱大小的机器可以处理巨量的信息,但量子计算机远远称不上完美。就像经典计算机一样,我们需要合适的编程语言在量子计算机上进行计算。
对量子计算机进行编程需要了解纠缠(entanglement),它是用于各种量子比特的计算乘子,可以转化为强大的能量。当两个量子比特纠缠时,一个量子比特上的行为可以改变另一个量子比特的值,即使这两个量子比特在物理上是分离的,从而引出爱因斯坦的名言「鬼魅般的超距作用」。
但是,这种能力同样导致了弱点。在编程时,如果丢弃一个量子比特时没有考虑到它与另一个量子比特的纠缠,则会破坏另一个量子比特中存储的数据,进而危及程序的正确性。
近日,MIT CSAIL 和 RLE(电子学研究实验室)的研究者在论文《Twist: Sound Reasoning for Purity and Entanglement in Quantum Programs》中创建了一种被称为 Twist 的量子计算编程语言。Twist 可以通过一种经典计算机编程人员理解的语言来描述和核实哪些数据在量子程序中被纠缠。Twist 语言引入了一种被称为纯度(purity)的概念,这种概念导致纠缠强制缺失,生成了更直观易懂的程序,并且在理想情况下 bug 更少。
举例而言,编程人员可以使用 Twist 来说明:一个程序生成的临时垃圾数据不与该程序的答案纠缠在一起,因此可以安全地丢弃这些数据。
论文地址:https://dl.acm.org/doi/pdf/10.1145/3498691
论文一作、MIT CSAIL 编程系统组(Programming Systems Group)的博士生 Charles Yuan 表示,「通过显式地说明一个量子比特何时不得与另一个纠缠,Twist 编程语言使得开发人员可以编写更安全的量子程序。并且,因为理解量子程序需要事先了解纠缠,我们希望 Twist 为创建更多有助于编程人员更易面对量子计算独特挑战的语言铺平道路。」
未来的重要一步是使用 Twist 创建更高级的量子编程语言。当前,大多数量子编程语言仍然属于汇编语言,将低级操作串在一起,没有注意到数据类型、函数以及经典软件工程中的典型事物等。
对于这项工作,芝加哥大学计算机科学教授、Super.tech 首席科学家 Fred Chong 说道,「量子计算机容易出错,并且编程起来很难。通过引入程序代码中的纯度并对它进行推理,Twist 语言保证纯净代码中的量子比特无法被非代码中的比特所改变,进而朝着更容易的量子编程迈出了一大步。」
技术概览
本文中,研究者将纯度形式化为一个实现量子程序中纠缠推理的核心工具。就一个纯净的表达式而言,它的评估不受不属于它的量子比特测量结果的影响,这意味着在计算中不与任何其他表达式产生纠缠。然后,他们提出了首个以类型系统为特征的语言 ——Twist,用于对纯度做合理推理。这种类型系统使开发者可以使用类型注释识别纯净的表达式。
Twist 还引入了纯度断言操作符(assertion operator),说明量子门输出中没有纠缠。为了合理地检查这些断言,Twist 组合使用了静态分析和运行时验证。
研究者使用量子遥传(quantum teleportation)协议展示了纯度值和 Twist,以及纠缠的力量和门传送等技术的构建块。量子遥传协议通过传送两个经典信息比特,将一个量子比特中存储的信息传送到任意距离之外的接收器。下图 1 展示了一个用于遥传延迟测量变体的量子电路,它将要被传送的量子比特 q^1 作为输入。
下图 2 展示了图 1 中量子电路的程序,它作为一个函数接受量子比特 q^1 并返回传送的输出,其中助手(helper)bell_pair 分配了一个贝尔对(Bell pair)。
下图 3 展示了图 2 中的遥传程序,使用 Twist 编写,并且纯度带有类型注释。在 Twist 程序中,每个量子表达式都是纯净或混合的类型。其中,纯净表达式不受其他量子比特测量影响,而混合表达式可能受到其他量子比特测量的影响。
下图 4 展示了 teleport 函数的实现,利用 Twist 的纯净断言来可靠地返回一个纯净输出。该程序执行两个步骤以验证 q^3 没有与程序中的任何其他量子比特纠缠在一起。
最后,研究者对 Twist 的类型系统进行评估,并在模拟中分析了一组基准量子程序,证明了 Twist 可以表达量子算法,捕捉编程错误,并支持现有量子编程语言不支持的程序,同时产生的运行时验证开销低于 3.5%
更多细节内容请参考原论文。
参考链接:https://techxplore.com/news/2022-01-language-quantum.html