20 行 Python 代码说清量子霸权!

作者 | 马超

出品 | 程序人生(ID:coder_life)

近日谷歌的有关量子霸权的论文登上了Nature杂志150年刊的封面位置,而再次罢占各大媒体的头条位置,其实这篇文章(https://www.nature.com/articles/s41586-019-1666-5)之前曾经短暂上过NASA的网站,笔者也曾经介绍过过相关论文的情况详见https://blog.csdn.net/BEYONDMA/article/details/101151544?utm_source=app,而这次美国的伊万卡公主甚至也直接发推,官宣美国实现量子霸权。

虽然这次谷歌的论文中声称他们的量子计算机仅用200秒就完成了传统计算机需要上万年才完成的任务,不过ibm等公司也公开回怼称,如果优化算法超算也仅需要几天时间就可以完成,完全谈不上什么霸权。其实笔者后面也会讲道量子计算应用的领域有限,此次的量子采样任务也的确和量子霸权关系不大,媒体略显过度炒作了,笔者本文继续使用最通俗的语言与代码来带各位读者体验一下量子霸权。

 

什么是量子霸权

 

通俗的讲就是量子计算机碾压传统超算的算力。量子计算的速度之源其实是量子比特,以谷歌本次所讲的量子芯片为例,其内部构造如下:

我们可以看到与传统芯片不同的是量子单元由于量子纠缠的存在是有特定的关联关系的,这种不同计算单元中存在的纠缠关系是传统超算各计算单元所不具备的性质。以IBM有关leverage secondary Storage.的论文所述例子如下,当然这只是文中片断仅用于示例:

也就是说在某种特定任务的情况下,量子芯片每增加一个量子单元那么它的算力可以呈指数级上涨,而传统计算机每增加一个CPU其算力只能线性上涨。那么随着量子单元的增加,量子芯片的计算能力必将远超现在的超算。

 

量子计算的限制

 

由于量子单元所表示的量子经特并不是简单的0和1,还有叠加态与相互的纠缠态,其数学表达式非常复杂,无法用于通用计算,对于每种计算任务都需要为量子计算单独设计算法。换言之量子计算机并不是通用计算机,只能用于特定的任务。

 

量子霸权的由来

 

由于量子计算的性质十分复杂,需要非常高超的数学知识才难设计量子算法,而且应用的领域不广,所以在很长一段时间里人们还没有太重视量子计算机的发展,直到用于因式分解的量子算法shor横空出世,说起来其基本并不复杂,具体如下:

步骤1.随机取正整数a,a<N,且与N互质。一般由辗转相关法可得

步骤2.定义函数,求函数f(x)的周期r,如果r为奇数则重取a,再求r,直到r为偶数为止。

步骤3.由可用的辗转相除法求与N的最大公约数n1,n1即为N的一个因子。至此N的因式分解即完成。

这个算法的精髓就是步骤2,它将因式分解问题转化为了求周期r的问题,而求周期的小能手傅里叶变换恰是量子计算的擅长所在。我们知道傅里叶变换是将函数由时域映射到频率域的过程,而频率就是周期的倒数,所以周期问题可以以用傅里叶变换求解,而傅里叶变换的算子与量子比特契合度较高,是量子计算的拿手好戏。所以所谓量子霸权的逻辑是SHOR算法能够攻破rsa算法,而rsa算法又是整个信息安全的基石,所以掌握了量子计算机就等于破解了整个信息安全身份认证体系,从而实现霸权。可以说如果没有SHOR算法的提出,那么也就没有量子霸权的概念了。

 

用Python体验量子算法

 

目前IBM推出的qiskit是非常棒的Python量子模拟器,不过最近新注册用户可能有些困难。如果各位读者之前有IBM Q的帐号可以到他们在线的Notebookhttps://quantum-computing.ibm.com/jupyter环境去感受一直量子傅里叶变换,当然读者如果有Python3.6和C++的编程环境,直接使用pip install qiskit命令即可完成安装, 具体量子傅氏变换的代码及注释整理如下:

import math
 
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
 
import warnings  #忽略告警
 
warnings.filterwarnings('ignore')
 
#定义量子傅里叶变换函数qft
 
def qft(circ, q, n):
 
    """n-qubit QFT on q in circ."""
 
    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文件就能看到咱们刚刚定义的量子电路了,具体效果如下:

 

谷歌所做的工作

 

本次谷歌的量子计算机是一块包含54个量子比特的超导量子计算芯片Sycamore ,不过可惜的是其中一个比特损坏了,所以实际是53量子比特,它使用超低温状态下的铝实现约瑟夫森结,整体运行在20mK以下的环境,以保证超导的状态。

本次的计算任务是量子采样,简单的理解就是量子状态的采集,这个任务可以被广泛应用在量子力学的研究中。根据结果来看Sycamore  200秒约可采样100万次,并且最终结果的保真度预计有0.2%;作为对比,谷歌预计超算 Summit 要得到保真度为0.1% 的结果,需要耗费1万年。

不过值得一提的由于SHOR算法要求的计算错误率不能超过0.7%,所以目前以Sycamore 的精度还不能承担破解rsa体系的任务。由于量子不确定性效应,随着量子比特的增加,控制整个计算芯片的难度也大大增加,谷歌科学们甚至提出了使用机器学习的方式,这在我之前的博客中已经有说明了(https://blog.csdn.net/BEYONDMA/article/details/101151544?utm_source=app)这里不加赘述了,不过能实现如此多单元的量子计算机也实属创举。

 

写在最后

 

虽然量子计算只能应用于特定场景,且量子霸权主要也主要是指量子计算可以破解rsa安全体系,但是也不能否定本次谷歌在量子计算领域的进展与成果。客观的讲谷歌只是迈向了通向量子霸权之路的第一步,但是所有伟大的IT项目都是从“hello world”做起的。

用谷歌CEO皮柴的话讲这就是这一里程碑对量子计算世界的意义:一个充满可能性的时刻。

极简JAVA学习营第五期

01-19
想学好JAVA必须要报两万的培训班吗? 【课程背景】 JAVA是市场份额最大的编程语言,每天各大招聘网站上都会有数万个JAVA开发工程师的在招岗位,但是JAVA的技术体系庞大复杂,要想扎实掌握JAVA不是一件容易的事,线上学习相比线下两万起的高昂费用便宜了很多,而且具备学习时间灵活的优势,但是线上学习的劣势也很明显,没有线下那种学习氛围,碰到问题没法解决,在家学习很容易偷懒,极简JAVA学习营充分考虑到这些问题,通过每日实战编程练习,分队pk,助教答疑,作业点评,作业讲解,项目答辩等诸多环节充分激发你的学习热情,解决你学习中碰到的问题,让你花十分之一的钱学到JAVA的精髓,开启你的人生逆袭之路。 【专项的贴心服务】 1. 学练结合:定期布置视频任务和编程实战练习:通过每天的视频任务统一大家的进度,以便同学更好的交流,针对每天的任务会有相应的编程实战练习,通过练习内化知识。 2. 分队PK:将就业营的同学分成几队,通过作业统计表统计每队提交作业情况进PK,激发你的学习动力。 3. 助教讲师答疑:碰到任何问题,发到群里,助教和讲师十分钟内帮你解决问题,扫学习中的障碍。 4. 助教点评讲解作业:你每天提交作业都会有助教进点评,让你知道有什么问题怎么解决,每三天一次视频讲解作业,互动解答问题 5. 项目答辩:每个阶段学完会有项目答辩,通过做项目巩固前一阶段的知识点,锻炼编码能力。 【往期训练营学习展示】 【套餐内容简介】 本套课以市场就业和职位需求为核心,从JAVA入门到多领域实战,设计出学习路线,共分为二十大模块,分别是:JAVA面向对象、Object类与常用API、集合框架、IO流、反射注解、多线程与网络编程、Object类与常用API等等。 同时采用理论讲解加实战演练的方式,既能让学员听懂听明白达到理解透彻,又能够在一个个真实实战案例中,让学员掌握真正有用的开发技能,从而进阶 JAVA 工程师! 套餐中一共包含21门JAVA程,助你从零进阶JAVA工程师! 阶段一:JAVA基础 课程1:《极简JAVA学习营开营篇》 课程2:《极简JAVA:JAVA面向对象》 课程3:《极简JAVA:Object类与常用API》 课程4:《极简JAVA:集合框架》 课程5:《极简JAVA:IO流》 课程6:《极简JAVA:反射注解》 课程7:《极简JAVA:多线程与网络编程》 阶段二:数据库入门 课程8:《极简JAVA:MySql数据库》 课程9:《极简JAVA:JDBC与连接池》 阶段三:JAVA WEB 课程10:《极简JAVA:HTML5与CSS3》 课程11:《极简JAVA:极简JAVA十一:Javascript与Jquery》 课程12:《极简JAVA:BootStrap》 课程13:《极简JAVA:JAVA Web》 阶段四:框架实战 课程14:《极简JAVA:Mavean入门》 课程15:《极简JAVA:MyBatis框架》 课程16:《极简JAVA:Spring框架》 课程17:《极简JAVA:Spring Mvc》 课程18:《极简JAVA:Oracle数据库》 课程19:《极简JAVA:Git入门》 课程20:《极简JAVA:Linux入门》 课程21:《极简JAVA:SpringBoot》 【课程特色】 1、易理解:讲师思路晰、节奏明确、从易到难讲解透彻明白; 2、知识全:知识全面系统,从JAVA入门到实战,由易到难,让你彻底掌握JAVA开发; 3、重实战:涵盖大量实战项目,锻炼你的动手实操能力,面向工作编程; 【面向人群】 1、在校计算机专业或者对软件编程感兴趣的学生; 2、零基础想学JAVA却不知道从何入手 3、囊中羞涩,面对两万起的JAVA培训班不忍直视 4、在职没有每天大块的时间专门学习JAVA 这么细致的服务,这么好的氛围,这样的学习效果,你还等什么?赶紧报名吧,抓紧抢位,本期只招100人,错过只有等时间待定的下一期了
©️2020 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值