最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

量子計(jì)算 [4] -- 算法設(shè)計(jì) & Grover搜索算法

2021-04-16 20:18 作者:nyasyamorina  | 我要投稿

因?yàn)榱孔佑?jì)算的并行性,? 搜索問題,? 比如說數(shù)據(jù)庫搜索, 最短路徑問題,?加密問題, 圖形著色問題等,? 都被視為可以做到量子加速.

然而在實(shí)際上,? 設(shè)計(jì)一個(gè)可以解決問題的量子算法是困難的.??比如說數(shù)據(jù)庫搜索問題里,? 常用電子線路儲(chǔ)存數(shù)據(jù),??當(dāng)量子線路對數(shù)據(jù)庫歷遍時(shí),? 實(shí)際上也是等于用電子計(jì)算機(jī)歷遍了一次數(shù)據(jù)庫.? 當(dāng)然解決辦法就是使用量子位儲(chǔ)存數(shù)據(jù),? n個(gè)量子位可以最多儲(chǔ)存 2^n 個(gè)數(shù)據(jù) [實(shí)際上使用相位可以理論上儲(chǔ)存無窮個(gè)數(shù)據(jù)].

如此可見達(dá)到量子加速的搜索算法需要滿足幾點(diǎn):? 搜索黑盒允許量子操作,? 并且量子黑盒里的復(fù)雜度小于或差不多等于電子黑盒的復(fù)雜度,? 電子計(jì)算不存在更快速的算法.? 滿足以上幾點(diǎn)才可以說量子算法可能達(dá)到加速效果.? 但不止如此,? 下面通過一個(gè)簡單的圖形著色問題來了解一下最著名的量子搜索算法 -- Grover算法.

注:? 以下算法全部是python+nyasQuantumCalculate,? 關(guān)于庫可以見結(jié)語

圖形著色問題

給出一個(gè)已知的(Graph),? 也就是已知的頂點(diǎn)(Vertex)和連接頂點(diǎn)的(Edge),? 對每個(gè)頂點(diǎn)打上標(biāo)簽 [也就是著色],? 尋找一個(gè)可能著色使得每條邊上的頂點(diǎn)都不是相同顏色.

由問題描述可以知道,? 只有不存在自環(huán)的無向圖才是圖形著色問題的討論范圍.? 并且常用索引表示頂點(diǎn),? 列表表示邊.? 比如:? 以下表示了一個(gè)圖:

并且簡單推導(dǎo)可以知道這個(gè)圖至少需要4種顏色來著色,? 使用2bits可以對4種顏色編碼,? 并且把全部頂點(diǎn)顏色編碼為一個(gè)列表,? 則下面是一個(gè)可用的著色方案:

設(shè)計(jì)算法

量子計(jì)算可用看作可逆邏輯計(jì)算的拓展,? 而可逆邏輯計(jì)算則通過X, CNOT和CCNOT還原傳統(tǒng)電子計(jì)算邏輯.? ?加法器示例

首先需要解決的問題是如何判斷顏色相等.? 不難知道這個(gè)方法需要輸入兩個(gè)寄存器表示兩個(gè)顏色,? 和一個(gè)標(biāo)記位用來獲取結(jié)果.? 如果兩個(gè)寄存器狀態(tài)相同則翻轉(zhuǎn)標(biāo)記位的狀態(tài).??XOR門是一個(gè)很好的判斷兩bits是否相同的門,? 而可控過程是非常好的多位AND門,? 細(xì)節(jié)可以參考代碼備注.? 正所謂自己動(dòng)手才是學(xué)編程的正確姿勢,? 下面代碼可以自己試著驗(yàn)證運(yùn)行一下.

有了檢驗(yàn)一條邊的頂點(diǎn)顏色是否相等的方法后,? 對整個(gè)圖的每條邊進(jìn)行歷遍,? 當(dāng)全部邊的頂點(diǎn)顏色都不相同時(shí),? 則表明是一個(gè)可用的著色方案.

