Answers:
您可以从对量子计算机的介绍开始,例如来自Voxxed Days Vienna 2018的量子计算机-它是为具有编程背景但很少或根本没有量子力学知识的人们设计的。之后,您可以查看IBM Quantum Experience中的指南或Microsoft Quantum Development Kit的指南。
除此之外,例如,YouTube上还有许多视频,可以帮助您更深入地了解主题。
我认为量子程序员不一定需要了解量子物理学和线性代数。这些当然可以帮助拓宽量子程序员的知识,但不应将其视为先决条件。
即使这样,帮助萌芽量子程序员的大多数资源还是从线性代数的假设开始的。那些不是主要针对QISKit(IBM量子设备的SDK)的工具(其中一些是我编写的)。
您可以想到的最简单的程序是“ Hello World”。您如何为量子计算机做到这一点?我的建议是表情符号的叠加。
在量子编程中超越“ Hello World”之后,您将需要做一些更复杂的事情。人们通常会做一些简单的游戏。因此,让我们使用量子计算机来做到这一点。我造了战舰。
您可以在QISKit教程中找到这些以及更多的量子编程示例。我认为这可能是新量子程序员了解可以做什么以及如何做的最佳场所。
pyQuil是Python中的开源量子编程库。该文档提供了有关量子计算的入门知识,您可以通过编程来学习。它没有任何物理背景。
以下是一些指向主要主题的链接:
不必完全了解量子力学即可了解QC背后的理论。我是数学BSc /程序员,我读了有关该主题的文章,并且也参加了edX QC旧课程(不幸的是它不可用,但还有其他课程)。我想可以说我了解QC的要旨,但是我对量子力学几乎一无所知。
关键部分是量子计算主要使用线性代数,该代数基于工程/计算机科学本科课程中通常教授的数学。将此与使用无限维空间(或功能分析,如果需要)的真实量子力学进行对比。
如果您对这些大学数学课程感到满意,可以查看Susskind的《量子力学:理论上的最低要求》 -实际上与“真实”量子力学无关,它主要是对QC有用的东西。顺便说一句,整个“理论最低限度”丛书系列都是针对那些了解数学的人(例如计算机科学家或工程专业),并且想了解更多有关物理学的人。在线上也有很多课程,例如,edX上有新课程,但是我没有做任何课程,因此我不推荐任何一门课程。
量子计算机通过(演变的编程语言表示)所谓的量子电路进行编程。这些是量子门的序列加上它们作用于哪些量子位(qubit)的信息。
关于量子门,您真正需要了解的唯一一件事是它们代表旋转(在更高维度的空间,即所谓的希尔伯特空间)。因此它们是可逆的:Quantum计算机是用可逆逻辑编程的。
对于通常使用Dirac表示法的2比特系统来说,它会获得一个复数作为系数或所谓的概率幅度。基本向量是正交的,并且跨越状态的希尔伯特空间,概率振幅可以看作是其中的坐标。这是量子门影响旋转的图片。您会发现,对于单量子位系统,物理学家经常使用不同的图片(布洛赫球),其中量子门也会引起旋转(但有时会旋转更大角度,或者在该图片中完全省略了一个角度)。
量子计算机可以通过首先以可逆逻辑(可能需要辅助位)将其表示来实现所有常规逻辑。经典的NOT门与X量子门相对应,但是与经典情况下唯一的1位可逆门是标识和NOT门不同,量子计算机具有四个对应的门(X,Y,Z根据门的旋转) Bloch球,再加上标识)。此外,您可以使旋转仅旋转这些门旋转的几分之一。一些特别有趣的具有特殊名称和缩写的词(例如Hadamard门或H门)可创建所有状态的相等叠加。
不幸的是,早期的量子软件工程师可能将不得不对他们将要使用的量子计算机硬件有所了解:由于量子门有效旋转的角度是任意且连续的,因此量子计算机中存在一种类似的模拟元素,必然会产生错误(物理量子计算机所具有的错误源远不止于此)。有一种处理方法,量子误差校正可离散化误差并校正最可能的离散化,以实现(理想的)带有边界误差的任意复杂的计算。但是优化可能意味着一台具有量子纠错选择权的量子计算机将比其他量子计算机更适合于特定的量子门甚至算法。