我想熟悉量子计算的基础知识。
熟悉它的一个好方法是编写非常基本的虚拟量子计算机机。据我所知,实现单个量子比特的努力不能简单地复制到实现两个量子比特系统。但我也不知道如何实现一个量子比特。
如何实现量子比特?如何实现一组量子比特?
发布于 2015-05-07 05:30:25
示例代码
如果你想从一些简单但有效的东西开始,你可以使用这个basic quantum circuit simulator on jsfiddle (大约2k行,但其中大部分是UI的东西,绘图和点击,以及定义复数和矩阵的数学东西)。
状态
量子计算机的状态是一组复杂的权重,称为amplitudes。每个可能的经典状态都有一个振幅。在量子比特的情况下,经典状态只是正常比特可以处于的各种状态。
例如,如果您有三个位,则需要000、001、010、011、100、101、110和111状态的复数权重。
var threeQubitState = new Complex[8];振幅必须满足一个约束:如果将它们的平方振幅相加,结果是1。经典状态对应于一个振幅的振幅为1,而其他的振幅都为0:
threeQubitState[3] = 1; // the system is 100% in the 011 state运营
对量子态的操作允许您通过在经典状态之间流动来重新分配振幅,但您选择的流在所有情况下都必须保留平方幅度加到1的属性。从技术上讲,该操作必须对应于某个unitary matrix。
var myOperation = state => new[] {
(state[1] + state[0])/sqrt(2),
(state[1] - state[0])/sqrt(2),
state[2],
state[3],
state[4],
state[5],
state[6],
state[7]
};
var myNewState = myOperation(threeQubitState);..。这些都是最基本的。状态是具有单位2范数的复数的列表,运算是么正矩阵,测量状态的概率就是它的平方振幅。
等
你可能需要考虑的其他事情:
发布于 2012-03-24 04:38:12
我实际上不知道答案,但从this article开始阅读量子比特是一个有趣的地方。它没有详细描述纠缠量子比特是如何工作的,但它暗示了其中涉及的复杂性:
如果这就是只有两个量子比特就能让事情变得多么复杂,那么对于3、4或100个量子比特,它会变得多复杂呢?
?结果表明,只有当绘制为(4^N-1)维空间中的一个点时,N量子比特量子计算机的状态才能完全定义。这意味着我们需要4^N个好的老式经典数字来模拟它。
请注意,这是最大的空间复杂度,例如,对于15个量子比特,这大约是10亿个数字(2^30=4^15)。它没有提到模拟的时间复杂性。
发布于 2013-07-11 06:23:16
@Qwertie引用的文章是一个非常好的介绍。如果您想在您的计算机上实现这些,您可以使用libquantum模拟器,它在C库中实现了复杂的量子操作。您可以查看this example,了解使用代码的过程。
https://stackoverflow.com/questions/9845959
复制相似问题