在我们等待量子计算机的同时,是否可以编写一个软件模拟?我怀疑答案是否定的,但希望之所以不这样做,将会对这个谜团有所启发。
答案 0 :(得分:13)
实施它并不难。问题是计算和存储器复杂度是你想要模拟的量子比特数的指数。
基本上,量子计算机同时对所有可能的n位状态进行操作。那些长得像2 ^ n。
运营商的规模增长得更快,因为它是一个矩阵。所以它增长得像(2 ^ n)^ 2 = 2 ^(2 * n)= 4 ^ n
所以我希望一台好的计算机可以模拟一台高达20位的量子计算机,但速度会相当慢。
答案 1 :(得分:8)
他们确实存在。 Here's基于浏览器的。 Here's用C ++编写的。 Here's一个用Java编写的。但是,如CodesInChaos所述,量子计算机同时对所有概率幅度进行操作。所以想象一个3比特的量子寄存器,它的典型状态如下:
A1 | 000> + a2 | 001> + a3 | 010> + a4 | 011> + a5 | 100> + a6 | 101> + a7 | 110> + a8 | 111>
这是所有可能组合的叠加。更糟糕的是那些概率幅度是复数。因此,n-qubit寄存器需要2 ^(2 * n)个实数。因此,对于一个32位的寄存器,这是2 ^(2 * 32)= 18446744073709551616实数。
正如CodesInChaos所说,用于转换这些状态的酉矩阵就是这个数的平方。他们的应用是点产品......至少可以说,它们的计算成本很高。
答案 2 :(得分:5)
我的回答是肯定的:
您可以通过模拟量子机器算法来模拟量子机器的行为
D-Wave quantum machine使用名为quantum annealing
的技术。该算法可以与simulated annealing
算法进行比较。
参考文献:
答案 3 :(得分:2)
作为Wikipedia州:
原则上(使用指数资源)经典计算机可以模拟量子算法,因为量子计算不违反Church-Turing论文。
答案 4 :(得分:1)
多年前,我参加了Perl会议上的一次演讲,其中Damian Conway(我相信)正在猜测其中一些。稍后有一个可用的Perl模块做了一些这样的事情。搜索CPAN for Quantum :: Superpositions。
答案 5 :(得分:1)
有一个非常大的语言,框架和模拟器列表。 有些模拟低水平的量子方程,其他只是模拟门。
了解您对其能力和使用方便性的看法会很棒。
https://quantumcomputingreport.com/resources/tools/ https://github.com/topics/quantum-computing?o=desc&s=stars
答案 6 :(得分:0)
Quipper是用于量子计算的全面模拟EDSL,在Haskell中实现 我有经验来模拟几种QC算法的行为,例如Deutsch,Deutsch-Jozsa,Simon's,Shor的算法,这非常简单。
答案 7 :(得分:0)
量子计算的经典模拟很难的另一个原因是:在n-qubit门(n> 1)的每个动作之后跟踪你可能想要知道的是,输出量子位是否被纠缠。这必须经典地计算,但已知是NP难的。
答案 8 :(得分:0)
量子计算经典模拟的另一个原因很难:你需要几乎完美 - 即尽可能完美 - 随机数发生器来模拟测量。