揭秘量子計算原理

揭秘量子計算原理
「我想我可以有把握地說,沒有人理解量子力學。」——理查‧費曼

量子運算這個主題一直讓科技作家和記者著迷。它的計算潛力和複雜性賦予了它一定的神秘光環。很多時候,專題文章和資訊圖表詳細描述了該行業的各種前景,而幾乎沒有觸及其實際應用:這可能會誤導不太專心的讀者。

科普文章省略了量子系統的描述,並做出以下陳述:

常規位元可以是 1 或 0,但量子位元可以同時是 1 和 0。

如果你很幸運(我不確定),你會被告知:

量子位元處於「1」和「0」之間的疊加狀態。

這些解釋似乎都不可信,因為我們正在嘗試使用在非常傳統的世界中開發的語言來發展量子力學現象。要清楚解釋量子計算的原理,就需要使用另一種語言——數學。 

在本教程中,我將介紹建模和理解量子計算系統所需的數學工具,以及如何說明和應用量子計算的邏輯。另外,我會舉一個量子演算法的例子,告訴你它相對於傳統電腦的優勢是什麼。

我會盡力用清晰的語言解釋這一切,但我仍然希望本文的讀者對線性代數和數字邏輯有基本的了解(線性代數涵蓋 這裡,關於數位邏輯- 這裡). 

首先,讓我們回顧一下數位邏輯的原理。它是基於使用電路來進行計算。為了使我們的描述更加抽象,讓我們將電線的狀態簡化為“1”或“0”,這將對應於“開”或“關”狀態。透過以一定順序排列電晶體,我們將建立所謂的邏輯元件,這些元件採用一個或多個輸入訊號值,並根據布林邏輯的某些規則將它們轉換為輸出訊號。

揭秘量子計算原理

常見邏輯閘及其狀態表

基於這些基本元素的鏈,可以創建更複雜的元素,並且基於更複雜元素的鏈,我們最終可以期望獲得中央處理器的類似物。

正如我之前提到的,我們需要一種以數學方式表示數字邏輯的方法。首先,我們來介紹一下數學傳統邏輯。使用線性代數,值為“1”和“0”的經典位元可以表示為兩個列向量:
揭秘量子計算原理
左邊的數字是 狄拉克記數法 向量。透過以這種方式表示我們的位,我們可以使用向量變換對位上的邏輯運算進行建模。請注意:雖然在邏輯閘中使用兩位可以執行多種運算(與、非、異或等),但使用一位時只能執行四種運算:恆等轉換、求反、計算常數“0”和常數“1”的計算。恆等轉換時,該位保持不變,求反時,位值變為相反(從“0”到“1”或從“1”到“0”),併計算常數“1”或“0”將該位元設為“1”或“0”,無論其先前的值為何。
揭秘量子計算原理

身分 身份轉變
在否定 否定
常數-0 常數“0”的計算
常數-1 常數“1”的計算

基於我們提出的新的位元表示,使用向量變換對對應位元執行操作非常容易:

揭秘量子計算原理

在進一步討論之前,讓我們先來看看這個概念 可逆計算,這簡單地意味著為了確保操作或邏輯元素的可逆性,需要根據輸出訊號和所使用的操作的名稱來確定輸入訊號值的清單。由此可見,恆等變換和求反是可逆的,但計算常數「1」和「0」的操作則不可逆。謝謝 單一性 量子力學、量子電腦僅使用可逆運算,因此這就是我們將重點關注的內容。接下來,我們將不可逆元素轉換為可逆元素,以使它們能夠被量子電腦使用。

張量積 各位可以由許多位表示:
揭秘量子計算原理
現在我們已經掌握了幾乎所有必要的數學概念,讓我們繼續討論第一個量子邏輯閘。這是營運商 碳納米管,或受控非(NOT),這在可逆和量子計算中非常重要。 CNOT 元素適用於兩位並傳回兩位。第一位指定為「控制」位,第二位指定為「控制」位。如果控制位元設定為“1”,則控制位元會改變其值;如果控制位設定為“0”,則控制位不會改變。
揭秘量子計算原理
此運算子可以表示為下列變換向量:
揭秘量子計算原理
為了示範到目前為止我們所介紹的所有內容,我將向您展示如何在多個位元上使用 CNOT 元素:
揭秘量子計算原理
總結已經說過的內容:在第一個範例中,我們將 |10⟩ 分解為其張量積的一部分,並使用 CNOT 矩陣來獲得該積的新對應狀態;然後我們根據前面給出的 CNOT 值表將其分解為 |11⟩。

