成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

python使用ProjectQ生成量子算法指令集

瀏覽:171日期:2022-06-19 14:54:23
目錄輸出算法操作封裝的操作含時演化算符的分解QFT的分解總結(jié)概要輸出算法操作

首先介紹一個最基本的使用方法,就是使用ProjectQ來打印量子算法中所輸入的量子門操作,這里使用到了ProjectQ中的DummyEngine后端用于保存操作的指令。比如最簡單的一個Bell State的制備,可以通過如下代碼實(shí)現(xiàn),并且打印出所保存的基本操作:

from projectq import MainEnginefrom projectq.cengines import DummyEnginefrom projectq.ops import H, CX, All, Measurebackend = DummyEngine(save_commands=True)eng = MainEngine(backend=backend)qureg = eng.allocate_qureg(2)H | qureg[0]CX | (qureg[0], qureg[1])All(Measure) | quregeng.flush(deallocate_qubits=True)for cmd in backend.received_commands: print (cmd)

運(yùn)行結(jié)果如下:

Allocate | Qureg[0]H | Qureg[0]Allocate | Qureg[1]CX | ( Qureg[0], Qureg[1] )Measure | Qureg[0]Measure | Qureg[1]Deallocate | Qureg[0]Deallocate | Qureg[1]

這里有一點(diǎn)需要注意的是,如果是單次運(yùn)算,我們到Measure就可以結(jié)束了。但是如果同一個線程的任務(wù)還沒有結(jié)束的話,需要在Measure之后加上一個deallocate_qubits=True的配置項(xiàng),用于解除當(dāng)前分配的量子比特所占用的內(nèi)存。

封裝的操作

在量子算法的實(shí)現(xiàn)中,我們可以用一些函數(shù)或者類來封裝一部分的量子算法操作指令,但是這可能會導(dǎo)致一個問題,那就是在ProjectQ上打印出來的操作指令沒有把封裝的模塊的內(nèi)容輸出出來,比如如下的案例:

from projectq import MainEnginefrom projectq.cengines import DummyEnginefrom projectq.ops import H, CX, All, Measure, TimeEvolution, QubitOperatorbackend = DummyEngine(save_commands=True)eng = MainEngine(backend=backend)qureg = eng.allocate_qureg(3)H | qureg[0]CX | (qureg[0], qureg[1])TimeEvolution(1, QubitOperator(’X2 X1’)) | quregAll(Measure) | quregeng.flush()for cmd in backend.received_commands: print (cmd)

執(zhí)行結(jié)果如下:

Allocate | Qureg[0]H | Qureg[0]Allocate | Qureg[1]CX | ( Qureg[0], Qureg[1] )Measure | Qureg[0]Allocate | Qureg[2]exp(-1j * (1.0 X0 X1)) | Qureg[1-2]Measure | Qureg[1]Measure | Qureg[2]

我們發(fā)現(xiàn)這里的含時演化的操作算符沒有被分解,而是直接打印輸出了出來。但是如果在硬件系統(tǒng)中,只能夠識別支持的指令操作,這里的含時演化操作可能并未在量子硬件體系中被實(shí)現(xiàn),因此我們就需要在將指令發(fā)送給量子硬件之前,就對其進(jìn)行分解。

含時演化算符的分解

這里我們直接調(diào)用ProjectQ的配置中的restrictedgateset方法進(jìn)行操作分解,我們將單比特門操作的范圍放寬到所有的操作,但是雙比特操作只允許CX操作,并將這個配置作為engin_list配置到ProjectQ的MainEngine中:

from projectq import MainEnginefrom projectq.cengines import DummyEnginefrom projectq.ops import H, CX, All, Measure, TimeEvolution, QubitOperatorfrom projectq.setups import restrictedgatesetengine_list = restrictedgateset.get_engine_list(one_qubit_gates='any',two_qubit_gates=(CX,))backend = DummyEngine(save_commands=True)eng = MainEngine(backend=backend,engine_list=engine_list)qureg = eng.allocate_qureg(3)H | qureg[0]CX | (qureg[0], qureg[1])TimeEvolution(1, QubitOperator(’X2 X1’)) | quregAll(Measure) | quregeng.flush(deallocate_qubits=True)for cmd in backend.received_commands: print (cmd)

