共用方式為


多個量子位的作業

本文會檢閱用來從單一量子位狀態建置多量子位狀態的規則,並討論包含在閘道集中以形成通用多量子位量子計算機所需的網關作業。 這些工具是瞭解程式代碼中常用之 Q# 閘道集的必要工具。 對於為什麼糾纏或干擾等量子效果,讓量子運算比傳統運算更強大,它們也很重要。

單一量子位和多量子位網關

量子運算的真正能力只會隨著您增加量子位數目而變得明顯。 單一量子位具有一些反直覺功能,例如在指定時間處於多個狀態的能力。 不過,如果您在量子計算機中擁有的所有專案都是單一量子位網關,那麼計算機和一個傳統超級計算機當然會使計算能力相形見絀。

量子運算能力產生,部分原因是量子狀態向量空間的維度隨著量子位數目以指數方式成長。 這表示,雖然單一量子位可以簡單模型化,但模擬五十個量子位量子計算,可以說會推動現有超級計算機的限制。 將計算大小增加一倍,只有一個額外的量子位 會將儲存狀態所需的記憶體加倍 ,並大致 計算時間加倍。 這種計算能力的快速翻倍,是為什麼擁有相對較少量子位的量子計算機,遠超過現今、明天和以後一些計算工作最強大的超級計算機。

雙量子位狀態

如果您有兩個不同的量子位,一個在狀態中,另一個在狀態$\psi=\begin{bmatrix}\alpha\\\beta$\phi=\begin{bmatrix}\end{bmatrix}$\gamma\end{bmatrix}$\delta\\中,對應的兩個量子位狀態是由向量的張量乘積(或克朗克乘積)所指定,其定義如下

$$\psi\otimes\phi=\begin{bmatrix}\alpha\\\beta\end{bmatrix}\otimes\begin{bmatrix}\gamma\\\delta\end{bmatrix}=\begin{bmatrix}\alpha\begin{bmatrix}\gamma\\\delta\end{bmatrix}\\\beta\begin{bmatrix}\gamma\\\delta\end{bmatrix}\end{bmatrix}=\begin{bmatrix}\alpha\gamma\\\alpha\delta\\\beta\gamma\\\beta\delta\end{bmatrix}. $$

因此,假設有兩個單一量子位狀態$\psi$和 $\phi$,每個維度 2,對應的兩個量子位狀態\phi$$\psi\otimes是 4 維。 向量

