【问题标题】:How do I implement a set of qubits on my computer?如何在我的计算机上实现一组量子比特?
【发布时间】:2012-03-23 20:15:50
【问题描述】:

我想熟悉量子计算基础知识。

熟悉它的一个好方法是编写非常基本的虚拟量子计算机机器。 据我所知,实现单个量子比特的努力不能简单地复制到实现两个量子比特系统。但我也不知道如何实现单个量子位。

如何实现量子比特? 如何实现一组量子位?

【问题讨论】:

    标签: quantum-computing


    【解决方案1】:

    示例代码

    如果你想从简单但有效的东西开始,你可以玩这个basic quantum circuit simulator on jsfiddle(大约 2k 行,但其中大部分是 UI 内容 [绘图和点击] 和数学内容 [定义复数和矩阵])。

    量子计算机的状态是一组复杂的权重,称为amplitudes。每个可能的经典状态都有一个幅度。在量子比特的情况下,经典状态只是普通比特可以处于的各种状态。

    例如,如果您有 3 个位,那么您需要为 000001010011100101110 和 @ 设置复数权重987654332@ 州。

    var threeQubitState = new Complex[8];
    

    幅度必须满足一个约束:如果将它们的平方幅度相加,则结果为 1。经典状态对应于幅度为 1 的幅度,而其他幅度均为 0:

    threeQubitState[3] = 1; // the system is 100% in the 011 state
    

    运营

    对量子态的操作让您可以通过在经典状态之间流动来重新分配振幅,但是您选择的流动必须保留 squared-magnitudes-add-up-to-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 范数的复数列表,运算是酉矩阵,测量状态的概率就是其幅度的平方。

    您可能需要考虑的其他事项:

    • 您希望包含哪些类型的操作?
    • 1 量子位运算是 2x2 矩阵,3 量子位运算是 8x8 矩阵。将 1 量子位运算应用于 3 量子位状态的单个量子位时,如何将其转换为 8x8 矩阵? (使用Kronecker Product。)
    • 您可以使用哪些技巧来加快模拟速度?例如,如果只有少数状态是非零的,或者如果量子比特没有纠缠,则不需要进行全矩阵乘法。
    • 用户如何告诉模拟该做什么?您如何代表用户正在发生的事情?有大量的数字在四处流动......

    【讨论】:

      【解决方案2】:

      我实际上并不知道答案,但是开始阅读有关量子位的一个有趣的地方是this article。它没有详细描述纠缠量子比特的工作原理,但暗示了所涉及的复杂性:

      如果这就是仅使用两个量子位就能使事情变得如此复杂,那么如何 3 或 4 或 100 会变得复杂吗?事实证明, N-qubit量子计算机的状态只能完全定义 当绘制为具有 (4^N-1) 维度的空间中的一个点时。这意味着 我们需要 4^N 个很好的老式经典数字来模拟它。

      请注意,这是最大的空间复杂度,例如,对于 15 个量子位,大约有 10 亿个数字 (2^30=4^15)。它没有说明模拟的时间复杂度。

      【讨论】:

        【解决方案3】:

        @Qwertie 引用的文章是一个很好的介绍。如果您想在您的计算机上实现这些,您可以使用libquantum 模拟器,它在 C 库中实现了复杂的量子操作。大家可以看看this example,看看使用代码是什么样子的。

        【讨论】:

          【解决方案4】:

          信息实际上存储在不同Qbit之间的交互中,因此没有实现1 Qbit不会转化为使用多个。我认为您可以玩的另一种方法是使用现有的语言,如 QCL 或 google QCP http://qcplayground.withgoogle.com/#/home

          【讨论】:

            猜你喜欢
            • 2022-06-15
            • 2021-11-30
            • 2014-03-28
            • 1970-01-01
            • 1970-01-01
            • 2022-11-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多