当前位置:网站首页>基于Qiskit——《量子计算编程实战》读书笔记(四)
基于Qiskit——《量子计算编程实战》读书笔记(四)
2022-08-10 05:29:00 【溴锑锑跃迁】
目录
关于Qiskit的QuantumCircuit类和通用门方法
第5章 量子电路
学习本章之目的,在于会看会画量子电路(Quantum Circuit),故而在接下来的学习过程中,不可避免地要画很多电路图——手工地或电脑地,各位可以回想一下初中时学习经典电路图时经历,画的愈多,纠错愈及时到位,这块儿就可以称得上是拿下了。利用本章介绍的量子电路的可视化表示形式,可以轻松地定义量子电路,而无须引用数学或使用编程语言。现在,打开IDE,拿出纸笔,准备开画吧!
量子电路和量子电路图
特别声明:书中所引量子电路图均是本地代码生成,而笔者为了方便,本文中所引图基本上来自于IBM Quantum平台内的Quantum Composer,当然,无论是底层代码还是形式逻辑都相差不多。
请看下图:
首先我们看到最左一侧:有两个量子比特 / 量子寄存器(分别用q0和q1表示)以及相应的经典寄存器(用c2联合表示两个寄存器)。接着我们看到很多如同导线的水平线,将一系列量子门串联起来!这里注意:在量子电路中,每一条量子道(体会“量子道”一词的内涵)的起始量子态都是零态;而每一个经典道的起始经典比特都会被初始化为0。
如上所述,我们看到该图表示的数学无异于,但同时我们还注意到有两个量子寄存器的存在,故而更严谨的表述是:
,量子门对应各自量子态而作用.留心量子门在不同形式下的作用方向!
对于多量子门,以CNOT为例,图示如下,实心圆代表控制位,十字空心圆表示目标位:
最后,就是测量(Measurement)了。我们用一个类似于仪表盘的符号代表测量过程:
多次运行该电路,你将有50%的时间得到00,另50%的时间得到11.
IBM 将其量子电路图称为量子乐谱(Quantum Scores)。在IBM QX中,可以通过量子编辑器(Quantum Composer)创建量子乐谱,这也是借用了音乐的概念。到目前为止,我们学习过的所有门都可以在量子编辑器中找到,当然还有其他一些门。
尽管到目前为止我们已经学习的门形成了通用门集,也就是说,我们可以使用它们的组合来生成任何量子程序,但是在真实的量子计算机上,使用的门越少越好。这是因为每个门都需要时间来执行,门多则容易产生退相干,从而引发错误。
使用Qiskit生成量子电路
Qiskit全称量子信息科学包(Quantum Information Science Kit),是用于与IBM QX量子处理器一起使用的软件开发包。
借Qiskit实现的单量子比特电路
首先,导入创建量子寄存器、经典寄存器以及量子电路的工具:
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
接下来,使用Qiskit制作电路:
qr = QuantumRegister(1) #包含一个量子比特
circuit = QuantumCircuit(qr)
circuit.x(qr[0])
关于Qiskit的QuantumCircuit类和通用门方法
门 | QuantumCircuit类方法名 |
---|---|
I | iden |
X | x |
Y | y |
Z | z |
H | h |
S | s |
S† | sdg |
T | t |
T† | tdg |
CNOT | cx |
多量子比特门
假设要使用Qiskit为CNOT构造一个电路,其中|"+”>作为控制量子比特,|"0" >作为目标量子比特。首先,需要创建一个容纳两个量子比特的量子寄存器,使用的语句为qr = QuantumRegister(2)。其次,需要将寄存器中的每个量子比特作为QuantumCircuit类的cx方法的参数。cx的第一个量子比特参数是控制量子比特,第二个参数是目标量子比特。具体代码如下:
qr = QuantumRegister(2)
circuit = QuantumCircuit(qr)
circuit.h(qr[0])
circuit.cx(qr[0],qr[1])
Qiskit电路中的经典寄存器与测量
qr = QuantumRegister(2)
cr = ClassicalRegister(2)
circuit = QuantumCircuit(qr, cr)
circuit.h(qr[0])
circuit.cx(qr[0], qr[1])
circuit.measure(qr, cr)
当然,测量时还可以指定经典寄存器:
circuit.measure(qr[0], cr[1])
可逆运算
一言以蔽之,对于矩阵A,如果有成立,则说B是A的逆矩阵.在量子计算中,每个门都是可逆的,但根据门的种类不同,逆矩阵也不同(当然也不唯一):
门 | 逆向方法 |
---|---|
I | I |
X | X |
Y | Y |
Z | Z |
H | H |
S | S† |
S† | S |
T | T† |
T† | T |
CNOT | CNOT |
常见量子电路模型
使用X门制备壹态
特别声明:在IBM QX中,IBM采用的方式与教科书相反,也就是上述的10和01在IBM QX中被理解为01和10,这和阅读方向有很大关系!
交换两个量子比特
输入 | 第一个CNOT后 | 第二个CNOT后 | 第三个CNOT后 |
---|---|---|---|
00 | 00 | 00 | 00 |
01 | 01 | 11 | 10 |
10 | 11 | 01 | 01 |
11 | 10 | 10 | 00 |
注意:虽然例子中给出的是基态,实际上该交换算法对于混合态一样成立!
练习和问题
欢迎加入Qiskit交流群: 1064371332
边栏推荐
- EasyGBS连接mysql数据库提示“can’t connect to mysql server”,该如何解决?
- Become a language that hackers have to learn. Do you think it's okay after reading it?
- Pulsar中游标的工作原理
- Joomla漏洞复现
- OneFlow源码解析:算子指令在虚拟机中的执行
- Kubernetes:(十七)Helm概述、安装及配置
- 通过一个案例轻松入门OAuth协议
- 树莓派入门(4)LED闪烁&呼吸灯
- OAuth2的使用场景、常见误区、使用案例
- AVL tree insertion--rotation notes
猜你喜欢
大咖说·对话生态|当Confluent遇见云:实时流动的数据更有价值
虚拟土地价格暴跌85% 房地产泡沫破裂?依托炒作的暴富游戏需谨慎参与
Talk about API Management - Open Source Edition to SaaS Edition
ThreadPoolExecutor thread pool principle
How to use Apifox's Smart Mock function?
CORS跨域资源共享漏洞的原理与挖掘方法
Kubernetes:(十六)Ingress的概念和原理
我用这一招让团队的开发效率提升了 100%!
How does Jenkins play with interface automation testing?
暑期学前作业
随机推荐
如何在报表控件FastReport.NET中连接XLSX 文件作为数据源?
flex related
线性模型中的高级特征选择技术——基于R
Joomla vulnerability reproduced
MySQL simple tutorial
Stacks and Queues | Valid parentheses, delete all adjacent elements in a string, reverse Polish expression evaluation, maximum sliding window, top K high frequency elements | leecode brush questions
Error when installing oracle rac 11g and executing root.sh
What are the common commands of mysql
Big guys, mysql cdc (2.2.1 and previous versions) sometimes has this situation since savepoint, is there anything wrong?
The sword refers to Offer 033. Variation array
An article to master the entire JVM, JVM ultra-detailed analysis!!!
OAuth2 usage scenarios, common misunderstandings, use cases
Get started with the OAuth protocol easily with a case
Conda creates a virtual environment method and pqi uses a domestic mirror source to install a third-party library method tutorial
Concurrency tool class - introduction and use of CountDownLatch, CyclicBarrier, Semaphore, Exchanger
How does Jenkins play with interface automation testing?
在vscode中屏蔽Alt热键
FPGA engineer interview questions collection 11~20
一文带你搞懂OAuth2.0
如何从代码层提高产品质量