歡迎關注我的專欄( つ•̀ω•́)つ【人工智能通識】
更多相關文章請點擊【量子計算通識】
上一篇:【科普】量子計算通識-6
這一篇我們來看一下多伊奇算法是怎麼推導出來的。
多伊奇問題
我們用表示是由0或1組成的任意位二進制數,比如位的011、位的1010011。
我們又知道對於單比特的四種操作可以分爲兩類:
- 常量操作constant:等0,等1;
- 平衡操作balanced:不變,翻轉。
更多參考這裏:【科普】量子計算通識-2-四種操作與乘積態
綜合上面兩個情況,我們就可以描述爲,,對於0和1組成的任意位長度二進制數的兩種操作:
- Constant:
- Balanced:
多伊奇的問題就是,如果有一個符合以上條件的未知函數,那麼如何嘗試最少且足夠的次數,來確定它是Constant操作還是Balanced操作。
經典計算機解法
位2進制最多表示個數字,比如2位的00、01、10、11共有種,可以表示十進制的0 ~ 3;同樣3位的000、001、010、011、100、101、110、111共可以表示0 ~ 7,即種;同樣8位可以表示。
所以,對於經典計算機來說,需要嘗試次(也就是一半多一次),才能確保足夠可以判斷未知函數屬於哪一種,因爲前提已經承諾,如果是Balanced類型,那麼一半多一次恰好剛剛超過50%,如果這麼多情況的結果都是相同的,那麼它就是Constant類型操作(因爲Constant類型操作所有結果都一樣),否則就是Balanced類型操作。
這就好比一共8張卡片,要麼都一樣顏色,要麼黑白各一半。這時我們只要最多翻開5張,就能知道屬於那種情況了。
量子計算解法
如前面文章所述,在量子計算機中,只需要一次嘗試就可以做出準確判斷。當然我們要進行一些特殊處理。
圖中的符號讀作|p’sai|
首先我們需要設計一個電路,它包含我們需要進行判斷的函數,可以說是我們在的基礎上又增加了一些處理使其成爲函數。
的作用就是可以傳入一些量子比特,然後輸出另外一些比特量子比特,並且可以讓我們從輸出的量子比特中一眼就可以看出其中是Constant操作還是Balanced操作。
聽上去這個電路一定很難設計,實際卻是不難,它只要滿足能夠把映射成爲即可:
這裏的圓圈加號的意思是異或,即:
異或即相同得0,相異得1。這裏有些有趣的規律:
- 異或看起來和CNOT門很像,第一位是0的結果和第二位相同,第一位是1的結果和第二位相反。
- 兩位順序顛倒也能成立,第二位是0的時候,結果和第一位相同,第二位是1的時候,結果和第一位相反。
關於CNOT門,參照【科普】量子計算通識-3-CNOT可控非門
總之我們先記住操作就是把輸入的兩個量子位變成輸出的另外兩個量子位,輸出中的後一位是第二個輸入位和函數輸入第一位的異或結果:
實際上我們只要根據輸出的就可以判斷出屬於Constant還是Balanced操作,下面我們進行推理演算即2個比特位的情況。
計算Hadamard之後的
如圖,我們輸入兩個量子比特,一個0一個1,所以
下面來計算兩個比特分別經過Hadamard門之後的。
關於哈達瑪門,相當於乘以一個特殊矩陣,即,即變爲,即變爲,更多請參照【科普】量子計算通識-5-哈達瑪門與單位圓狀態機
計算U之後的
針對函數,由於我們有:
所以經過把替換爲之後的就變爲:
我們注意到按照約定,只能取0或1,那麼
當時,,並且有:
當時,,並且有:
結合這兩種情況,一定有:
同樣的道理,也可以等於0或1,所以也會有:
把這兩個式子帶入得到:
計算U之後的
對乘以Hadamard矩陣,即變爲,即變爲,這就得到。注意如圖所示,是整體進行操作而不是每一位分別Hadamard操作:
測量結果
式子有點長,但我們只關注前面括號內的部分,也就是要被測量的部分:
注意和對應係數的兩個分母實際是A+B和A-B的格式,那麼假設是Constant即那麼這個結果就是:
如果,那麼結果也類似的:
對於測量操作求平方計算結果來說,和結果都是0。
關於測量請參照這裏【科普】量子計算通識-4-量子位
但是,如果是個Balanced操作,即結果會怎樣?
如果,,那麼:
如果,,那麼:
綜上,如果我們最後測量的結果是0,那麼一定是Constant操作,如果我們最後測量的結果是1,那麼一定是Balanced操作。
這裏只針對,也就是兩個量子位的計算,後面我們來推導多個量子位的情況。
歡迎關注我的專欄( つ•̀ω•́)つ【人工智能通識】
更多相關文章請點擊【量子計算通識】
每個人的智能新時代
如果您發現文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,歡迎轉載~
END