导读:美国实现量子霸权了吗?本文用最通俗的语言与代码来带各位读者体验一下量子霸权。

本文经授权转自公众号程序人生(ID:coder_life),作者:马超

近日谷歌的有关量子霸权的论文登上了Nature杂志150年刊的封面位置,而再次罢占各大媒体的头条位置,其实这篇文章之前曾经短暂上过NASA的网站,而这次美国的伊万卡公主甚至也直接发推,官宣美国实现量子霸权。

虽然这次谷歌的论文中声称他们的量子计算机仅用200秒就完成了传统计算机需要上万年才完成的任务,不过ibm等公司也公开回怼称,如果优化算法超算也仅需要几天时间就可以完成,完全谈不上什么霸权。

其实笔者后面也会讲道量子计算应用的领域有限,此次的量子采样任务也的确和量子霸权关系不大,媒体略显过度炒作了,笔者本文继续使用最通俗的语言与代码来带各位读者体验一下量子霸权。

01 什么是量子霸权

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

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

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

02 量子计算的限制

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

03 量子霸权的由来

由于量子计算的性质十分复杂,需要非常高超的数学知识才难设计量子算法,而且应用的领域不广,所以在很长一段时间里人们还没有太重视量子计算机的发展,直到用于因式分解的量子算法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算法的提出,那么也就没有量子霸权的概念了。

04 用Python体验量子算法

目前IBM推出的qiskit是非常棒的Python量子模拟器,不过最近新注册用户可能有些困难。如果各位读者之前有IBM Q的帐号可以到他们在线的Notebook环境去感受一直量子傅里叶变换:

https://quantum-computing.ibm.com/jupyter

当然读者如果有Python3.6和C++的编程环境,直接使用pip install qiskit命令即可完成安装, 具体量子傅氏变换的代码及注释整理如下:

import mathfrom qiskit import QuantumRegister, ClassicalRegister, QuantumCircuitimport warnings  #忽略告警warnings.filterwarnings('ignore')#定义量子傅里叶变换函数qftdef 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_drawercircuit_drawer(qft_n,filename='./qft_circuit')#可视化

然后打开在你运行以上代码的目录打开qft_circuit文件就能看到咱们刚刚定义的量子电路了,具体效果如下:

05 谷歌所做的工作

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

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

不过值得一提的由于SHOR算法要求的计算错误率不能超过0.7%,所以目前以Sycamore 的精度还不能承担破解rsa体系的任务。由于量子不确定性效应,随着量子比特的增加,控制整个计算芯片的难度也大大增加,谷歌科学们甚至提出了使用机器学习的方式,这里不加赘述了,不过能实现如此多单元的量子计算机也实属创举。

06 写在最后

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

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

有话要说

20 行 Python 代码说清量子霸权!相关推荐

  1. 20行Python代码说清“量子霸权”

    作者 | 马超 来源 | 程序人生(ID:coder_life) 近日谷歌的有关量子霸权(Quantum Supremacy)的论文登上了Nature杂志150年刊的封面位置,而再次罢占各大媒体的头条 ...

  2. python视频压缩算法_Python入门到精通视频,阿里巴巴大力推荐,20行Python代码,无损压缩千百张图片!...

    阿里巴巴推荐,Python基础入门,Python小白书籍,Python学习路线,Python进阶,Python高级,Python爬虫等等一系列关于Python的文档和视频(包括hadoop,fink, ...

  3. 20行Python代码,无损压缩千百张图片!

    前言 每个设计师.摄影师或有图片处理需求小编,都会面临批量高清大图的困扰. 因为高清大图放到网站上会严重拖慢加载速度,或是有的地方明确限制了图片大小,因此,为了完成工作,他们总是需要先把图片压缩,再上 ...

  4. 项目分享丨20行Python代码,无损压缩千百张图片!

    前言 每个设计师.摄影师或有图片处理需求小编,都会面临批量高清大图的困扰. 因为高清大图放到网站上会严重拖慢加载速度,或是有的地方明确限制了图片大小,因此,为了完成工作,他们总是需要先把图片压缩,再上 ...

  5. python小游戏代码大全-20行python代码的入门级小游戏的详解

    背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...

  6. 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...

  7. 20行 Python 代码爬取王者荣耀全英雄皮肤 | 原力计划

    作者 | wangweijun 责编 | Elle 出品 | CSDN 博客 引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王 ...

  8. 20行Python代码爬取王者荣耀全英雄皮肤改进版

    0 写在前面 看了大神的这篇CSDN:20行Python代码爬取王者荣耀全英雄皮肤访问量那么高,忍不住想要蹭一下热点,但是蹭归蹭,总得有点货才行,于是我品我细品,发现其代码总体有三点我觉得值得改进的地 ...

  9. [转载]20行Python代码爬取王者荣耀全英雄皮肤

    20行Python代码爬取王者荣耀全英雄皮肤,这是高手.原文链接: https://blog.csdn.net/qq_42453117/article/details/103190981 除了语言学习 ...

最新文章

  1. Java开发面试题及答案,SpringBoot统一日志处理原理
  2. CentOS配置SSH单向无密码访问
  3. 子网,变长子网及超网(CIDR)
  4. Java黑皮书课后题第5章:5.4(将英里转换成千米)编写程序,显示下面的表格(注意:1英里为1.609千米)
  5. Java对象转换成Map
  6. vue-codemirror基本用法:实现搜索功能、代码折叠功能、获取编辑器值及时验证
  7. Cesium场景导出为图片
  8. 线性代数的相关计算(numpy)
  9. java 发送 json数据_Java web中怎样取得Android通过post发送的json数据
  10. 视频ToneMapping(HDR转SDR)中的颜色空间转换问题(BT2020转BT709,YCbCr、YUV和RGB)
  11. 世界各国国家货币代码大全[收藏]
  12. 查询-SPJ练习2参考答案
  13. SNN系列|学习算法篇(1)Tempotron
  14. apidoc生成文档时报错
  15. FairMOT多目标跟踪(安装+代码解读)
  16. dell屏幕亮度调节不了_Win10屏幕亮度调不了怎么办-百度经验
  17. ABP VNext学习日记2
  18. win10计算机日历不能用,win10系统自带日历应用不显示节日的解决方法
  19. 分式计算机,计算机网络与分式系统.ppt
  20. 使用opencv-python和dlib实现的简单换脸程序

热门文章

  1. Spring Boot笔记-Hibernate中@ManyToOne及@OneToOne
  2. Qt工作笔记-通过C++使widgets与QQuick交互(包含qml界面对象与C++对象映射)
  3. Linux学习笔记-协同进程基础
  4. java sqlite 创建_关于Java:创建3个由sqlite数据库填充的微调器
  5. 关于端到端通信的讨论(P2P)
  6. react中嵌入网页_在网站中添加 React
  7. go修改服务器时间,Windows 配置时间同步服务器以及配置时间同步间隔
  8. android 进度条 代码,Android 进度条使用详解及示例代码
  9. linux脚本里使用sftp,如何在shell脚本里使用sftp批量传送文件
  10. Android开发:5-1、Adopter