日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

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

首先介紹一個最基本的使用方法,就是使用ProjectQ來打印量子算法中所輸入的量子門操作,這里使用到了ProjectQ中的DummyEngine后端用于保存操作的指令。比如最簡單的一個Bell State的制備,可以通過如下代碼實現(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)

運行結(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]

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

封裝的操作

在量子算法的實現(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)中,只能夠識別支持的指令操作,這里的含時演化操作可能并未在量子硬件體系中被實現(xiàn),因此我們就需要在將指令發(fā)送給量子硬件之前,就對其進行分解。

含時演化算符的分解

這里我們直接調(diào)用ProjectQ的配置中的restrictedgateset方法進行操作分解,我們將單比特門操作的范圍放寬到所有的操作,但是雙比特操作只允許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是一個完備的量子門集合,因此一般我們可以直接使用這個集合來進行量子門操作指令集的限制。

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é)概要

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久av免费看| 欧美一区三区| 欧美激情视频一区二区三区免费| 免费一级欧美片在线观看网站| 日韩电影免费在线观看| 久久国产直播| 亚洲三级视频| 精品视频网站| 欧美特黄一区| 欧美精品三级在线| 中文字幕人成乱码在线观看| 午夜国产一区二区| 青青草国产成人99久久| 国产精品久久久久蜜臀| 国产视频一区免费看| 欧美亚洲综合视频| 日韩中文字幕高清在线观看| 亚洲一区二区三区高清不卡| 国产一卡不卡| 久久九九精品| 日韩精品导航| 久久精品91| 国产探花一区在线观看| 久久久影院免费| 日韩高清不卡一区| 久久久精品网| 国产精品一区二区精品| 免费观看不卡av| 国产精品扒开腿做爽爽爽软件| 亚洲第一精品影视| 国产精品流白浆在线观看| 欧美在线资源| 国产精品22p| 黑丝一区二区三区| 精品伊人久久久| 亚洲五月综合| 久久裸体视频| 国产精品亚洲综合色区韩国 | 国产一区二区三区探花| 99亚洲视频| 精品成人18| 日韩在线观看一区二区三区| 欧美成人基地| 美女久久99| 中文字幕成人| 欧洲一级精品| 精品视频高潮| 欧美亚洲国产日韩| 国产亚洲福利| 三上悠亚国产精品一区二区三区 | 久久亚洲黄色| 四虎精品永久免费| 欧美搞黄网站| 日本在线啊啊| 麻豆91精品91久久久的内涵| 亚洲精品高潮| 欧美午夜精彩| 国产一区国产二区国产三区| 天堂精品久久久久| 欧美91福利在线观看| www在线观看黄色| 国产精品手机在线播放| 免费日韩视频| 九一国产精品| 亚洲涩涩在线| 水蜜桃精品av一区二区| 国产精品最新| 欧美日韩亚洲一区在线观看| 日韩中文字幕av电影| 99久久久久久中文字幕一区| 久久精品免视看国产成人| 日韩精品中文字幕一区二区| 国产精品美女| 国精品一区二区三区| 女生影院久久| 美女av在线免费看| 久久99视频| 国产精品亚洲片在线播放| 亚洲三级网址| 免费成人性网站| 亚洲在线观看| 欧美日韩视频一区二区三区| 不卡中文字幕| 国产在线不卡| 黑丝美女一区二区| 欧美网站在线| 午夜久久福利| 91精品99| 黄色日韩在线| 在线国产一区| 91久久久久| 国产精品外国| 日韩精品一二三四| 石原莉奈一区二区三区在线观看| 国产视频一区免费看| 夜夜嗨av一区二区三区网站四季av| 久久久久国产精品一区三寸| 日韩精品麻豆| 欧美亚洲激情| 午夜日韩在线| 日韩精品一二区| 日韩一区二区三区四区五区| 日韩一区免费| 国产激情久久| 国产一区国产二区国产三区| 麻豆视频在线观看免费网站黄 | 久久国产婷婷国产香蕉| 国产精品一区高清| 精品国产乱码久久久| 国产成人精品一区二区三区在线| 国产一区三区在线播放| 成人亚洲欧美| 久久久久.com| 尤物在线精品| 亚洲精品九九| 久久国产三级精品| 欧美1区2区3| а√天堂8资源中文在线| 私拍精品福利视频在线一区| 国产美女精品| 日韩av黄色在线| 久久精品伊人| 精品丝袜在线| 国产亚洲在线观看| 91精品视频一区二区| 精品中国亚洲| 欧美精品一区二区三区精品| 日韩精品一二三区| 国产精品久久久久久模特| 国产精品久久观看| 亚洲色诱最新| 久久国产生活片100| 国产精品成久久久久| 99成人在线视频| 激情六月综合| 亚欧洲精品视频在线观看| 久久丁香四色| 精精国产xxxx视频在线播放| 中日韩男男gay无套| 国产区精品区| 日韩三区免费| 亚洲视频国产精品| 久久精品人人| 国产视频一区免费看| 国产精品手机在线播放| 播放一区二区| 亚洲少妇在线| 国产精品白浆| av不卡在线| 麻豆精品视频在线观看免费| 亚洲精品成人| 国产精品日本一区二区三区在线 | 国产精品午夜一区二区三区| 久久三级福利| 国产三级一区| 亚洲伦乱视频| 青青草91久久久久久久久| 国产一区二区三区不卡av| 一本一道久久a久久精品蜜桃| 久久国产麻豆精品| 欧美粗暴jizz性欧美20| 国产精品一区二区三区美女 | 夜夜嗨一区二区三区| 国产精品亚洲四区在线观看| 999精品色在线播放| 国产亚洲人成a在线v网站| 亚洲国产成人二区| 一本综合精品| 国产精品久久观看| 日韩一区二区三区免费视频| 日韩在线观看| 国产亚洲高清在线观看| 91精品一区国产高清在线gif | 日韩av网站免费在线| 国产一区欧美| 免费一级欧美片在线观看网站| 亚洲激情中文在线| 黄色欧美在线| 蜜臀av国产精品久久久久| 日韩av二区| 一区二区亚洲视频| 激情六月综合| 红杏一区二区三区| 综合干狼人综合首页| 久久精品成人| 麻豆国产精品777777在线| 石原莉奈一区二区三区在线观看| 超碰在线99| 国产日产精品_国产精品毛片| 狠狠爱成人网| 亚洲性色av| 精品一区91| 青青国产91久久久久久| 亚洲一区二区毛片| 999精品在线| 精品国产一区二区三区性色av| 亚洲精品无播放器在线播放| 日韩视频免费| 久久精品动漫| 欧美精品高清|