【科普】量子計算通識-7-Deutsch算法解析

歡迎關注我的專欄( つ•̀ω•́)つ【人工智能通識】
更多相關文章請點擊【量子計算通識】
上一篇:【科普】量子計算通識-6


這一篇我們來看一下多伊奇算法是怎麼推導出來的。

多伊奇問題

我們用x\in \{0,1\}^n表示x是由0或1組成的任意n位二進制數,比如n=3位的011、n=7位的1010011。

我們又知道對於單比特的四種操作可以分爲兩類:

  • 常量操作constant:等0,等1;
  • 平衡操作balanced:不變,翻轉。

更多參考這裏:【科普】量子計算通識-2-四種操作與乘積態

綜合上面兩個情況,我們就可以描述爲,\forall x \in \{0,1\}^n,對於0和1組成的任意n位長度二進制數的兩種操作:

  • Constant:
    f(x)=0\quad或\quad f(x)=0
  • Balanced:
    50\%情況 $f(x)=0\quad 另外50\%情況 f(x)=1

多伊奇的問題就是,如果有一個符合以上條件的未知函數,那麼如何嘗試最少且足夠的次數,來確定它是Constant操作還是Balanced操作。

經典計算機解法

n位2進制最多表示2^n個數字,比如2位的00、01、10、11共有2^2=4種,可以表示十進制的0 ~ 3;同樣3位的000、001、010、011、100、101、110、111共可以表示0 ~ 7,即2^3=8種;同樣8位可以表示2^8=256

所以,對於經典計算機來說,需要嘗試2^n*\frac{1}{2}+1次(也就是一半多一次),才能確保足夠可以判斷未知函數屬於哪一種,因爲前提已經承諾,如果是Balanced類型,那麼一半多一次恰好剛剛超過50%,如果這麼多情況的結果都是相同的,那麼它就是Constant類型操作(因爲Constant類型操作所有結果都一樣),否則就是Balanced類型操作。

這就好比一共8張卡片,要麼都一樣顏色,要麼黑白各一半。這時我們只要最多翻開5張,就能知道屬於那種情況了。

量子計算解法

如前面文章所述,在量子計算機中,只需要一次嘗試就可以做出準確判斷。當然我們要進行一些特殊處理。

圖中的符號\Psi讀作|p’sai|

首先我們需要設計一個電路U,它包含我們需要進行判斷的函數f(x),可以說是我們在f(x)的基礎上又增加了一些處理使其成爲函數U

U的作用就是可以傳入一些量子比特,然後輸出另外一些比特量子比特,並且可以讓我們從輸出的量子比特中一眼就可以看出其中f(x)是Constant操作還是Balanced操作。

聽上去這個U電路一定很難設計,實際卻是不難,它只要滿足能夠把|x>|y映射成爲|x>|y\oplus f(x)>即可:

U:|x>|y>\Rightarrow|x>|y\oplus f(x)>

這裏的圓圈加號\oplus的意思是異或,即:

0\oplus 0=0

1\oplus 1=0

1\oplus 0=1

0\oplus 1=1

異或即相同得0,相異得1。這裏有些有趣的規律:

  • 異或看起來和CNOT門很像,第一位是0的結果和第二位相同,第一位是1的結果和第二位相反。
  • 兩位順序顛倒也能成立,第二位是0的時候,結果和第一位相同,第二位是1的時候,結果和第一位相反。

關於CNOT門,參照【科普】量子計算通識-3-CNOT可控非門

總之我們先記住U操作就是把輸入的兩個量子位變成輸出的另外兩個量子位,輸出中的後一位是第二個輸入位和f函數輸入第一位的異或結果:

U:|x>|y>\Rightarrow|x>|y\oplus f(x)>

實際上我們只要根據輸出的|x_1>就可以判斷出f(x)屬於Constant還是Balanced操作,下面我們進行推理演算n=1即2個比特位的情況。

計算Hadamard之後的\Psi_1

如圖,我們輸入兩個量子比特,一個0一個1,所以
\Psi_0=|0>|1>

下面來計算兩個比特分別經過Hadamard門之後的\Psi_1

關於哈達瑪門,相當於乘以一個特殊矩陣,即H=\frac{1}{\sqrt{2}}\begin{pmatrix}1,1\\1,-1\end{pmatrix},即|0>變爲\frac{|0>+|1>}{\sqrt{2}},即|1>變爲\frac{|0>-|1>}{\sqrt{2}},更多請參照【科普】量子計算通識-5-哈達瑪門與單位圓狀態機

\begin{align} \Psi_1&=H|0>\otimes H|1>=(\frac{|0>+|1>}{\sqrt{2}})\otimes (\frac{|0>-|1>}{\sqrt{2}})\\ &=\frac{1}{2}(|0>+|1>)(|0>- |1>) \end{align}

計算U之後的\Psi_2

針對函數U,由於我們有:

U:|x>|y>\Rightarrow|x>|y\oplus f(x)>

所以經過U|x>|y>替換爲|x>|y\oplus f(x)>之後的\Psi_1就變爲\Psi_2

\begin{align} \Psi_1&=\frac{1}{2}(|0>+|1>)(|0>-|1>)\\ &=\frac{1}{2}(|0>|0>-|0>|1>+|1>|0>-|1>|1>)\\ \end{align}

\begin{align} \Psi_2&=U:\Psi_1\\ &=\frac{1}{2}(|0>|0\oplus f(0)>-|0>|1\oplus f(0)>+|1>|0\oplus f(1)>-|1>|1\oplus f(1)>)\\ &=\frac{1}{2}(|0>(|0\oplus f(0)>-|1\oplus f(0)>)+|1>(|0\oplus f(1)>-|1\oplus f(1)>)) \end{align}