打印輸出的結(jié)果如下:

Allocate | Qureg[0]H | Qureg[0]Allocate | Qureg[1]CX | ( Qureg[0], Qureg[1] )Measure | Qureg[0]Allocate | Qureg[2]H | Qureg[2]H | Qureg[1]CX | ( Qureg[1], Qureg[2] )Rz(2.0) | Qureg[2]CX | ( Qureg[1], Qureg[2] )H | Qureg[1]Measure | Qureg[1]H | Qureg[2]Measure | Qureg[2]Deallocate | Qureg[0]Deallocate | Qureg[1]Deallocate | Qureg[2]

可以看到含時演化算符已經(jīng)被分解并輸出了出來。由于已知單比特量子門加上一個CX是一個完備的量子門集合,因此一般我們可以直接使用這個集合來進(jìn)行量子門操作指令集的限制。

QFT的分解

QFT是ProjectQ中所自帶支持的量子傅里葉變換的量子門操作封裝,跟上一個章節(jié)中所介紹的含時演化算符類似的,我們可以用restrictedgateset來具體分解QFT算符:

from projectq import MainEnginefrom projectq.cengines import DummyEnginefrom projectq.ops import H, CX, All, Measure, TimeEvolution, QubitOperator, QFTfrom projectq.setups import restrictedgatesetengine_list = restrictedgateset.get_engine_list(one_qubit_gates='any',two_qubit_gates=(CX,))backend = DummyEngine(save_commands=True)eng = MainEngine(backend=backend,engine_list=engine_list)qureg = eng.allocate_qureg(3)H | qureg[0]CX | (qureg[0], qureg[1])QFT | quregAll(Measure) | quregeng.flush(deallocate_qubits=True)for cmd in backend.received_commands: print (cmd)

輸出的結(jié)果如下:

Allocate | Qureg[2]Allocate | Qureg[1]H | Qureg[2]Rz(0.785398163398) | Qureg[2]Allocate | Qureg[0]H | Qureg[0]CX | ( Qureg[0], Qureg[1] )R(0.785398163398) | Qureg[1]CX | ( Qureg[1], Qureg[2] )Rz(11.780972450962) | Qureg[2]CX | ( Qureg[1], Qureg[2] )R(0.392699081698) | Qureg[0]Rz(0.392699081698) | Qureg[2]CX | ( Qureg[0], Qureg[2] )H | Qureg[1]Rz(12.173671532661) | Qureg[2]CX | ( Qureg[0], Qureg[2] )R(0.785398163398) | Qureg[0]Rz(0.785398163398) | Qureg[1]CX | ( Qureg[0], Qureg[1] )Rz(11.780972450962) | Qureg[1]CX | ( Qureg[0], Qureg[1] )H | Qureg[0]Measure | Qureg[0]Measure | Qureg[1]Measure | Qureg[2]Deallocate | Qureg[1]Deallocate | Qureg[2]Deallocate | Qureg[0]

如果2比特門操作也不加以限制的化,ProjectQ中會自動選取最簡易的分解形式:

from projectq import MainEnginefrom projectq.cengines import DummyEnginefrom projectq.ops import H, CX, All, Measure, TimeEvolution, QubitOperator, QFTfrom projectq.setups import restrictedgatesetengine_list = restrictedgateset.get_engine_list(one_qubit_gates='any',two_qubit_gates='any')backend = DummyEngine(save_commands=True)eng = MainEngine(backend=backend,engine_list=engine_list)qureg = eng.allocate_qureg(3)H | qureg[0]CX | (qureg[0], qureg[1])QFT | quregAll(Measure) | quregeng.flush(deallocate_qubits=True)for cmd in backend.received_commands: print (cmd)

