David Deutsch
圖片來自 Wiki
給你 52 張撲克牌,要你想個方法,能夠快速地知道這組撲克牌的顏色分不是第一種情況:全部都是黑色或紅色,或是第二種情況:有一半是紅色,另一半是黑色
資工人習慣從 0 開始計數,第 0 張就是平常習慣說第一張的意思當我們輸入 0 或是 1 給這個函數 $f$ 時, $f$ 會輸出 0 或是 1,寫成數學形式就是: \begin{split} f:\{0,1\}\rightarrow\{0,1\}\ \end{split} 我們姑且不論這函數究竟長什麼樣子,這函數的輸入與輸出結果有以下四種
單變數二進位函數的四種可能,前面兩種稱作 constant,後面兩種稱作 balanced
Deutsch algorithm 電路圖
注意,從這邊開始,y 是指圖中第二個 qubit 在 U 之前的量子態,而非前面函數輸出的結果(撲克牌的顏色)先別看到圖就怕。首先,準備兩個 qubits,其中第二個 qubit 做 X gate 操作變成 $|1\rangle$,接著兩個 qubits 都做 H gate 操作,做 $U_f$ 操作,這邊先不細談 $U_f$ 究竟長什麼樣子,僅需知道 $U_f$ 會輸出什麼結果。 經過 $U_f$ 的操作後,第一個 qubit 的狀態不變,但第二個 qubit 的狀態會是 $y$ 與 $f(x)$ 的二進位加法($y\oplus f(x)$)。最後,對第一個 qubit 做 H gate 後測量,如果量測出來的值是 0,代表這函數為 "constant",反之,是 1 的話就是 "balanced"。因此,量子電腦的解法只需要一個步驟就能得知函數是哪一種。 有興趣了解這電路中每一步怎麼運作,可以看下一篇文章。 ## 範例 最後,我們用一個簡單的例子帶你使用 DJ 演算法,同時能更了解 $U_f$ 是什麼,回到最一開始舉例的函數: \begin{split} f(x)=x \end{split} 量子電腦會如何判斷這函數是屬於哪一種。從前面的介紹,我們知道 Deutsch 演算法最基本會長這樣: