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

2019 年 10 月 29 日 CSDN

作者 | 马超
出品 | 程序人生(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皮柴的话讲这就是这一里程碑对量子计算世界的意义:一个充满可能性的时刻。

【END】

 热 文 推 荐 

百行代码解读阿里 AloT 芯片平台无剑 100!

给 Python 开发者的四条忠告!| CSDN 博文精选

华为入局 VR 眼镜能让 VR 早普及几年?|CSDN博文精选

我们凭什么相信 5G 很安全?

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

上海梦醒互联网

漫画:要跳槽?这道缓存设计题你有必要看看!

点击阅读原文参与问卷,好礼送不停!

你点的每个“在看”,我都认真当成了喜欢
登录查看更多
0

相关内容

量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式。对照于传统的通用计算机,其理论模型是通用图灵机;通用的量子计算机,其理论模型是用量子力学规律重新诠释的通用图灵机。从可计算的问题来看,量子计算机只能解决传统计算机所能解决的问题,但是从计算的效率上,由于量子力学叠加性的存在,目前某些已知的量子算法在处理问题时速度要快于传统的通用计算机。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
专知会员服务
171+阅读 · 2020年6月4日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
107+阅读 · 2020年5月3日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
《深度学习》圣经花书的数学推导、原理与Python代码实现
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
5大必知的图算法,附Python代码实现
AI100
4+阅读 · 2019年9月10日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
教你用Python进行自然语言处理(附代码)
数据派THU
6+阅读 · 2018年3月28日
干货:10 种机器学习算法的要点(附 Python代码)
全球人工智能
4+阅读 · 2018年1月5日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
循环神经网络的介绍、代码及实现
AI研习社
3+阅读 · 2017年11月21日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Python · SVM(三)· 核方法
机器学习研究会
7+阅读 · 2017年8月8日
GAFT:一个使用 Python 实现的遗传算法框架
Python开发者
10+阅读 · 2017年8月1日
机器学习(7)之感知机python实现
机器学习算法与Python学习
4+阅读 · 2017年7月23日
A Survey on Bayesian Deep Learning
Arxiv
63+阅读 · 2020年7月2日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
53+阅读 · 2018年12月11日
Arxiv
136+阅读 · 2018年10月8日
A Survey on Deep Transfer Learning
Arxiv
11+阅读 · 2018年8月6日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
8+阅读 · 2018年6月19日
Arxiv
6+阅读 · 2018年2月6日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
专知会员服务
171+阅读 · 2020年6月4日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
107+阅读 · 2020年5月3日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
《深度学习》圣经花书的数学推导、原理与Python代码实现
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
相关资讯
5大必知的图算法,附Python代码实现
AI100
4+阅读 · 2019年9月10日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
教你用Python进行自然语言处理(附代码)
数据派THU
6+阅读 · 2018年3月28日
干货:10 种机器学习算法的要点(附 Python代码)
全球人工智能
4+阅读 · 2018年1月5日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
循环神经网络的介绍、代码及实现
AI研习社
3+阅读 · 2017年11月21日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Python · SVM(三)· 核方法
机器学习研究会
7+阅读 · 2017年8月8日
GAFT:一个使用 Python 实现的遗传算法框架
Python开发者
10+阅读 · 2017年8月1日
机器学习(7)之感知机python实现
机器学习算法与Python学习
4+阅读 · 2017年7月23日
相关论文
A Survey on Bayesian Deep Learning
Arxiv
63+阅读 · 2020年7月2日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
53+阅读 · 2018年12月11日
Arxiv
136+阅读 · 2018年10月8日
A Survey on Deep Transfer Learning
Arxiv
11+阅读 · 2018年8月6日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
8+阅读 · 2018年6月19日
Arxiv
6+阅读 · 2018年2月6日
Top
微信扫码咨询专知VIP会员