輸出結(jié)果如下:

Allocate | Qureg[0]Allocate | Qureg[1]H | Qureg[0]CX | ( Qureg[0], Qureg[1] )Allocate | Qureg[2]H | Qureg[2]CR(1.570796326795) | ( Qureg[1], Qureg[2] )CR(0.785398163397) | ( Qureg[0], Qureg[2] )H | Qureg[1]CR(1.570796326795) | ( Qureg[0], Qureg[1] )H | Qureg[0]Measure | Qureg[0]Measure | Qureg[1]Measure | Qureg[2]Deallocate | Qureg[1]Deallocate | Qureg[2]Deallocate | Qureg[0]

可以發(fā)現(xiàn)使用了CR來替代CX之后,分解出來的線路會更加的簡短。

總結(jié)概要

本文主要從工程實(shí)現(xiàn)的角度,講解在ProjectQ開源量子計算模擬器框架中,實(shí)現(xiàn)量子門操作分解與輸出的方法。通過這個方法,可以限制量子指令集的范圍,將量子算法中不被支持的量子門操作等價(或近似地)變化到量子硬件體系所支持的量子指令集上。

以上就是python使用ProjectQ生成量子算法指令集的詳細(xì)內(nèi)容,更多關(guān)于python 用ProjectQ生成算法指令集的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩一区二区免费看| 久久综合狠狠| 久久久精品五月天| 国产九色sp调教91| 18欧美亚洲精品| 欧美日韩卡一卡二| 欧美特黄一区| 久久精品国产77777蜜臀| 中文字幕乱码久久午夜不卡 | 成人h动漫精品| 亚洲日本在线a| 精品噜噜噜噜久久久久久久久试看| 午夜精品婷婷| 精品一区二区三区久久久| 一区精品在线播放| 欧美一区二区免费视频| 久久精品二区| 欧美日韩少妇| 国产精品996| 爽好多水快深点欧美视频| 国产亚洲精品中文字幕| 欧美精品一二三区| 久久久久在线| 国产精品久久亚洲7777| 99国产麻豆精品| 国产精品一区2区| 人人狠狠综合久久亚洲| 国产精品你懂的在线欣赏| 欧美日韩在线免费视频| 久久精品日韩欧美| 亚洲国产精品一区在线观看不卡| 丰满少妇久久久久久久| 国产一区 二区| 日韩av在线发布| 亚洲午夜成aⅴ人片| 综合色中文字幕| 中文字幕高清不卡| 欧美激情一区二区三区全黄| 欧美美女直播网站| 在线欧美日韩国产| 久久久水蜜桃av免费网站| 国产午夜精品一区二区三区欧美| 91一区二区在线观看| 久久99深爱久久99精品| 日本不卡视频在线观看| 五月综合激情日本mⅴ| 日韩一二三区不卡| 日韩国产成人精品| 91精品国产福利| 99精品久久久久久| 国产精品网曝门| 亚洲永久网站| 日本韩国精品一区二区在线观看| 蜜乳av另类精品一区二区| 久久天天综合| 欧美一a一片一级一片| 欧美影院午夜播放| 欧洲精品中文字幕| 欧美日韩另类国产亚洲欧美一级| 6080国产精品一区二区| 日韩写真欧美这视频| 久久奇米777| 国产精品自拍三区| 欧美一级二级三级蜜桃| 欧美 日韩 国产在线| 亚洲精选一二三| 欧美性生交片4| 欧美三级电影网| 精品国产在天天线2019| 国产精品免费免费| 国产精品不卡在线观看| 亚洲电影第三页| 青青草成人在线观看| 麻豆久久一区二区| 国产成人aaa| 91久久精品国产91久久性色tv| 中文在线一区| 欧美日韩国产一级二级| 欧美v国产在线一区二区三区| 国产日韩v精品一区二区| 综合婷婷亚洲小说| 日本欧美在线看| 成人高清在线视频| av不卡在线| 4438亚洲最大| 国产精品初高中害羞小美女文| 亚洲超丰满肉感bbw| 久久精品二区亚洲w码| 韩国免费一区| 亚洲欧洲韩国日本视频| 91成人国产精品| 女人天堂亚洲aⅴ在线观看| 日日摸夜夜添夜夜添国产精品 | 国产精品麻豆99久久久久久| 石原莉奈一区二区三区在线观看| 成人免费福利片| 亚洲欧美清纯在线制服| 精品国产一区二区三区四区四| 亚洲美腿欧美偷拍| 免费成人在线视频观看| 欧美日韩伊人| 欧美色图第一页| 国产色一区二区| 精品一区二区三区久久久| 亚洲麻豆av| 日韩欧美成人午夜| 美女网站色91| 国产精品久久久亚洲一区| 久久久亚洲午夜电影| 老司机精品视频一区二区三区| 欧美日韩亚洲一区二区三区在线观看 | 国产精品xxx在线观看www| 欧美色网一区二区| 亚洲三级免费电影| 欧美区亚洲区| 2022国产精品视频| 精品一二线国产| 国产精品综合色区在线观看| 久久久蜜桃精品| 国产成人av电影在线观看| 亚洲欧美日韩国产综合精品二区| 中文字幕欧美区| 99精品视频在线免费观看| 5月丁香婷婷综合| 精品一区二区在线观看| 在线一区二区三区做爰视频网站| 一区二区三区四区亚洲| 不卡视频一二三| 欧美日韩电影一区| 视频一区二区欧美| 在线亚洲观看| 亚洲欧洲美洲综合色网| 欧美涩涩视频| 日本一区二区三区视频视频| 91免费观看视频| 中文字幕第一区第二区| 欧美成人午夜| 亚洲国产精品传媒在线观看| 福利一区福利二区| 91精品国产欧美日韩| 国产精品综合一区二区三区| 欧美日韩卡一卡二| 精品综合久久久久久8888| 在线观看一区不卡| 蜜臂av日日欢夜夜爽一区| 欧洲精品一区二区| 国产一区二区三区在线观看免费 | 日韩一区二区免费电影| 国产一区二区三区不卡在线观看| 欧美日韩在线一区二区| 国产精品18久久久久| 日韩欧美卡一卡二| 99re亚洲国产精品| 国产精品美日韩| 亚洲激情午夜| 一区二区三区 在线观看视频| 一区二区三区导航| 婷婷久久综合九色综合绿巨人| 久久先锋影音| 国产精品一卡二| 精品国产123| 亚洲福利久久| 日本中文字幕不卡| 欧美一区二区三区系列电影| 99久久精品免费精品国产| 国产视频一区二区在线观看| 国产精品v一区二区三区| 亚洲已满18点击进入久久| 欧美中文字幕一二三区视频| 国产精品一区二区在线播放| 久久久久久久久免费| 在线欧美亚洲| 美国毛片一区二区三区| 国产亚洲欧美日韩俺去了| 国产精品毛片va一区二区三区| 蜜桃视频一区二区三区| 欧美大尺度电影在线| 午夜精品av| 亚洲国产精品久久一线不卡| 欧美日韩一卡二卡三卡| 欧美 亚欧 日韩视频在线| 亚洲福利视频三区| 欧美变态tickling挠脚心| 在线观看一区| 蜜桃在线一区二区三区| 精品国产青草久久久久福利| 中文日韩在线| 99在线热播精品免费| 天堂资源在线中文精品| 精品国产一区二区三区av性色| 国产日韩欧美三区| 成人高清视频在线| 日日摸夜夜添夜夜添精品视频| 精品国产一二三区| 色综合久久久久综合| 欧美全黄视频| 国产高清久久久久| 亚洲韩国精品一区| 国产三级精品在线| 一本一道久久a久久精品|