本發(fā)明屬于量子計(jì)算領(lǐng)域,具體涉及一種量子乘法器的設(shè)計(jì)方法。
背景技術(shù):
量子計(jì)算的概念最早由ibm的科學(xué)家r.landauer及c.bennett于20世紀(jì)70年代提出。80年代初期,阿崗國家實(shí)驗(yàn)室的p.benioff首先提出二能階的量子系統(tǒng)可以用來仿真數(shù)字計(jì)算;稍后費(fèi)因曼也對(duì)這個(gè)問題產(chǎn)生興趣而著手研究,并在1981年于麻省理工學(xué)院舉行的一場演講中勾勒出以量子現(xiàn)象實(shí)現(xiàn)計(jì)算的愿景。1982年,費(fèi)曼提出量子計(jì)算機(jī)的計(jì)算速度遠(yuǎn)超過經(jīng)典計(jì)算機(jī)。20世紀(jì)90年代,“shor量子因子分解算法”和“grover量子搜索算法”證明了量子計(jì)算機(jī)的計(jì)算能力。因此越來越多的研究人員開始探索量子計(jì)算機(jī)上的各種應(yīng)用,相關(guān)的交叉學(xué)科也不斷涌現(xiàn),例如量子人工智能、量子機(jī)器學(xué)習(xí)和量子圖像處理等。由于量子算法具有指數(shù)級(jí)加速相應(yīng)經(jīng)典算法的能力,被認(rèn)為是解決當(dāng)前物理系統(tǒng)計(jì)算能力瓶頸的有效手段之一。
量子乘法器是以更基本的量子加法器為基礎(chǔ),它廣泛應(yīng)用于量子圖像處理中的濾波、邊緣檢測(cè)和頻率控制等領(lǐng)域,是一種應(yīng)用廣泛的量子算法?,F(xiàn)目前,研究者主要研究基于量子細(xì)胞自動(dòng)機(jī)的乘法器的硬件實(shí)現(xiàn)。現(xiàn)有的關(guān)于量子乘法器的算法設(shè)計(jì)與研究幾乎沒有。因此,尋找量子乘法器的設(shè)計(jì)及實(shí)現(xiàn)方法具有重要的意義。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的是提供一種量子乘法器的設(shè)計(jì)方法。
本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的,一種量子乘法器的設(shè)計(jì)方法,包括以下步驟:
步驟1:利用量子門設(shè)計(jì)一位量子全加器,并將n個(gè)一位的量子全加器疊加在一起設(shè)計(jì)n位量子全加器,實(shí)現(xiàn)兩個(gè)n位二進(jìn)制數(shù)的加和;
步驟2:利用兩個(gè)控制非門設(shè)計(jì)置零電路,并使用置零電路設(shè)計(jì)量子右移算子;
步驟3:對(duì)二進(jìn)制數(shù)乘法步驟進(jìn)行改進(jìn),按照改進(jìn)后的二進(jìn)制乘法步驟使用前述的量子全加器和量子右移算子設(shè)計(jì)量子乘法器。
進(jìn)一步,改進(jìn)后的二進(jìn)制乘法步驟為:首先把部分積置零;如果乘數(shù)的低位是1,加上被乘數(shù),然后把和右移一位;如果乘數(shù)高一位的數(shù)是0,加上0000,然后把和右移一位,如此循環(huán),直到得出結(jié)果。
進(jìn)一步,所述置零電路包括兩個(gè)受控非門,輸入量子比特|a>和輸入量子比特|0>經(jīng)過第一個(gè)受控非門輸入狀態(tài)轉(zhuǎn)換為
由于采用了上述技術(shù)方案,本發(fā)明具有如下的優(yōu)點(diǎn):
1.成功填補(bǔ)了量子乘法器在算法設(shè)計(jì)上的空白,設(shè)計(jì)了高效的量子乘法器。
2.充分考慮了每個(gè)二進(jìn)制數(shù)存儲(chǔ)在一個(gè)量子態(tài)中,對(duì)每個(gè)二進(jìn)制數(shù)進(jìn)行整體操作時(shí)更節(jié)省資源的特點(diǎn),提供了一個(gè)合理的二進(jìn)制數(shù)乘法步驟。
附圖說明
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,其中:
圖1為本發(fā)明方法的技術(shù)路線圖;
圖2(a)為一位量子全加器具體線路,2(b)為一位量子全加器的簡化圖;
圖3為通用量子門;(a)為notgate,(b)為hadamardgate,(c)為cnotgate,(d)為toffoligate;
圖4(a)為n位量子全加器具體線路圖,4(b)為n位量子全加器的簡化圖;
圖5(a)為現(xiàn)有乘法步驟,5(b)為改進(jìn)算法的步驟;
圖6為置零線路;
圖7(a)為量子右移操作線路圖,7(b)為右移算符的簡化圖,7(c)為右移兩位的線路圖;
圖8(a)為量子乘法器具體線路圖,8(b)為量子乘法器簡化線路圖。
具體實(shí)施方式
以下將結(jié)合附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述;應(yīng)當(dāng)理解,優(yōu)選實(shí)施例僅為了說明本發(fā)明,而不是為了限制本發(fā)明的保護(hù)范圍。
圖1為本發(fā)明方法的技術(shù)路線,以下部分也是對(duì)此技術(shù)路線中的各個(gè)內(nèi)容進(jìn)行的詳細(xì)描述。
(1)設(shè)計(jì)量子全加器
圖2(a)展示了一位量子全加器的具體構(gòu)造線路圖,其中用到了通用量子門中的兩個(gè)控制非門如圖3(c)所示,兩個(gè)toffoli門如圖3(d)所示,圖2(b)為一位量子全加器的簡化圖。由n個(gè)一位的量子全加器分別作用到兩個(gè)n位二進(jìn)制數(shù)對(duì)應(yīng)的位上,構(gòu)成一個(gè)n位的量子全加器,可實(shí)現(xiàn)兩個(gè)n位數(shù)的加和。圖4(a)為n位量子全加器具體線路圖,圖4(b)展示了n位量子全加器的簡化圖,圖中省略了輔助量子比特。以下為量子全加器實(shí)現(xiàn)兩數(shù)相加的過程。
設(shè)|a>=|anan-1…a2a1〉和|b〉=|bnbn-1…b2b1>為兩個(gè)n位二進(jìn)制數(shù),圖3的輸入量子態(tài)為兩個(gè)待處理二進(jìn)制數(shù)和初始狀態(tài)為0的n位輔助量子比特,即輸入量子態(tài)為
(2)改進(jìn)二進(jìn)制乘法步驟
一般來說對(duì)于整數(shù)相乘,乘法可以用加法代替,但是太浪費(fèi)計(jì)算和存儲(chǔ)資源。在量子計(jì)算機(jī)中,二進(jìn)制數(shù)存儲(chǔ)在一個(gè)量子態(tài)中,對(duì)其進(jìn)行整體操作更節(jié)省資源,根據(jù)此需求可對(duì)乘法步驟進(jìn)行改進(jìn)。
例如要計(jì)算兩個(gè)二進(jìn)制數(shù)的乘積:1011×1101,圖5(a)為二進(jìn)制乘法的實(shí)現(xiàn)步驟。此乘法運(yùn)算具有明顯的特點(diǎn),每次部分積要加的數(shù)是被乘數(shù)要么乘于1,要么乘于0,結(jié)果是被乘數(shù)本身或零,即每一小步中,部分積或者需要加上被乘數(shù),或者不加,受乘數(shù)中的每一位的控制。圖5(b)展示了改進(jìn)后的算法步驟,首先把部分積置零(置零線路如圖6所示),然后乘數(shù)的低位是1,所以要加上被乘數(shù)1011,然后把和右移一位;乘數(shù)高一位的數(shù)是0,就加上0000,然后把和右移一位,如此循環(huán),直到得出結(jié)果。雖然是一個(gè)簡單的轉(zhuǎn)換,卻節(jié)省了很多計(jì)算步驟。例如,對(duì)于一個(gè)n位二進(jìn)制數(shù)乘于一個(gè)m位二進(jìn)制數(shù),本來需要計(jì)算2m次的加法,改進(jìn)后只需要m次加法和m-1次的右移操作。關(guān)于加法的計(jì)算可以用步驟一中介紹的量子加法器。這里需要設(shè)計(jì)一個(gè)量子右移線路以解決乘法的運(yùn)算。
(3)設(shè)計(jì)量子右移算子
在經(jīng)典的數(shù)字電路中,需要沿著每條線從頭到尾來分析整個(gè)電路實(shí)現(xiàn)的功能,對(duì)于每條線,都可以簡單地對(duì)其實(shí)現(xiàn)扇出以及扇入操作。因?yàn)殡娐分械拿織l線確確實(shí)實(shí)代表著實(shí)際物品中的電線,和實(shí)際的電線一樣起著傳遞信息的作用,一條導(dǎo)線就可以把一個(gè)位置上的電位傳遞到任何地方,反而比特的概念在電路圖里倒是沒有體現(xiàn)的那么清楚。而在量子計(jì)算的過程中,也是按照每條線來分析其功能,不同的是,每一條線都確確實(shí)實(shí)地代表一個(gè)或幾個(gè)量子比特的狀態(tài)轉(zhuǎn)化過程,而且沒有扇出和扇入操作。這是因?yàn)榱孔颖忍赜酶⑿〉奈锢憩F(xiàn)象表示,每條線代表的是一個(gè)相應(yīng)的微觀狀態(tài),例如電子的自旋方向,原子核的自旋方向等。這些狀態(tài)不能簡單地通過介質(zhì)傳遞。因?yàn)榱孔硬豢煽寺≡?,不可能完全地?duì)任意量子態(tài)進(jìn)行復(fù)制,也就無法對(duì)任意量子態(tài)實(shí)現(xiàn)完全的扇出,而扇入在這里是荒謬的,因?yàn)閮蓚€(gè)量子態(tài)并不能合并。
例如圖7,兩個(gè)輸入量子比特為|a>和|0>,其中|a>為任意的單量子比特態(tài)。可以把輸入狀態(tài)寫作|a,0>,表示兩個(gè)量子比特耦合在一起的系統(tǒng),圖中利用了之前介紹的受控非門,其實(shí)現(xiàn)異或操作,經(jīng)過第一個(gè)受控非門輸入狀態(tài)轉(zhuǎn)換為
假設(shè)需要右移操作的二進(jìn)制數(shù)是cn-1cn-2…c1c0,一個(gè)量子右移操作線路需要n位的量子比特來表示這個(gè)數(shù),需要一個(gè)輔助的量子比特,輔助量子比特的初始狀態(tài)一般都為|0>,如7(a)所示。首先交換|c0>和輔助量子比特|0>,然后依次交換相鄰的兩個(gè)量子比特,從最終輸出可以看到實(shí)現(xiàn)了右移操作。每次右移一共需要n次交換,共需2n個(gè)受控非門。同樣為了使用方面圖7(b)為右移算符的簡化圖。
如果需要實(shí)現(xiàn)很多位的右移,那么可以把整個(gè)右移算法重復(fù)使用多次,或者可以設(shè)計(jì)更簡單的右移電路,例如圖7(c)為右移兩位時(shí)的線路圖。其他情況可以以此類推。同理可以設(shè)計(jì)左移操作算符,這里不再詳細(xì)描述。
(4)設(shè)計(jì)量子乘法器
按照改進(jìn)后的二進(jìn)制乘法步驟,使用上述量子全加器和量子右移位算符,即可以實(shí)現(xiàn)量子乘法器的設(shè)計(jì)。
設(shè)需要計(jì)算一個(gè)m位和一個(gè)n位二進(jìn)制數(shù)的乘積。用擁有n個(gè)量子比特的量子態(tài)表示n位的被乘數(shù),擁有m個(gè)量子比特的量子態(tài)表示m位的乘數(shù)。n位的部分積初始狀態(tài)為零,即處于基態(tài),然后依次用乘數(shù)從低位到高位的每一位來控制部分積是加上被乘數(shù)還是加零,并在每次加和之后讓部分積右移一位。這樣就得到了兩個(gè)數(shù)的乘積。結(jié)果存儲(chǔ)在m+n位的量子比特中。圖8(a)為量子乘法器的線路圖,圖中未標(biāo)注的初始為零的量子比特均為輔助量子比特。該線路圖中主要有兩種類型的量子門,量子全加器和量子右移位算符,其中,量子全加器的控制量子位分別是乘數(shù)中的每一位,目標(biāo)位實(shí)現(xiàn)部分積和被乘數(shù)的加和,結(jié)果仍存儲(chǔ)在n位部分積和一位進(jìn)位量子比特中,量子右移位算符作用在m+n位的量子比特上。圖8(b)為量子乘法器簡化圖。以下為量子乘法器實(shí)現(xiàn)兩數(shù)相乘的過程。
設(shè)n位二進(jìn)制數(shù)a存儲(chǔ)在量子態(tài)|a>=|anan-1…a2a1>中,m位二進(jìn)制數(shù)b存儲(chǔ)在量子態(tài)|b>=|bmbm-1…b2b1>中,圖8的輸入量子態(tài)為兩個(gè)待處理二進(jìn)制數(shù)和初始狀態(tài)為0的n+m位輔助量子比特,其中一位輔助量子比特作為進(jìn)位,與兩外n+m-1位量子比特一起用來存儲(chǔ)相乘的結(jié)果,即輸入量子態(tài)為
注:說明書中出現(xiàn)的量子態(tài)|a>=|anan-1…a2a1>為
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并不用于限制本發(fā)明,顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。