教你用Python感受量子霸權

2021-09-29 11:05:02 字數 3282 閱讀 6981

用python的qiskit包體驗量子演算法

一、qiskit的安裝

目前ibm推出的qiskit是非常棒的python量子模擬器,安裝非常簡單

另外如果各位讀者之前有ibm q的帳號,也可以到環境去感受。

基本量子邏輯門介紹

pauli-x gate:相當於經典的邏輯非門。

pauli-y gate:這是乙個複數操作的門

pauli-z gate:這個門保留基本狀態|0〉 不變並且將|1〉 換成- |1〉

hadamard gate:使量子處於疊加狀態。 

cnot gate:使兩個量子處於糾纏態。

swap gate:相互交換兩個量子位。由三個pauli-x gate組成。

ccnot gate:這是乙個操作三個量子位元的的量子邏輯門,如果前兩個量子位元是 |1〉,則對第三個量子位元進行類似於經典的邏輯非門處理,反之則不做操作。

第乙個量子計算的helloworld程式

安裝好環境,就可以執行以下**了,具體如下:

from qiskit import quantumcircuit, classicalregister, quantumregister

from qiskit import execute, aer

q = quantumregister(2)

print(q[0])

print(q[1])

c = classicalregister(2)

print(c[0])

print(c[1])

qc = quantumcircuit(q, c)

qc.h(q[0])

qc.cx(q[0], q[1])

qc.measure(q, c)

#視覺化電路

from qiskit.tools.visualization import circuit_drawer

circuit_drawer(qc,filename=』./qft_circuit』)#視覺化

對於這個量子電路的解釋如下:

什麼是量子霸權

通俗的講就是量子計算機碾壓傳統超算的算力。量子計算的速度之源其實是量子位元,以谷歌本次所講的量子晶元為例,其內部構造如下:

我們可以看到與傳統晶元不同的是量子單元由於量子糾纏的存在是有特定的關聯關係的,這種不同計算單元中存在的糾纏關係是傳統超算各計算單元所不具備的性質。以ibm有關leverage secondary storage.的**所述例子如下,當然這只是文中片斷僅用於示例

也就是說在某種特定任務的情況下,量子晶元每增加乙個量子單元那麼它的算力可以呈指數級**,而傳統計算機每增加乙個cpu其算力只能線性**。那麼隨著量子單元的增加,量子晶元的計算能力必將遠超現在的超算。

量子計算的限制

由於量子單元所表示的量子經特並不是簡單的0和1,還有疊加態與相互的糾纏態,其數學表示式非常複雜,無法用於通用計算,對於每種計算任務都需要為量子計算單獨設計演算法。換言之量子計算機並不是通用計算機,只能用於特定的任務。

量子霸權的由來

由於量子計算的性質十分複雜,需要非常高超的數學知識才難設計量子演算法,而且應用的領域不廣,所以在很長一段時間裡人們還沒有太重視量子計算機的發展,直到用於因式分解的量子演算法shor橫空出世,說起來其基本並不複雜,具體如下:

步驟1.隨機取正整數a,a步驟2.定義函式,求函式f(x)的週期r,如果r為奇數則重取a,再求r,直到r為偶數為止。

步驟3.由和可用的輾轉相除法求與n的最大公約數n1,n1即為n的乙個因子。至此n的因式分解即完成。

這個演算法的精髓就是步驟2,它將因式分解問題轉化為了求週期r的問題,而求週期的小能手傅利葉變換恰是量子計算的擅長所在。我們知道傅利葉變換是將函式由時域對映到頻率域的過程,而頻率就是週期的倒數,所以週期問題可以以用傅利葉變換求解,而傅利葉變換的運算元與量子位元契合度較高,是量子計算的拿手好戲。所以所謂量子霸權的邏輯是shor演算法能夠攻破rsa演算法,而rsa演算法又是整個資訊保安的基石,所以掌握了量子計算機就等於破解了整個資訊保安身份認證體系,從而實現霸權。可以說如果沒有shor演算法的提出,那麼也就沒有量子霸權的概念了。

使用qiskit實現快速傅利葉變換

import math

from qiskit import quantumregister, classicalregister, quantumcircuit

import warnings  #忽略告警

warnings.filterwarnings(『ignore』)

#定義量子傅利葉變換函式qft

def qft(circ, q, n):

for j in range(n):

for k in range(j):

circ.cu1(math.pi/float(2**(j-k)), q[j], q[k])#套用傅利葉就換

circ.h(q[j])

n = 3  #量子位元數量

q = quantumregister(n)

c = classicalregister(n)

qft_n = quantumcircuit(q, c)#定義量子電路,後面可以視覺化

qft(qft_n, q, n)

for i in range(n):

qft_n.measure(q[i], c[i])

print(qft_n.qasm())

from qiskit.tools.visualization import circuit_drawer

circuit_drawer(qft_n,filename=』./qft_circuit』)#視覺化

然後開啟在你執行以上**的目錄開啟qft_circuit檔案就能看到咱們剛剛定義的量子電路了,具體效果如下

雖然這次谷歌的**中聲稱他們的量子計算機僅用200秒就完成了傳統計算機需要上萬年才完成的任務,不過ibm等公司也公開回懟稱,如果優化演算法超算也僅需要幾天時間就可以完成,完全談不上什麼霸權。其實筆者後面也會講道量子計算應用的領域有限,此次的量子取樣任務也的確和量子霸權關係不大,**略顯過度炒作了,筆者本文繼續使用最通俗的語言與**來帶各位讀者體驗一下量子霸權。

谷歌所做的工作

本次谷歌的量子計算機是一塊包含54個量子位元的超導量子計算晶元sycamore ,不過可惜的是其中乙個位元損壞了,所以實際是53量子位元,它使用超低溫狀態下的鋁實現約瑟夫森結,整體執行在20mk以下的環境,以保證超導的狀態。

本次的計算任務是量子取樣,簡單的理解就是量子狀態的採集,這個任務可以被廣泛應用在量子力學的研究中。根據結果來看sycamore  200秒約可取樣100萬次,並且最終結果的保真度預計有0.2%;作為對比,谷歌預計超算 summit 要得到保真度為0.1% 的結果,需要耗費1萬年。

寫在最後

教你用Ruby算命!

本文又名 看看我的破機器能算多少個梅森數出來 如下,mersennes def is prime?n 這裡是用了費馬小定理,很慢很慢!2.n 1 each end 1.13 each do n m 2 n 1 mersennes 上面這個寫法,2 x要計算兩次,寫法好看,但效能很低 p mersen...

小白必看 教你用Python做計算

今天給大家分享的是用python計算等差數列,等比數列。import numpy as np import math import matplotlib as mpl from matplotlib import pyplot as plt from mpl toolkits.mplot3d imp...

手把手教你用Ucos

ucos作業系統的學習 實時作業系統 任務切換,排程 分式作業系統 不可剝奪型核心 ucosii嵌入式實時作業系統的源 分為三部分 與硬體無關的核心 與處理器有關的移植 和使用者配置檔案。ucos最多支援64個任務,優先順序分別對應0 63,其中0為最高優先順序,系統保留4個最高優先順序的任務,和4...