5

我知道你可以玩量子计算的唯一地方是谷歌量子游乐场ibm 的量子体验。虽然第一个使用 qscript 和第二个 qasm 语言(易于学习),但它们的用法仍然与常规编程没有太大区别(除了少数特定功能)。这是维基百科的解释:

量子比特与经典比特有一些相似之处,但总体上却大不相同。量子比特的测量有两种可能的结果——通常是 0 和 1,就像比特一样。不同之处在于,虽然一个位的状态是 0 或 1,但一个量子位的状态也可以是两者的叠加。可以在一个量子位中完全编码一个位。然而,一个量子位可以保存更多信息,例如使用超密集编码最多两个位。

对于具有 n 个组件的系统,在经典物理学中对其状态的完整描述只需要 n 位,而在量子物理学中则需要 2^n - 1 个复数。

哪个或多或少很清楚。但是如何用代码示例来显示呢?

4

1 回答 1

6

这是一些经典的代码,可以翻转硬币并计算你得到多少头:

def coin_count():
    bit = False
    counter = 0
    for _ in range(500):
        bit ^= random() < 0.5  # False → 50% False, 50% True
                               #  True → 50% False, 50% True
        if bit:
            counter += 1
    return counter

如果您多次运行此代码并制作直方图,则结果将近似为二项分布

经典二项分布

现在这里有一些伪代码基本上做同样的事情,除了硬币被替换为 qubit。我们通过对它应用 Hadamard 操作来“翻转量子比特”。

def hadamard_coin_count():
    qubit = qalloc()
    counter = 0
    for _ in range(500):
        apply Hadamard to qubit # |0⟩ → √½|0⟩ + √½|1⟩
                                # |1⟩ → √½|0⟩ - √½|1⟩
        if qubit:  # (not a measurement; controls nested operations)
            counter += 1  # (happens only in some parts of the superposition)
    return measure(counter)  # (note: counter was in superposition)

这样做很多次,绘制分布图,你会得到一些非常不同的东西:

量子游走分布

很明显,尽管表面相似,这些代码片段在做非常不同的事情。量子游走与经典随机游走不同。这种差异在某些算法中很有用。

于 2017-06-21T20:31:50.717 回答