量子计算简介和ProjectQ 入门(一)
admin
2023-06-23 11:00:30
0

原创声明:
本人在知乎上全部答案,及专栏文章,均为本人原创作品。
请任何和个人、组织,在经过本人授权后,方可转载。

前言:本人T大物理系本科生一枚,长期沉迷二次元,最近主攻量子计算。初学python时发现网上有很多教程,真的帮助很大。后来用到projectQ时,却发现在我的搜索能力内找不到合适的教程,官网给的示例又实在是太少,于是用了将近一个礼拜阅读源代码,才发现其实是很简单的一件事。于是准备结合自己短暂的学习经历写一点点帮助。能力有限,如有问题,欢迎指正。

阅读本文你需要的基础有:

一点点python基础

了解量子计算的一些常用门:H、T、CNOT……

量子计算最基本的概念:叠加态、纠缠态、测量、算符、量子态……

阅读本文不需要的基础有:

精通编程

精通计算机

精通量子力学

精通二次元

如果你对量子计算感兴趣,欢迎你上网搜索相关内容,常用门和常用概念的介绍是很多的,出于版权问题,在此不贴连接。

————————————————分割线————————————————

一:量子计算简介

百度百科量子计算,你可以得到最基本的一些了解。

简单来说,量子计算通过将qubit置于叠加态和纠缠态,可以加速某些特定的计算过程。由于芯片上导线宽度已接近7nm,继续令导线变细将接近量子尺度(0.1nm~1nm,对于通常体系,大概是这个数量级),因此难以通过这条路提升计算速度。另一方面,如今超级计算机耗电量相当大,能源损耗很大。在很多技术问题的背后,是物理极限,擦除1bit的信息,需要付出k*T*Ln(2)的能量代价(目前最好的计算机能耗为500 k*T*Ln(2),可以看出,还有很多优化潜力。如果错了欢迎指正)而量子计算理论上来说能耗下限为0。因此,量子计算是最重要的潜力科技之一。

量子计算包含的内容,简单来说是从硬件过渡到软件。本人目前了解到的大概包括以下几个部分。通过百度或者查找文献综述,都能看到相关内容:

1、硬件部分:物理上实现量子计算qubit,例如离子阱体系、核磁共振体系、超导体系、半导体量子点体系、拓扑体系……因体系而异,目前最大比特数在50上下(2000个左右的

D-wave不参与排序,它是专用量子计算机,本文指的是通用量子计算机)

2、控制部分:从经典装置调控制作好的物理硬件。例如,激光脉冲控制离子阱、核磁共振,调控电压控制半导体量子点……

3、通信部分:量子计算机之间通过光子等方法通信(目前似乎只有光子通信)

4、编码部分:目前的qubit不稳定,单个qubit错误率在10^-5这一数量级。为了大规模计算,必须继续降低错误率。通过将3个物理qubit封装成一个逻辑qubit,或者其他各类编码方法可以实现这一目的。

5、门电路部分:将硬件整体封装为基本门。正如经典电路可以用与或非这样的基本门来组成,量子电路可以用H、T、Phase、CNOT门这四个基本门来实现。

6、软件部分:如何优化控制、如何软件仿真qubit、如何进行量子化学计算、如何优化门电路、如何将经典程序与量子程序对接……

7、算法部分:如何通过算法加速计算,体现量子计算的优势?目前已有成果包括几大类:快速傅里叶分解(舒尔算法分解质数、相位估计),无序搜索(Grover算法、精确Grover算法),HHL算法(求解Ax=b的线性方程组)。相比于海量的经典算法,量子算法其实相当稀缺,这也正体现了其困难与威力。

8、量子机器学习:其实和算法重叠度挺高的,但最近一直很火,于是单列一条。在我认知范围内,现有的量子机器学习算法都无法在现有的量子计算机上实现。

9、量子信息部分:这一部分我相当不明白,以下内容全部是胡说。纠缠熵、拓扑序什么的,还有量子信息的全息性质,与黑洞有相当大的关联。一种理论(发表在PRL上,不是民科)表明黑洞可能正是量子纠缠,还有一种理论(文小刚教授的弦网理论,也是正是发表的理论)更进一步,预言整个世界都是由量子信息和量子纠缠构成。

注:从研究方向和研究人员来看,一路上从物理、到电子自动化、计算机软件算法,最后又回到了物理,真是太神奇了

二:量子计算软件简介

量子计算软件连接了量子门和量子算法,是整个研究链上重要的一环。常见的量子计算软件有(我基本都没用过,因此只是列举一下)

1、projectQ. 苏黎世联邦理工学院启动的量子计算开源软件框架,与IBM 5bit云上量子计算兼容。Project可以将程序转换为任何类型的后端,无论是在经典计算机上运行的模拟器还是实际的量子芯片。(其他的大概也都可以)

2、Q#. 微软,没有用过,感兴趣欢迎自行了解

3、QCEngine. python, github上面有,只用过一点点,感兴趣欢迎自行了解

4、Hiq. 华为,基于projectQ

5、Qpanda. 本源量子,与中科大合作的研究量子计算的公司

6、QISKit. IBM

7、TensorFlow Quantum. 谷歌

……

可能还有,也可能没有了。对于一个学物理的,光是看到这么多软件的名字就已经让我够头疼了,他们各自的函数库就更是要我的命了。鉴于目前我在参加华为的比赛,还是给华为HiQ打一个广告吧

https://hiq.huaweicloud.com/doc/

三:ProjectQ简介

官网先上https://projectq.readthedocs.io/en/latest/

ProjectQ是基于python编译、python/C++运行的(按照我的理解)一个用于量子计算的在github上开源的库。使用时,主要是用户直接编写门电路,或者自定义函数编写门电路。由于是通过python编写,开发比较友好。然后执行时,ProjectQ会对输入的门电路编译优化执行。唯一的缺点是,代码示例太少,网上也没有好的教程。

(一)下载安装

详见官网,基本上pip就可以了

(二)简单使用

#首先引用相关包

from projectq import MainEngine

from projectq.ops import H, Measure, CNOT,All

#初始化引擎,这里使用默认引擎

eng=MainEngine()

#初始化qureg(qubit的list)

Qureg=eng.allocate_qureg(2)

#执行你需要的门

H | Qureg[0]

CNOT | (Qureg[0],Qureg[1])

All(Measure) | Qureg

#冲一下引擎(需要注意的,有些引擎不冲也会跑,有些需要冲一下,下次再讲)

eng.flush()

#取出测量结果,简单的int就可以

c0=int(Qureg[0])

c1=int(Qureg[1])

print(c0)

print(c1)

#最终结果00或者11

(三)自定义函数

#普通的python函数

def f1(Qureg):

H | Qureg[0]

CNOT | (Qureg[0],Qureg[1])

All(Measure) | Qureg

#普通的函数调用

eng=MainEngine()

Qureg=eng.allocate_qureg(2)

f1(Qureg)

eng.flush()

c0=int(Qureg[0])

c1=int(Qureg[1])

print(c0)

print(c1)

#这两个程序是完全一样的

到此为止都是正常而简单的过程,只需要相信ProjectQ会帮我们做好一切。然而为了实现一些更加复杂的功能,就不得不明白很多细节。这篇文章已经很长了,下一篇我会讲解一下这些引擎到底是什么,他们又是如何运转的,感兴趣的可以关注一下我***`(*>﹏<*)′如果关注和催更的人多了,我会对抗睡魔起来敲文章的。

第一次在知乎上发文章,还请各位教教如何保护原创。

不说了,回去睡吧



相关内容