因此,我們已經記住了所有有助於我們理解傳統計算和普通位的數學規則,我們最終可以轉向現代量子計算和量子位元。

如果您已經讀到這裡,那麼我有個好消息給您:量子位元可以輕鬆地用數學方式表達。一般來說,如果一個經典位元(cbit)可以設定為|1⟩或|0⟩,則該量子位元只是處於疊加狀態,並且在測量之前可以同時為|0⟩和|1⟩。測量後,它會折疊成 |0⟩ 或 |1⟩。換句話說,一個量子位元可以根據以下公式表示為 |0⟩ 和 |1⟩ 的線性組合:
揭秘量子計算原理
哪裡 一個₀ и 一個₁ 分別表示幅度 |0⟩ 和 |1⟩。這些可以被認為是“量子機率”,它代表一個量子位元在測量後塌陷到其中一種狀態的機率,因為在量子力學中,處於疊加狀態的物體在固定後塌陷到其中一種狀態。讓我們擴展這個表達式並得到以下結果:
揭秘量子計算原理
為了簡化我的解釋,這是我將在本文中使用的表示形式。

對於這個量子位,崩潰到該值的機會 一個₀ 測量後等於|a₀|²,以及崩潰到該值的機會 a₁ 等於 |a₁|²。例如,對於以下量子位元:
揭秘量子計算原理
塌陷為「1」的幾率等於 |1/ √2|²,即 50/50,即 XNUMX/XNUMX。

由於在經典系統中,所有機率總和必須為 0(對於完整的機率分佈),我們可以得出結論,幅度 |1⟩ 和 |XNUMX⟩ 的絕對值的平方必須加起來為 XNUMX。根據這些資訊,我們可以製定以下等式:
揭秘量子計算原理
如果您熟悉三角學,您會注意到這個方程式對應於畢達哥拉斯定理(a²+b²=c²),也就是說,我們可以將量子位元的可能狀態圖形化表示為單位圓上的點,即:
揭秘量子計算原理
邏輯運算子和元素應用於量子位元的方式與經典位元的情況相同 - 基於矩陣變換。到目前為止我們回憶過的所有可逆矩陣運算符,特別是 CNOT,都可以用來處理量子位元。此類矩陣運算符允許您使用量子位元的每個幅度,而無需測量和折疊它。讓我舉一個在量子位元上使用否定運算子的範例:
揭秘量子計算原理
在我們繼續之前,讓我提醒您,幅度值 a₀ 和 a₁ 實際上是 複數,因此量子位元的狀態可以最準確地映射到三維單位球上,也稱為 跳蚤球:
揭秘量子計算原理
然而,為了簡化解釋,我們將在這裡限制為實數。

似乎是時候討論一些僅在量子計算背景下才有意義的邏輯元素了。

最重要的運算符之一是「Hadamard 元素」:它需要處於「0」或「1」狀態的位,並將其置於適當的疊加狀態,有50% 的機會折疊成「1」或「0 ”測量後。 
揭秘量子計算原理
請注意,Hadamard 運算子的右下角有一個負數。這是因為應用運算子的結果取決於輸入訊號的值:- |1⟩ 或 |0⟩,因此計算是可逆的。

Hadamard 元素的另一個重要點是它的可逆性,這意味著它可以採用適當疊加的量子位元並將其轉換為 |0⟩ 或 |1⟩。
揭秘量子計算原理
這非常重要,因為它使我們能夠在不確定量子位元狀態的情況下從量子態轉換,因此不會使其崩潰。因此,我們可以基於確定性原理而不是機率性原理來建立量子計算。

僅包含實數的量子算子是它們自己的相反數,因此我們可以將算子應用於量子位元的結果表示為狀態機形式的單位圓內的變換:
揭秘量子計算原理
因此,上圖中所示狀態的量子位元在應用哈達瑪運算後,將轉換為對應箭頭所示的狀態。同樣,我們可以建構另一個狀態機,該狀態機將使用如上所示的否定運算子(也稱為泡利否定運算子或位元反轉)來說明量子位元的轉換,如下所示:
揭秘量子計算原理
為了在我們的量子位元上執行更複雜的操作,我們可以連結多個運算子或多次應用元素。基於串行變換的範例 量子電路表示 如下所示:
揭秘量子計算原理
也就是說,如果我們從位元|0⟩ 開始,應用位元反轉,然後進行Hadamard 運算,然後進行另一個位元反轉,再次進行Hadamard 運算,最後進行位元反轉,我們最終得到由on 給出的向量鏈條的右側。透過將不同的狀態機分層,我們可以從 |0⟩ 開始,追蹤與每個轉換相對應的彩色箭頭,以了解它是如何運作的。
揭秘量子計算原理
既然我們已經走到這一步了,是時候考慮一個量子演算法了,即: Deutsch-Jozsa 演算法,並展示其相對於經典計算機的優勢。值得注意的是,Deutsch-Jozsa 演算法是完全確定性的,即它 100% 的時間返回正確答案(與許多其他基於量子位元機率定義的量子演算法不同)。

讓我們想像一下,您有一個黑盒子,其中包含一位函數/運算符(請記住- 對於一位,只能執行四種操作:恆等轉換、求反、常數“0”的求值和常數“1”的求值”)。盒子裡到底執行什麼功能?您不知道是哪一個,但您可以根據需要檢查輸入值的多種變體並評估輸出結果。

揭秘量子計算原理
您需要透過黑盒子運行多少個輸入和輸出才能找出正在使用哪個功能?想一想這個問題。

對於經典計算機,您需要進行 2 次查詢才能確定要使用的函數。例如,如果輸入“1”產生“0”輸出,那麼很明顯,要么使用計算常數“0”的函數,要么使用求反函數,之後您將必須更改輸入訊號的值到“0”,看看出口處會發生什麼事。

對於量子計算機,還需要兩個查詢,因為您仍然需要兩個不同的輸出值來精確定義應用於輸入值的函數。然而,如果你稍微重新表述一下這個問題,你會發現量子電腦仍然具有很大的優勢:如果你想知道所使用的函數是常數還是變量,量子電腦將具有優勢。

如果輸入訊號的不同值在輸出處產生不同的結果(例如,恆等轉換和位元反轉),並且如果無論輸入值如何輸出值都不會改變,則框中使用的函數是可變的,則函數是常數(例如,計算常數“1”或計算常數“0”)。

使用量子演算法,您可以僅根據一次查詢來確定黑盒子中的函數是常數還是變數。但在我們詳細了解如何做到這一點之前,我們需要找到一種在量子電腦上建構每個函數的方法。由於任何量子算子都必須是可逆的,我們立即面臨一個問題:計算常數「1」和「0」的函數不是可逆的。

量子計算中使用的常見解決方案是添加一個額外的輸出量子位,該輸出量子位元會返回函數接收到的任何輸入值。 

要: 後:
揭秘量子計算原理 揭秘量子計算原理

這樣,我們就可以僅根據輸出值來確定輸入值,並且函數變得可逆。量子電路的結構需要額外的輸入位。為了發展相應的算子,我們假設附加輸入量子位元設定為|0⟩。

使用我們之前使用的相同量子電路表示,讓我們看看如何使用量子運算子來實現四個元素(恆等變換、求反、常數「0」的求值和常數「1」的求值)中的每一個。 

例如,您可以這樣實作計算常數「0」的函數:

常數“0”的計算:
揭秘量子計算原理
在這裡我們根本不需要運算子。第一個輸入量子位元(我們假設為 |0⟩)返回相同的值,第二個輸入值返回自身 - 像往常一樣。

對於計算常數“1”的函數,情況略有不同:

