歡迎關(guān)注我的專欄( つ??ω??)つ【人工智能通識】
更多相關(guān)文章請點擊【量子計算通識】
上一篇:【科普】量子計算通識-6
這一篇我們來看一下多伊奇算法是怎么推導(dǎo)出來的。

多伊奇問題
我們用表示
是由0或1組成的任意
位二進制數(shù),比如
位的011、
位的1010011。
我們又知道對于單比特的四種操作可以分為兩類:
- 常量操作constant:等0,等1;
- 平衡操作balanced:不變,翻轉(zhuǎn)。
更多參考這里:【科普】量子計算通識-2-四種操作與乘積態(tài)
綜合上面兩個情況,我們就可以描述為,,對于0和1組成的任意
位長度二進制數(shù)的兩種操作:
- Constant:
- Balanced:
多伊奇的問題就是,如果有一個符合以上條件的未知函數(shù),那么如何嘗試最少且足夠的次數(shù),來確定它是Constant操作還是Balanced操作。
經(jīng)典計算機解法
位2進制最多表示
個數(shù)字,比如2位的00、01、10、11共有
種,可以表示十進制的0 ~ 3;同樣3位的000、001、010、011、100、101、110、111共可以表示0 ~ 7,即
種;同樣8位可以表示
。
所以,對于經(jīng)典計算機來說,需要嘗試次(也就是一半多一次),才能確保足夠可以判斷未知函數(shù)屬于哪一種,因為前提已經(jīng)承諾,如果是Balanced類型,那么一半多一次恰好剛剛超過50%,如果這么多情況的結(jié)果都是相同的,那么它就是Constant類型操作(因為Constant類型操作所有結(jié)果都一樣),否則就是Balanced類型操作。
這就好比一共8張卡片,要么都一樣顏色,要么黑白各一半。這時我們只要最多翻開5張,就能知道屬于那種情況了。

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

圖中的符號
讀作|p’sai|
首先我們需要設(shè)計一個電路,它包含我們需要進行判斷的函數(shù)
,可以說是我們在
的基礎(chǔ)上又增加了一些處理使其成為函數(shù)
。
的作用就是可以傳入一些量子比特,然后輸出另外一些比特量子比特,并且可以讓我們從輸出的量子比特中一眼就可以看出其中
是Constant操作還是Balanced操作。
聽上去這個電路一定很難設(shè)計,實際卻是不難,它只要滿足能夠把
映射成為
即可:
這里的圓圈加號的意思是異或,即:
異或即相同得0,相異得1。這里有些有趣的規(guī)律:
- 異或看起來和CNOT門很像,第一位是0的結(jié)果和第二位相同,第一位是1的結(jié)果和第二位相反。
- 兩位順序顛倒也能成立,第二位是0的時候,結(jié)果和第一位相同,第二位是1的時候,結(jié)果和第一位相反。
關(guān)于CNOT門,參照【科普】量子計算通識-3-CNOT可控非門
總之我們先記住操作就是把輸入的兩個量子位變成輸出的另外兩個量子位,輸出中的后一位是第二個輸入位和
函數(shù)輸入第一位的異或結(jié)果:
實際上我們只要根據(jù)輸出的就可以判斷出
屬于Constant還是Balanced操作,下面我們進行推理演算
即2個比特位的情況。
計算Hadamard之后的
如圖,我們輸入兩個量子比特,一個0一個1,所以
下面來計算兩個比特分別經(jīng)過Hadamard門之后的。

關(guān)于哈達瑪門,相當(dāng)于乘以一個特殊矩陣,即
,即
變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cfrac%7B%7C0%3E%2B%7C1%3E%7D%7B%5Csqrt%7B2%7D%7D" alt="\frac{|0>+|1>}{\sqrt{2}}" mathimg="1">,即
變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cfrac%7B%7C0%3E-%7C1%3E%7D%7B%5Csqrt%7B2%7D%7D" alt="\frac{|0>-|1>}{\sqrt{2}}" mathimg="1">,更多請參照【科普】量子計算通識-5-哈達瑪門與單位圓狀態(tài)機
計算U之后的
針對函數(shù),由于我們有:
所以經(jīng)過把
替換為
之后的
就變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5CPsi_2" alt="\Psi_2" mathimg="1">:
我們注意到按照約定,只能取0或1,那么
當(dāng)時,
,并且有:
當(dāng)時,
,并且有:
結(jié)合這兩種情況,一定有:
同樣的道理,也可以等于0或1,所以也會有:
把這兩個式子帶入得到:
計算U之后的

對乘以Hadamard矩陣,即
變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cfrac%7B%7C0%3E%2B%7C1%3E%7D%7B%5Csqrt%7B2%7D%7D" alt="\frac{|0>+|1>}{\sqrt{2}}" mathimg="1">,即
變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cfrac%7B%7C0%3E-%7C1%3E%7D%7B%5Csqrt%7B2%7D%7D" alt="\frac{|0>-|1>}{\sqrt{2}}" mathimg="1">,這就得到
。注意如圖所示,是整體進行操作而不是每一位分別Hadamard操作:
測量結(jié)果
式子有點長,但我們只關(guān)注前面括號內(nèi)的部分,也就是
要被
測量的部分:
注意和
對應(yīng)系數(shù)的兩個分母實際是A+B和A-B的格式,那么假設(shè)
是Constant即
那么這個結(jié)果就是:
如果,那么結(jié)果也類似的:
對于測量操作求平方計算結(jié)果來說,
和
結(jié)果都是0。
關(guān)于測量請參照這里【科普】量子計算通識-4-量子位
但是,如果是個Balanced操作,即
結(jié)果會怎樣?
如果,
,那么:
如果,
,那么:
綜上,如果我們最后測量的結(jié)果是0,那么
一定是Constant操作,如果我們最后
測量的結(jié)果是1,那么
一定是Balanced操作。
這里只針對
,也就是兩個量子位的計算,后面我們來推導(dǎo)多個量子位的情況。
下一篇:【科普】量子計算通識-8-Deutsch-Jozsa算法解析
歡迎關(guān)注我的專欄( つ??ω??)つ【人工智能通識】
更多相關(guān)文章請點擊【量子計算通識】
每個人的智能新時代
如果您發(fā)現(xiàn)文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,歡迎轉(zhuǎn)載~
END