欢迎阅读《量子计算Python与Q#编程实战》!本书以Python为起点,向你介绍量子计算的世界,以及如何用Q#(一种由微软公司开发的特定领域编程语言)编写解决方案。我们采用实例和游戏驱动的方法来讲授量子计算和开发的概念,让你能够尽早着手编写代码。
量子计算是一个丰富的跨学科研究领域,汇集了来自编程、物理、数学、工程和计算机科学的思想。在本书中,我们会不时地指出量子计算是如何借鉴这些其他领域的思想的,以便将我们正在学习的概念放入更丰富的背景。
虽然这些“题外话”是为了激发人们的好奇心和进一步的探索,但它们本质上是切题的。你无论是否投身于这些深入的研究,都会从本书中获得享受Python和Q#中的量子编程所需的知识。深入探究可能很有趣,也很有启发性,但如果深入量子计算不是你的爱好,那也没关系,抱着了解的目的来阅读本书也是完全可以的。
本书是为那些对量子计算感兴趣,对量子力学几乎没有经验,但有一些编程背景的人准备的。介绍用Python编写量子模拟器、用Q#(微软的量子计算专用语言)编写量子程序时,我们将用传统的编程思想和技术来帮助你脱离困境。对编程概念有一定的了解(如循环、函数和变量赋值)是有益的。
同样,我们使用线性代数中的一些数学概念(如向量和矩阵)来帮助描述量子概念。你如果熟悉计算机图形学或机器学习,会发现许多概念是相似的。在这个过程中,我们通过Python来复习重要的数学概念,但熟悉线性代数是有益的。
本书旨在让你开始探索和使用量子计算的实用工具。本书分为三个部分,它们相辅相成。
■ 第一部分逐步介绍了描述“量子位”所需的概念,这是组成量子计算机的基本单位。这一部分描述了如何在Python中模拟量子位,以使编写简单的量子程序变得容易。
■ 第二部分描述了如何使用量子开发工具包和Q#编程语言来组成量子位和运行量子算法,这些算法的表现与任何已知的经典算法都不同。
■ 在第三部分,我们应用前两部分的工具和方法,学习如何将量子计算机应用于现实世界的问题,如模拟化学特性。
此外,本书还提供了4个附录。附录A有安装和配置本书中使用的工具的说明。附录B是术语和快速参考,包括量子术语、符号备忘录和代码片段,在你阅读本书的过程中可能会有所帮助。附录C是线性代数的复习资料。附录D是对你将要实现的一个算法的深入研究。
在阅读本书和处理所提供的示例代码的途中,你可能会发现以下在线资源会对你有帮助。
■ 微软Azure Quantum文档:概念文档和关于Q#的全部参考资料,包括比本书内容更新的变化和补充。
■ GitHub上的microsoft/Quantum开发包示例:使用Q#的完整样本,包括其本身和Python及.NET中的宿主程序,涵盖广泛的不同应用。
■ QuTiP网站:完整的QuTiP软件包的用户指南,我们用它来帮助完成本书的数学运算。
对于量子计算专家和新手,也有一些很棒的社区。加入类似下面这样的量子开发社区,可以帮助你解决在学习过程中所遇到的问题,也可以让你在学习过程中帮助他人。
■ Q# Community:一个由Q#用户和开发者组成的社区,有聊天室、博客和项目库。
■ Quantum Computing Stack Exchange:一个寻求量子计算问题答案的好地方,包括你可能遇到的Q#问题。
■ WIQCA网站:一个包容性的网络社区,面向喜爱量子计算的所有人,以及使量子计算成为可能的人。
■ 量子开源基金会(Quantum Open Source Foundation,QOSF):一个支持量子计算开放工具的开发和标准化的社区。
■ Unitary Fund:一个非营利组织,致力于创建一个惠及大多数人的量子技术生态系统。
量子计算是一个迷人的新领域,它提供了思考计算的新方法和解决困难问题的新工具。本书可以帮助你入门量子计算,以便你继续探索和学习。也就是说,本书并不是一本教科书,也不是为了让你为量子计算研究做好全部准备。与经典算法一样,开发新的量子算法也是一门数学艺术。虽然我们在本书中触及了数学,并用它来解释算法,但有各种教科书可以帮助你建立在我们所涉及的想法之上的算法。
读完本书并开始接触量子计算后,如果想继续物理学或数学之旅,我们建议你选择以下资源。
■ Complexity Zoo网站。
■ Quantum Algorithm Zoo网站。
■ Complexity Theory: A Modern Approach ,作者是Sanjeev Arora和Boaz Barak(剑桥大学出版社,2009年)。
■ Quantum Computing: A Gentle Introduction ,作者是Eleanor G. Rieffel和Wolfgang H. Polak(麻省理工学院出版社,2011年)。
■ Quantum Computing since Democritus [1] ,作者是Scott Aaronson(剑桥大学出版社,2013年)。
■ Quantum Computation and Quantum Information ,作者是Michael A. Nielsen和Isaac L. Chuang(剑桥大学出版社,2000年)。
■ Quantum Processes Systems, and Information ,作者是Benjamin Schumacher和Michael Westmoreland(剑桥大学出版社,2010年)。
[1]
中译本为《量子计算公开课:从德谟克利特、计算复杂性到自由意志》(人民邮电出版社,2021年)。
——编者注