2012-03-23 52 views
1

我想熟悉量子計算的基礎知識。如何在我的計算機上實現一組量子位?

熟悉它的好方法是編寫非常基本的虛擬量子計算機。 從我所瞭解的情況來看,實現單個量子位的努力不能簡單地被複制來實現兩個量子位系統。但我不知道如何實現一個量子位。

如何實現量子位? 如何實現一組量子位?

回答

0

我實際上並不知道答案,但開始閱讀關於量子位的一個有趣的地方是this article。它沒有詳細量子糾纏是如何工作的描述,但它暗示了涉及的複雜性:

如果是這樣的事情多麼複雜只能與兩個量子比特,如何 複雜的將它獲得3或4得到,或100?事實證明,當繪製爲具有(4^N-1)維的空間中的點時,只能完全定義N量子位量子計算機的狀態 。這意味着 我們需要4^N個古老的時尚經典數字來模擬它。

請注意,這是最大的空間複雜度,例如對於15個量子位約爲10億個數(2^30 = 4^15)。它沒有提到模擬的時間複雜性。

0

@Qwertie引用的文章是一個很好的介紹。如果你想在你的計算機上實現這些功能,你可以使用模擬器libquantum,它可以在C庫中實現複雜的量子操作。你可以看看this example看看使用代碼是什麼樣的。

0

這些信息實際上存儲在不同Qbits之間的交互中,所以沒有實現1 Qbit不會轉換爲使用多個Qbit。我倒是覺得另一種方式,你可以玩就是用像QCL或谷歌QCP http://qcplayground.withgoogle.com/#/home現有的語言玩弄

1

示例代碼

如果你想從簡單的東西,但工作開始,你可以玩與此basic quantum circuit simulator on jsfiddle(約2千行左右,但大部分是UI的東西[繪圖和點擊]和數學的東西[定義複數和矩陣])。

國家

量子計算機的狀態是一套複雜的權重,稱爲amplitudes。每個可能的經典狀態都有一個幅度。在量子位的情況下,傳統狀態僅僅是各種狀態的正常位可以英寸

舉例來說,如果你有三個位,那麼你就需要一個複雜的重量爲000001010011100,101110111狀態。

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-範數的複數列表,操作是酉矩陣,測量狀態的概率只是其平方的幅度。

你可能需要考慮其他的事情:

  • 你想要什麼類型的操作,包括?
  • 1-qubit操作是2x2矩陣,3-qubit操作是8x8矩陣。當將其應用於3-qubit狀態的單個量子位時,如何將1-qubit操作轉換爲8x8矩陣? (使用Kronecker Product。)
  • 您可以使用哪些技巧來加速模擬?例如,如果只有少數狀態不爲零,或者如果量子位沒有糾纏,則不需要執行完整的矩陣乘法。
  • 用戶如何告訴模擬該做什麼?你怎麼能代表用戶正在發生的事情?有很多數字流過...
相關問題