需要注意的是,? 盡管Reset可以快速地重置量子位,? 但是在程序結(jié)束前的Reset是沒有意義的.? 實(shí)際上量子計(jì)算機(jī)的重置是通過升溫或激光等方法使量子退相干,? 這個(gè)過程會(huì)損失大部分?jǐn)?shù)據(jù),? 所以不可以通過簡單Reset去重置tmpQubits.

可以留意到,? 上面的方法沒有使用到量子特性 [比如說相位, 疊加, 干涉等],? 所以這個(gè)算法是完全電子邏輯的.? 實(shí)際上把 `from nyasQuantumCalculate import *` 改為?`from nyasQuantumCalculate.RevCal import *` 從量子計(jì)算模擬切換為可逆電子計(jì)算模擬,? 上面的方法依然是正確的 [除了變量類型標(biāo)注].

Grover搜索算法

Grover算法是通用的搜索算法,? 通用的意思是,? 搜索過程與具體問題無關(guān),? 只要滿足:? 每次執(zhí)行某個(gè)黑盒所有正確答案的相位都被翻轉(zhuǎn),??Grover算法就搜索出黑盒里的"正確"答案.

Grover算法需要反復(fù)計(jì)算某個(gè)過程,? 每迭代一次(某種程度內(nèi)),? 測量得到正確答案就會(huì)增長.? 單次迭代包含兩步:? ?1)? 應(yīng)用黑盒;? 2) 應(yīng)用Grover擴(kuò)散算子(Grover?diffusion?operator).? 黑盒把正確答案的相位進(jìn)行翻轉(zhuǎn),? Grover算子把正確答案的出現(xiàn)概率增大,? 并減少錯(cuò)誤答案的出現(xiàn)概率.

Grover算子表示為

%5C%5CG%3DW%5E%7B-1%7D(2%7C0%5En%5Crangle%5Clangle0%5En%7C-I)W

其中 W 為 Hadamard變換(Hadamard Transform),??Hadamard變換的逆為它自身,? 并且忽略全局相位的影響,? 則Grover算子為?G%60%3DW(I-2%7C0%5En%5Crangle%5Clangle0%5En%7C)W?.??關(guān)于Grover算子的細(xì)節(jié)就留到附章討論,? 這里先著重實(shí)現(xiàn)算法.

如果把系統(tǒng)狀態(tài)表示為正確答案和錯(cuò)誤答案的疊加態(tài)%7C%5CPsi%5Crangle%3D%5Calpha%7CGood%5Crangle%2B%5Cbeta%7CBad%5Crangle,? 其中Good是正確答案,? Bad是錯(cuò)誤答案,? 則任意一個(gè)系統(tǒng)狀態(tài)%7C%5CPsi%5Crangle都處于在?%5C%7BO%3B%7CBad%5Crangle%2C%7CGood%5Crangle%5C%7D?空間里的單位圓上.? 設(shè)系統(tǒng)的均勻疊加態(tài)?%7C%2B%5En%5Crangle%3B%20%7C%2B%5Crangle%3D2%5E%7B-0.5%7D(%7C0%5Crangle%2B%7C1%5Crangle)?與?%7CBad%5Crangle?之間的夾角為θ,? 不難知道有以下關(guān)系:??sin%5Ctheta%3D%5Csqrt%7B%5Cfrac%7BM%7D%7BN%7D%7D, 其中M為全部正確答案的數(shù)量,? N為全部可能答案的數(shù)量.? 那么Grover算法的單次迭代實(shí)際上是把系統(tǒng)狀態(tài)在?%5C%7BO%3B%7CBad%5Crangle%2C%7CGood%5Crangle%5C%7D?空間里逆時(shí)針旋轉(zhuǎn)θ.? 如下圖

