2017-06-21 34 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

相關問題