2017-06-21 33 views
4

我只知道你可以玩量子计算的地方是google quantum playgroundibm's quantum experience。虽然第一个使用qscript和第二个qasm语言(这很容易学习),但它们的用法与常规编程(除少数特定功能外)没有多大区别。以下是维基百科的解释:qubit和bit之间的差异可以用一个简单的代码示例来解释吗?

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

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

哪个或多或少明确。但如何用代码示例显示?

+2

您可能会发现[我的拖放量子电路模拟器Quirk](http://algassert.com/quirk)有用。 –

回答

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 

如果你运行这段代码很多次,并进行了直方图,其结果将是大约Binomial distribution

Classical Binomial distribution

现在这里是一些伪代码,基本上是一样的东西,except the coin is replaced by a 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) 

做了很多次,绘制出的分布,你会得到something very different

quantum walk distribution

显然,这些代码片段,尽管他们表面的相似性做的非常不同的事情。量子行走不像古典随机游走一样。这种差异在一些算法中很有用。

+1

广泛的解释。谢谢。我会花几个时间来运行它几次,并考虑它。 – npocmaka

相关问题