常數“1”的計算:
揭秘量子計算原理
由於我們假設第一個輸入量子位元始終設定為 |0⟩,因此應用位元反轉運算子的結果是它始終在輸出處產生一個 XNUMX。和往常一樣,第二個量子位元在輸出處給出自己的值。

當顯示身分轉換運算子時,任務開始變得更加複雜。操作方法如下:

相同的變換:
揭秘量子計算原理
這裡使用的符號表示 CNOT 元素:頂線表示控制位,底線表示控制位。讓我提醒您,當使用 CNOT 運算子時,如果控制位等於 |1⟩,則控制位的值會發生變化,但如果控制位等於 |0⟩,則保持不變。由於我們假設頂線的值始終等於 |0⟩,因此它的值始終分配給底線。

我們以類似的方式處理否定運算子:

否定:
揭秘量子計算原理
我們只需反轉輸出線末端的位元即可。

現在我們已經有了初步的了解,讓我們看看量子電腦相對於傳統電腦的具體優勢,即僅使用一個查詢來確定隱藏在黑盒子中的函數的恆定性或可變性。

為了在單一請求中使用量子計算來解決這個問題,有必要在將輸入量子位元傳遞給函數之前將它們置於疊加狀態,如下所示:
揭秘量子計算原理
Hadamard 元素被重新應用於函數的結果,以打破量子位元的疊加並使演算法具有確定性。我們在狀態 |00⟩ 下啟動系統,如果所應用的函數是常數,則得到結果 |11⟩,原因我稍後會解釋。如果黑盒內的函數是可變的,則測量後系統傳回結果|01⟩。

為了理解本文的其餘部分,讓我們來看看我之前展示的插圖:
揭秘量子計算原理
透過使用位元反轉運算符,然後將 Hadamard 元素應用於等於 |0⟩ 的兩個輸入值,我們確保它們轉換為 |0⟩ 和 |1⟩ 的相同疊加,如下所示:
揭秘量子計算原理
使用將此值傳遞給黑盒函數的範例,很容易證明兩個常數值函數都輸出 |11⟩。

常數“0”的計算:
揭秘量子計算原理
類似地,我們看到計算常數「1」的函數也產生 |11⟩ 作為輸出,即:

常數“1”的計算:
揭秘量子計算原理
請注意,輸出將為 |1⟩,因為 -1² = 1。

透過同樣的原理,我們可以證明,當使用這兩個變數函數時,我們總是會在輸出中得到|01⟩(假設我們使用相同的方法),儘管一切都有點複雜。

相同的變換:
揭秘量子計算原理
由於 CNOT 是一個雙量子位元運算符,因此它不能表示為簡單的狀態機,因此需要根據兩個輸入量子位元的張量積以及與 CNOT 矩陣的乘法來定義兩個輸出訊號,如前所述:
揭秘量子計算原理
透過這種方法,我們也可以確認如果否定函數隱藏在黑盒子中,則接收到輸出值|01⟩:

否定:
揭秘量子計算原理
因此,我們剛剛演示了一種情況,其中量子計算機明顯比傳統計算機更有效率。

下一步是什麼?

我建議我們到這裡就結束了。我們已經做得很好了。如果您已經理解了我所介紹的所有內容,我想您現在已經很好地理解了量子計算和量子邏輯的基礎知識,以及為什麼量子演算法在某些情況下比傳統計算更有效率。

我的描述很難被稱為量子計算和演算法的全面指南- 相反,它是對數學和符號的簡要介紹,旨在消除讀者對科普來源強加的主題的想法(說真的,很多人真的無法理解)情況!)。我沒有時間討論很多重要的主題,例如 量子比特的量子糾纏、幅度值 |0⟩ 和 |1⟩ 的複雜度以及布洛赫球體變換過程中各種量子邏輯元件的功能。

如果你想系統化和結構化你關於量子電腦的知識, 緊急地 我建議你去閱讀 《量子演算法簡介》 Emma Strubel:儘管數學公式豐富,但這本書更詳細地討論了量子演算法。

來源: www.habr.com

添加評論