|ψ? 變?yōu)?|ψ`?

當(dāng)系統(tǒng)狀態(tài)與%7CBad%5Crangle的夾角越靠近?π/2,? 測量結(jié)果越可能得出正確答案.? 不難看到如果迭代次數(shù)過多讓系統(tǒng)狀態(tài)接近-%7CBad%5Crangle的話,? 正確答案的概率會(huì)變小.? 所以最佳迭代次數(shù)為 j%3D%5Cleft%5B%5Cfrac%7B%5Cpi%7D%7B4sin%5E%7B-1%7D%5Csqrt%7B%5Cfrac%7BM%7D%7BN%7D%7D%7D-0.5%5Cright%5D,? 其中[]為四舍五入,? sin^-1為方sin函數(shù) [arcsin].

搜索問題答案

在Grover算法里,? 黑盒是需要翻轉(zhuǎn)正確答案的相位,? 也就是相位黑盒,? 但這里設(shè)計(jì)的驗(yàn)證著色方案是否有效的算法是翻轉(zhuǎn)標(biāo)記位的狀態(tài),? 也就是標(biāo)記黑盒.? 可以使用"相位反沖"的技巧把標(biāo)記黑盒轉(zhuǎn)為相位黑盒.??有關(guān)量子黑盒

已知問題里有5個(gè)頂點(diǎn),? 又需要2bits表示顏色,? 也就是需要總共10個(gè)量子位來表示全部著色方案.??全部可能方案的數(shù)量為 2^10 = 1024 個(gè),? 而正確方案的數(shù)量為 2 * 4! = 48 個(gè),? 至于總共數(shù)量怎么出來就不是量子計(jì)算的討論范圍了.? 包裝Grover搜索算法:

可以注意到Grover搜索算法并不能保證運(yùn)行完后以100%概率測得正確方案,? 進(jìn)行測量后還需要對結(jié)果進(jìn)行檢查,? 如果不正確則重復(fù)運(yùn)行算法.? 測量后,? 量子位坍縮到測量結(jié)果里而損失其它信息,? 這時(shí)候可以使用另一個(gè)量子位與寄存器運(yùn)行GraphColoring檢查寄存器是否處于正確的方案里.? 綜上,? 搜索圖形著色方案的主體程序?yàn)?

加上輸出:

如果還是在意結(jié)果是否正確,? 可以在最下面加一段代碼驗(yàn)證:

其中answer包含全部正確方案.

經(jīng)過上面的例子可以看出,? Grover搜索算法并不能以概率1給出正確答案.? 并且有一個(gè)比較嚴(yán)苛的條件就是需要知道正確答案的總數(shù)M才能以最少運(yùn)行次數(shù)實(shí)現(xiàn)算法.? 實(shí)際操作里,? 如果不知道正確答案的總數(shù),? 可以讓 j 為一個(gè)較小的數(shù)字開始,? 比如說3,? 每次獲得錯(cuò)誤結(jié)果就增大 j. 直到獲得正確結(jié)果.

在使用nyasQuantumCalculate的時(shí)候,? 可以把 Options.autoNormalize 設(shè)為?False 以加快運(yùn)行速度.? 這個(gè)選項(xiàng)是在每個(gè)位門作用之后把系統(tǒng)歸一化,? 設(shè)置為False后每個(gè)位門的計(jì)算誤差會(huì)逐漸累積下來 [每次大約10^-17],? 在誤差過大的時(shí)候可能會(huì)導(dǎo)致一部分邏輯出錯(cuò),? 這時(shí)候可以調(diào)整 Utils 里的 delta 以允許更大的誤差 [默認(rèn)10^-8,? 調(diào)整需要直接修改庫].

老推銷員繼續(xù)推自己的庫: [github.com/nyasyamorina/nyasQuantumCalculate]

瑟圖群: [274767696]

量子計(jì)算 [4] -- 算法設(shè)計(jì) & Grover搜索算法的評論 (共 條)

分享到微博請遵守國家法律
开原市| 曲阜市| 康定县| 永泰县| 巴彦县| 土默特左旗| 旬阳县| 广昌县| 建始县| 繁峙县| 金溪县| 饶阳县| 府谷县| 改则县| 兴安盟| 西乌珠穆沁旗| 耒阳市| 龙江县| 赫章县| 怀远县| 衡南县| 南召县| 澄迈县| 包头市| 兴义市| 恩平市| 井研县| 白山市| 汝城县| 大足县| 阿巴嘎旗| 樟树市| 黑水县| 昌乐县| 罗甸县| 吉木乃县| 丹阳市| 玉山县| 都昌县| 宜兰市| 化州市|