$$\begin{bmatrix}\alpha_{{00}\\\alpha___{{01}\\\alpha{{10}\\\alpha{{11}\end{bmatrix}$$

如果,則表示兩個量子位上的量子狀態

$$|\alpha_{00}|^2+_{01}|^2+|\alpha|\alpha_{10}|{^2+|\alpha_{{11}|^2=1。$$

更一般而言,您可以看到 n 量子位的$量子狀態是由單位向量$v_1 \otimes\cdots\otimes$\otimes v_2 v_n維度 $2 \cdot 2 \cdot 2 2=\cdots^n$ 使用此建構來表示。$ 如同單一量子位,多個量子位的量子狀態向量會保存描述系統行為所需的所有資訊。 如需向量和張量產品的詳細資訊,請參閱 Quantum Computing 中的向量和矩陣。

雙量子位狀態的計算基礎是由一個量子位基礎狀態的張量乘積所組成。 例如,您有

$$\begin{\begin{align}00 \equiv\begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&=\begin{bmatrix}1 \\ 0 0\\ 0\\\end{bmatrix},\qquad 01 \equiv\begin{bmatrix}0 \\ 0 \end{bmatrix}\otimes\begin{bmatrix}\\ 0 1 \\\begin{bmatrix}\end{bmatrix}\\\\=\end{bmatrix}0 0 0,\\ 10\begin{bmatrix}\equiv 0 1\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&\\ amp;=\begin{bmatrix}0 0 \\\\ 1 0\end{bmatrix},\qquad 11 \equiv\begin{bmatrix}\\ 0 \\ 1 0 \\ 1=\end{bmatrix}\begin{bmatrix}\begin{bmatrix}\end{bmatrix}\otimes 0 0\\ \\ 0\\ 1 .\end{bmatrix} \end{align} $$

請注意,雖然您一律可以採用兩個單一量子位狀態的張量乘積來形成兩個量子位狀態,但並非所有的兩個量子位量子狀態都可以寫入為兩個單一量子位狀態的張量乘積。 例如,沒有狀態$\psi=\begin{bmatrix}\alpha\end{bmatrix}$\\\beta,\gamma\end{bmatrix}$$\phi=\begin{bmatrix}\\\delta因此其張量產品是狀態

$$\psi\otimes\phi=\begin{bmatrix}1/\sqrt{\\{2} 0 0 \\ \\ 1/.\sqrt{{2}\end{bmatrix}$$

這種雙量子位狀態無法寫入為單一 &量子位狀態的張量乘積,稱為引號:糾纏的狀態&商;據說這兩個量子位會 糾纏在一起。 鬆散地說,因為量子狀態不能視為單一量子位狀態的張量乘積,所以狀態保留的資訊不限於任一量子位。 相反地,資訊會以非本機的方式儲存在兩種狀態之間的相互關聯中。 這種非位置的資訊是量子運算在傳統運算上的主要區別特徵之一,對於包括量子誤差修正在內的許多量子通訊協定而言,這是不可或缺的一項功能。

測量兩個量子位狀態

測量兩個量子位狀態與單一量子位測量非常類似。 測量狀態

$$\begin{bmatrix}\alpha_{{00}\\\alpha___{{01}\\\alpha{{10}\\\alpha{{11}\end{bmatrix}$$

產生 $00$,機率$|\alpha為 _^2、$機率為 _{01}|{00}|{^2$ 的 01$$|\alpha、$機率為 _^2$ 的 10$$|\alpha,以及$機率$|\alpha為 _{11}|{10}|{^2$$ 的 11。$ $\alpha變數 _{00}、_、\alpha\alpha_{${01}{{10}和 $\alpha_{11}$ 已刻意命名,讓此連線清楚。 測量之後,如果結果為 $00$,則雙量子位系統的量子狀態已折疊且現在為

$$00 1 0 0 0 \\ \end{bmatrix}。\\ \\ \equiv\begin{bmatrix} $$

您也可以只測量兩個量子位量子狀態的一個量子位。 當您只測量兩個量子位狀態的一個量子位時,測量的影響與測量兩個量子位的影響略有不同。 這是因為整個狀態不會折疊為計算基礎狀態,而是折疊為只有一個子系統。 換句話說,測量兩個量子位狀態的一個量子位,只會將相關的子系統折疊為計算基礎狀態。

若要查看這一點,請考慮測量下列狀態的第一個量子位,其形成方式是將 Hadamard 轉換 $H$ 套用至最初設定為 quot 的 &兩個量子位:0" state:

$$H^{\otimes 2\left}( \begin{bmatrix}1 0 \end{bmatrix}\otimes\begin{bmatrix}1 \\ 0\right\end{bmatrix} )\frac{{1}{2}\begin{bmatrix}= 1 \\ & 1 amp;\\ &&&1 amp; -1 amp; -1 amp; -&&1 1 amp; -1 amp; -1 amp; -\\ &&&\end{bmatrix}\begin{bmatrix}&&&\\\\ 1 1 amp; -1 amp; -1 amp; -1 amp; -1 amp; 1 0 0\\ 0\\ 0 1 1 1 1\mapsto\begin{cases}\text{\\\end{bmatrix}\\ 結果 &}=0\frac{\end{bmatrix}\\={1}{2}\begin{bmatrix} amp; \frac{{1}{\sqrt{2}}\begin{bmatrix}1 1 0 0\text{\end{bmatrix}\\\\ 結果 }=1 &{2}}\begin{bmatrix}{1}{\sqrt{\frac{\\\\0 0\\\\ 1\\ 1 \end{bmatrix}\\\end{cases}。 $$ 這兩個結果都有 50% 的機率。 如果第一個量子位上的 0$ 交換為 1$,測量前的量子狀態不會變更$,這可以$符合這個事實。

測量第一個或第二個量子位的數學規則很簡單。 讓e_k做為 $k^{\rm 第}$四個計算基礎向量,而 $S$ 是所有$e_k$的集合,讓有問題的量子位採用 $k$ 值 $1$ 的值。$$ 例如,如果您有興趣測量第一個量子位 $,則 S$ 會包含 $e_1\equiv 10$ 和 $e_3\equiv 11$。 同樣地,如果您對第二個量子位 $S$ 感興趣,則由 e_2\equiv 01$ 和 $e_3 \equiv 11$ 所組成$。 然後測量所選量子位為 $1$ 的機率是針對狀態向量 $\psi$

$$P(\text{result}=1)=\sum_{e_k set } S}\psi^\dagger e_k e_k\text{^\dagger\psi. $$

注意

本文使用 小端 格式來標記計算基礎。 以小到小數字數格式,最不重要的位會先行。 例如,以小端格式表示數位四,以位 001 的字串表示。

由於每個量子位測量只能產生 $0 或 $1$,因此測量 $0$$ 的機率只是 $1-P(\text{結果}=1)。$ 這就是為什麼您只需要測量 1$ 機率的$公式。

這類量測對狀態的動作可以用數學方式表示為

$$\psi\mapsto\frac{\sum_{e_k \text{ 在集合 } S} e_k e_k^\dagger\psi}{\sqrt{P(\text{結果}=1)}} 中。 $$

謹慎的讀者可能會擔心分母為零時會發生什麼事。 雖然這類狀態未定義,但您不需要擔心這類可能性,因為機率為零!

如果您採用 $\psi$ 上述的統一狀態向量,並有興趣測量第一個量子位,則

$$P(\text{第一個量子位}=1) (\psi^ e_1) = (e_1^)+(^\dagger\dagger e_3)(\psie_3\dagger\psi\dagger\psi^)=|e_1^\dagger\psi|^2+|e_3^\dagger\psi|^2。 $$

請注意,這隻是預期測量結果 $10$ 和 11$ 的兩個機率總和$。 在我們的範例中,這會評估為

$$\frac{{1}{4}\left|\begin{bmatrix}0&0&1&0 1 1 1 1\\\end{bmatrix}\right|^2+{4}\left|\begin{bmatrix}\frac{1}{0&\\\\\end{bmatrix}\begin{bmatrix}0&0&1 1 1 1 1\right|\end{bmatrix}\\^2。{2}=\frac{{1}{\\\\\end{bmatrix}\begin{bmatrix} $$

這完全符合我們的直覺。 同樣地,第一個量子位之後的狀態會測量為 $1$ ,可以寫入為

$$\frac{\frac{}{2}e_1+\frac{e_3}{2}}{\sqrt{\frac{1}{2}}}=\frac{1}{\sqrt{2}}\begin{bmatrix} 0 0\\\\ 1 1\\\end{bmatrix}$$

再次根據我們的直覺。

雙量子位作業

如同在單一量子位案例中,任何一元轉換都是量子位的有效作業。 一般而言,n 量子位的$一元轉換是大小$為 2^n \times 2^n 的矩陣 $U$(使其在大小 $2^n$$ 的向量上作用),因此 U$^ U^=\dagger${-1}。$ 例如,CNOT (controlled-NOT) 網關是常用的雙量子位網關,並以下列單位矩陣表示:

$$\operatorname{CNOT}=\begin{bmatrix} 1\ 0\ 0\ \\ 0\ 0\ 1\ 0\ \\ 0\ 0\ 0\ 0\ 1 0\ 0\ 1 \\ \ 0 \end{bmatrix}$$

我們也可以在這兩個量子位上套用單一量子位網關,以形成雙量子位網關。 例如,如果您套用閘道

$$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}$$

$$\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}$$

分別對第一個和第二個量子位,這相當於套用其張量乘積所提供的雙量子位單位: $$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}\otimes\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}=\begin{bmatrix} ae\ af\ be\ bf \\ ag\ ah\ bg\ bh \\ ce\ cf\ de\ df \\ cg\ ch\ dg\ dh .\end{bmatrix}$$

因此,您可以採用一些已知單一量子位網關的張量乘積來形成雙量子位網關。 兩個量子位網關的一些範例包括 $H \otimes H$、 $X \otimes\mathbf{1}$和 $X \otimes Z$。

請注意,雖然任何兩個單一量子位網關會採用其張量乘積來定義兩個量子位網關,但相反則不是真的。 並非所有的雙量子位網關都可以寫入為單一量子位網關的張量乘積。 這樣的門被稱為 糾纏 的門。 糾纏門的其中一個範例是 CNOT 閘道。

受控制閘道背後的直覺可以一般化為任意閘道。 一般而言,受控網關是作為身分識別的網關,除非特定量子位是 $1$。 您表示以_x(U)$標記的量子位為 x 的量子位$\Lambda$$所控制的受控制單位。 $\Lambda例如 _0(U) e_{{1}\otimes{\psi}=e_{1}\otimes U{\psi}$ 和 $\Lambda_0(U) e_{\psi}={{0}\otimese_{{0}\otimes{\psi}$,其中 $e_0$ 和 e_1$ 是對應值 $0 $$ 和 $1$ 之單一量子位的計算基礎向量。 例如,請考慮下列受$控制 Z$閘道,然後您可以將此表示為

$$\Lambda_0(Z)=\begin{bmatrix}1&0&0&0 0\\&1&0&0 0\\&0&1&0 0\\&0&0&-1 \end{bmatrix}=(\mathbf\mathbf{1}\otimes{ H)\operatorname{CNOT}(\mathbf{1}\otimesH)。 $$

以有效率的方式建置受控單位是一項重大挑戰。 實作此作業最簡單的方式,需要形成基本閘道受控制版本的資料庫,並以其受控制對等專案取代原始單一作業中的每個基本網關。 這通常是相當浪費和聰明的見解,通常可以用來只用受控制的版本取代幾個大門,以達到相同的影響。 基於這個理由,如果已知優化的手動微調版本,架構提供執行控制方法的天真方法,或允許用戶定義一元的受控制版本。

蓋茨也可以使用傳統資訊來控制。 例如,傳統控制的非閘道只是一般非閘道,但只有在傳統位是 $1$ 而不是量子位時才會套用。 從這個意義上說,傳統控制的網關可以視為量子程序代碼中的 if 語句,其中閘道只會在程式代碼的一個分支中套用。

如同在單一量子位案例中,如果任何 $4 4\times$ 個單一矩陣可由網關乘積從此集合到任意精確度,則雙量子位網關集是通用的。 通用閘道集的其中一個範例是 Hadamard 閘道、T 閘道和 CNOT 閘道。 藉由取得這些閘道的產品,您可以在兩個量子位上近似任何一元矩陣。

多量子位系統

我們會遵循在雙量子位案例中探索的完全相同模式,以從較小的系統建置多量子位量子狀態。 這類狀態是藉由形成較小狀態的張量產品所建置。 例如,請考慮在量子計算機中編碼位字串 $1011001$ 。 您可以將此編碼為

$$1011001 \equiv0 1 1 \end{bmatrix}\otimes\begin{bmatrix} \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1\begin{bmatrix} \end{bmatrix}\otimes0 \\ 1\begin{bmatrix}\otimes\end{bmatrix} 0 1 \\ 0 \\ \end{bmatrix}\otimes\begin{bmatrix} 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 。\end{bmatrix}\\\begin{bmatrix} $$

量子閘道的運作方式完全相同。 例如,如果您想要將 $X$ 閘道套用至第一個量子位,然後在第二個和第三個量子位之間執行 CNOT,您可能會將此轉換表示為

\begin{\begin{align}&放大器;(X \otimes\operatorname{CNOT}_{{12}\otimes\mathbf{1}\otimes \mathbf{\mathbf{1}\otimes \mathbf{\otimes\mathbf{1} \mathbf{\mathbf{1}) \begin{bmatrix} 0 \\ 1 1 \end{bmatrix}\otimes\begin{bmatrix} \\ 0 0 \\\begin{bmatrix} \end{bmatrix}\otimes1\begin{bmatrix} \end{bmatrix}\otimes0 \\\begin{bmatrix} \end{bmatrix}\end{bmatrix}\otimes\\\otimes\\\begin{bmatrix} 1 0 1 0 0 0 \end{bmatrix}\otimes\\\begin{bmatrix} 1 \end{bmatrix}\\&\qquad\qquad\equiv0011001. \end{align}

在許多量子位系統中,通常需要配置和解除分配量子位,做為量子計算機的暫存記憶體。 這類量子位據說是 輔助的。 根據預設,您可以假設量子位狀態會在配置時初始化為 $e_0$ 。 您可以進一步假設它會在解除分配之前再次傳回給 $e_0$ 。 這個假設很重要,因為如果輔助量子位在解除分配時與另一個量子位緩存器糾纏,則解除分配的程式將會損害輔助量子位。 基於這個理由,您一律假設這類量子位在發行之前會還原為其初始狀態。

最後,雖然需要將新的閘道新增至我們的閘道集,以達到兩個量子位量子計算機的通用量子運算,但在多量子位案例中不需要引進新的閘道。 網關 $H$、 $T$ 和 CNOT 會在許多量子位上形成通用閘道集,因為任何一般單位轉換都可以分成兩個量子位旋轉的一系列。 然後,您可以利用針對兩個量子位案例開發的理論,並在您有許多量子位時再次使用它。

注意

雖然到目前為止使用的線性代數表示法當然可以用來描述多量子位狀態,但隨著您增加狀態的大小,它變得越來越繁瑣。 例如,長度為 7 位字串的結果數據行向量是 $128$ 維度,其會使用先前非常繁瑣的表示法來表示。 相反地, 使用 Dirac 表示法,這是簡化量子狀態表示法的符號速記。 如需詳細資訊,請參閱 Dirac 表示法