有什么方法可以在普通计算机上模拟量子计算机,从而使我能够测试和尝试量子编程语言(例如Q#)?我的意思是,我可以真正检验我的假设并获得最准确的结果。
更新:我并不是真的在寻找模拟量子计算机,但是我不确定是否有可能在普通的非量子PC上有效地模拟一台量子计算机。
有什么方法可以在普通计算机上模拟量子计算机,从而使我能够测试和尝试量子编程语言(例如Q#)?我的意思是,我可以真正检验我的假设并获得最准确的结果。
更新:我并不是真的在寻找模拟量子计算机,但是我不确定是否有可能在普通的非量子PC上有效地模拟一台量子计算机。
Answers:
是的,有可能(但很慢)。有几个现有的(仅部分列表)模拟器:
QDD是一个C ++库,它在C ++编程环境的上下文中提供了相对直观的量子计算构造集。QDD的独特之处在于其对量子计算的仿真基于量子态的二进制决策图(BDD)表示。
jQuantum是一个模拟量子计算机的程序。您可以使用它设计量子电路,然后让它们运行。示出了量子寄存器的当前状态。
QCE是一种软件工具,可模拟昆腾计算机的各种硬件设计。QCE严格按照量子力学定律模拟控制硬件量子处理器运行的物理过程。QCE还提供了在实际实验条件下调试和执行量子算法的环境。
(此外,Q#仅适用于MS的QDK,感谢@Pavel)
所有这些的缺点很简单:它们仍然在二进制(非量子)电路上运行。据我所知,没有容易使用的量子计算机来运行这些东西。而且由于要用多个二进制位来表示单个qubit,因此模拟量子程序所需的计算能力会很快增加。
我将引用有关该主题的论文(J. Allcock,2010年):
我们的评估表明,我们的实现非常准确,但是与此同时,我们使用了大量的额外内存来实现这一目标。降低精度目标将使我们能够减小表示大小,从而在相同的内存量下模拟更多的量子位。
第89页,第5.1节
随着我们的实现变得越来越准确,它们也变得越来越慢。
TL; DR:有可能,并且存在一些仿真器,但是对于大量的量子位,没有一个效率很高。
是的,可以在一台普通的计算机上模拟一台量子计算机–但是您很可能不得不牺牲效率。
状态空间的维数随量子位的数量呈指数增长(,其中是量子位的数量),因此您要处理的线性代数不会太轻-您将遇到非常大的矩阵而且您使用的算法(无论效率如何)都可能很快就呈指数级扩展。但是,肯定可以在普通计算机上模拟质量控制。 n
您可能会对Q#感兴趣,如其他答案所述。更多仿真器:
量子计算游乐场是基于浏览器的WebGL Chrome实验。它具有一个具有简单IDE接口的GPU加速量子计算机,以及具有调试和3D量子状态可视化功能的自己的脚本语言。量子计算游乐场可以有效地模拟高达22个量子位的量子寄存器,运行Grover和Shor的算法,并且在脚本语言本身中内置了多种量子门。
QX模拟器是Nader Khammassi在QuTech开发的通用量子计算机模拟器。QX允许量子算法设计人员在量子计算机上模拟其量子电路的执行。模拟器定义了一种低级量子汇编语言,即“量子代码”,该语言允许用户在简单的文本源代码文件中描述其电路。然后,将源代码文件用作执行其内容的模拟器的输入。
Quantum ++是现代的C ++ 11通用量子计算库,仅由模板头文件组成。Quantum ++用标准C ++ 11编写,并且仅使用Eigen 3线性代数纯头标模板库和OpenMP多处理库(如果有),具有极低的外部依赖性。
尽管古典计算机科学中有许多常见概念,但量子计算仍被广泛认为是理论物理学领域中的一门特殊学科。[...] QCL(量子计算语言)试图填补这一空白:QCL是一种用于量子计算机的高级,与体系结构无关的编程语言,其语法源自经典的过程语言,例如C或Pascal。这允许以一种一致的形式主义完全实现和模拟量子算法(包括经典组件)。
可以在Quantiki上找到更多相关的模拟器
是的,可以在经典计算机上模拟量子计算。但是,仿真的成本随着量子比特数和/或电路深度和/或特定操作数成指数增长。
为了快速尝试想法,我的模拟器Quirk非常棒。这是一个在您的Web浏览器中运行的开源拖放式量子电路模拟器。您可以通过algassert.com/quirk访问实时版本。
这是Quirk的示例Grover电路的屏幕截图,该电路配备了中间状态显示,以跟踪“隐藏”状态的发生可能性:
如果您专门研究Q#,那么将它与仿真器一起使用非常容易-实际上,不可能有Q#但没有仿真器,它们是捆绑在一起的。
首先,您需要从Microsoft的网站下载.NET Core 。
当您通过dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2-*"
或Microsoft的网站下载Microsoft的Quantum Development Kit时,它将同时下载该语言和Microsoft自己的模拟器。
创建一个新的Q#项目(dotnet new console -lang Q#
)会自动将其配置为使用仿真器,因此,当您键入一些Q#并运行该项目时,它“就可以正常工作”。
是。如果您自己建造,则找到具有与BullSequana M9600系列相同规格的第三方计算机,或者拿出10万欧元以上的价格从Atos购买系统。
注意BullSequana M9600系列和Atos QLM之间的相似之处。
具有不同软件(但您想使用自己的Q#)的同一个盒子(可能还有内部组件)。Atos宣称:“世界上性能最高的量子模拟器”。我不确定,但是可以达到30 qubit版本的规格,只有两个Intel CPU和1TB内存。
有什么方法可以在我的普通计算机上模拟量子计算机,从而使我能够测试和尝试量子编程语言(例如Q#)?
如果仅使用256GB内存和1-24TB交换驱动器,速度会很慢,但可以正常使用。
我的意思是我能真正检验我的假设并得到最准确的结果。
从手册中引用:
“ Atos量子学习机以两位数的精度计算量子程序的精确执行。它模拟了物理定律,这是量子计算的核心。这与现有的量子处理器截然不同,后者受量子的影响噪声,量子退相干,制造偏差以及性能瓶颈。在Atos Quantum学习机上进行的仿真使开发人员可以专注于其应用程序和算法,而不必等待量子机可用。”
他们声称它具有很高的精度,因为它是模拟器,因此不会受到噪声的影响,它也不会如此之快或昂贵。从理论上讲,您可以在计算机上添加一些内存,驱动器和软件...
我认为可以在以下网站找到有关该主题的不错的“概述”:
他们列出了几种语言的量子计算机模拟器,在此之前已经引用了其中一些模拟器。但是,他们保留一个列表,并进行更新以通知(或尝试通知)项目的状态。有一些“库”,例如:
哈斯克尔
qchas(qchas:用于实现量子算法的库)-一个用于实现量子算法的库。它包含量子门,量子位的定义。
蟒蛇
qubiter:Qubiter项目旨在最终提供一整套工具,这些工具主要是用Python编写的,用于设计和模拟经典计算机上的量子电路。
Java脚本
jsqis:jsqis的核心是一个用Javascript编写的量子计算机模拟器。它允许量子寄存器的初始化及其通过量子门的操作。