我們注意到按照約定,f(0)只能取0或1,那麼

f(0)=0時,(-1)^{f(0)}=1,並且有:
|0\oplus f(0)>-|1\oplus f(0)>=|0\oplus 0>-|1\oplus 0>=|0>-|1>=(-1)^{f(0)}(|0>-|1>)

f(0)=1時,(-1)^{f(0)}=-1,並且有:
|0\oplus f(0)>-|1\oplus f(0)>=|0\oplus 1>-|1\oplus 1>=|1>-|0>=(-1)^{f(0)}(|0>-|1>)

結合這兩種情況,一定有:
|0\oplus f(0)>-|1\oplus f(0)>=(-1)^{f(0)}(|0>-|1>)

同樣的道理,f(1)也可以等於0或1,所以也會有:
|0\oplus f(1)>-|1\oplus f(1)>=(-1)^{f(1)}(|0>-|1>)

把這兩個式子帶入\Psi_2得到:

\begin{align} \Psi_2&=\frac{1}{2}(|0>(|0\oplus f(0)>-|1\oplus f(0)>)+|1>(|0\oplus f(1)>-|1\oplus f(1)>))\\ &=\frac{1}{2}((-1)^{f(0)}|0>(|0>-|1>)+(-1)^{f(1)}|1>(|0>-|1>))\\ &=\frac{1}{2}((-1)^{f(0)}|0>+(-1)^{f(1)}|1>)(|0>-|1>)\\ \end{align}

計算U之後的\Psi_3

\Psi_2乘以Hadamard矩陣,即|0>變爲\frac{|0>+|1>}{\sqrt{2}},即|1>變爲\frac{|0>-|1>}{\sqrt{2}},這就得到\Psi_3。注意如圖所示,是整體進行操作而不是每一位分別Hadamard操作:

\begin{align} \Psi_3&=\frac{1}{2}((-1)^{f(0)}|0>+(-1)^{f(1)}|1>)(|0>-|1>)\\ &=\frac{1}{2}((-1)^{f(0)}\frac{|0>+|1>}{\sqrt{2}}+(-1)^{f(1)}\frac{|0>-|1>}{\sqrt{2}})(|0>-|1>)\\ &=((-1)^{f(0)}\frac{|0>+|1>}{2}+(-1)^{f(1)}\frac{|0>-|1>}{2})(\frac{|0>-|1>}{\sqrt{2}})\\ &=(\frac{(-1)^{f(0)}+(-1)^{f(1)}}{2}|0>+\frac{(-1)^{f(0)}-(-1)^{f(1)}}{2}|1>)(\frac{|0>-|1>}{\sqrt{2}})\\ \end{align}

測量結果

\Psi_3式子有點長,但我們只關注前面括號內的部分,也就是\Psi_3要被M測量的部分:

\frac{(-1)^{f(0)}+(-1)^{f(1)}}{2}|0>+\frac{(-1)^{f(0)}-(-1)^{f(1)}}{2}|1>

注意|0>|1>對應係數的兩個分母實際是A+B和A-B的格式,那麼假設f(x)是Constant即f(0)=f(1)=0那麼這個結果就是:

\begin{align} &\frac{(-1)^{f(0)}+(-1)^{f(1)}}{2}|0>+\frac{(-1)^{f(0)}-(-1)^{f(1)}}{2}|1>\\ &=\frac{(-1)^0+(-1)^0}{2}|0>+\frac{(-1)^0-(-1)^0}{2}|1>\\ &=\frac{2}{2}|0>+\frac{0}{2}|1>\\ &=|0>\\ \end{align}

如果f(0)=f(1)=1,那麼結果也類似的:

\begin{align} &\frac{(-1)^{f(0)}+(-1)^{f(1)}}{2}|0>+\frac{(-1)^{f(0)}-(-1)^{f(1)}}{2}|1>\\ &=\frac{(-1)^1+(-1)^1}{2}|0>+\frac{(-1)^1-(-1)^1}{2}|1>\\ &=\frac{-2}{2}|0>+\frac{0}{2}|1>\\ &=-|0>\\ \end{align}

對於M測量操作求平方計算結果來說,|0>-|0>結果都是0。

關於測量請參照這裏【科普】量子計算通識-4-量子位

但是,如果f(x)是個Balanced操作,即f(0)=1-f(1)結果會怎樣?

如果f(0)=1f(1)=0,那麼:

\begin{align} &\frac{(-1)^{f(0)}+(-1)^{f(1)}}{2}|0>+\frac{(-1)^{f(0)}-(-1)^{f(1)}}{2}|1>\\ &=\frac{-1+1}{2}|0>+\frac{-1-1}{2}|1>\\ &=-|1>\\ \end{align}

如果f(0)=0f(1)=1,那麼:

\begin{align} &\frac{(-1)^{f(0)}+(-1)^{f(1)}}{2}|0>+\frac{(-1)^{f(0)}-(-1)^{f(1)}}{2}|1>\\ &=\frac{1-1}{2}|0>+\frac{1-(-1)}{2}|1>\\ &=|1>\\ \end{align}

綜上,如果我們最後M測量的結果是0,那麼f(x)一定是Constant操作,如果我們最後M測量的結果是1,那麼f(x)一定是Balanced操作。

這裏只針對n=1,也就是兩個量子位的計算,後面我們來推導多個量子位的情況。


歡迎關注我的專欄( つ•̀ω•́)つ【人工智能通識】
更多相關文章請點擊【量子計算通識】


每個人的智能新時代

如果您發現文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,歡迎轉載~


END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章