量子计算机就是基于单qubit门和双qubit门的,再多的量子操作都是基于这两种门。双qubit门比单qubit门难理解得多,不过也重要得多。它可以用来创建纠缠,没有纠缠,量子机就不可能有量子霸权。

CNOT门(受控非)

C是受控Controlled的首字母

受控非们作用在两个qubit上,一个叫控制位\(|\text{x}\rangle\),一个叫目标位\(|\text{y}\rangle\)。如果控制位是\(0\),目标位不变;如果控制位是\(1\),目标就反转:



所以有

\[|00\rangle\overset{CNOT}{\rightarrow}|00\rangle,|01\rangle\overset{CNOT}{\rightarrow}|01\rangle,|10\rangle\overset{CNOT}{\rightarrow}|11\rangle,|11\rangle\overset{CNOT}{\rightarrow}|10\rangle
\]

受控非们的图示是



实现的能力是

\[|x\rangle\otimes|y\rangle\rightarrow|x\rangle\otimes\left(|x\rangle\oplus|y\rangle\right)
\]

\(\oplus\)是模2加法(也就是异或)。更简单的写法是

\[|x,y\rangle\rightarrow|x,x\oplus y\rangle\
\]

控制位可以是多个基向量的叠加态,比如3qubit

\[|1\rangle\otimes|0\rangle\otimes|1\rangle\equiv |101\rangle\equiv |5\rangle
\]

CNOT的矩阵如下

\[\mathbf{CNOT}=
\begin{bmatrix}
1&0 &0 &0 \\
0&1 &0 &0 \\
0& 0& 0&1 \\ 0& 0& 1&0
\end{bmatrix}
\]

最后再看个例子巩固一下CNOT门的能力认知:

\[|1\rangle\left(|0\rangle-|1\rangle\right)\rightarrow|1\rangle\left(|1\rangle-|0\rangle\right)
\]

怎么快速得到这个结果呢(所谓快速就是不用去进行矩阵乘法,实际就是利用门的性质,没什么快不快)?控制位1不变,目标位与1异或(上面讲了\(\oplus\)的实际表现是异或),所以1变0,0变1。

受控U门

受控U门就是受控酉门,它把受控非门的能力泛化到了任意的酉矩阵上:当控制位是\(0\)时啥也不干;当控制位是\(1\)时,给目标位应用对应的酉矩阵\(U\)。电路图如下

\[|0x\rangle\rightarrow|0x\rangle\\
|1x\rangle\rightarrow|1,Ux\rangle
\]

比如受控Z门的矩阵:

\[CZ=\begin{bmatrix}
1&0 &0 &0 \\
0&1 &0 &0 \\
0& 0& 1&0 \\ 0& 0& 0&-1
\end{bmatrix}
\]

量子并行机制

上面这些都是量子并行性的体现,也就是把一个函数应用到叠加态的\(|x\rangle\)上

\[|x,y\rangle\overset{U_f}{\rightarrow}|x,y\oplus f(x)\rangle
\]

\(f(x)\)是什么?是给一个辅助qubit应用酉矩阵\(U_f\)得到的,一般辅助位可以使用\(|0\rangle\)

假设我们制备的\(|x\rangle\)在布洛赫球的赤道上:



结果就是

\[\frac{|0,f(0)\rangle+|1,f(1)\rangle}{\sqrt{2}}
\]

看出并行性了吗?结果中同时计算出了每个基向量的受控U门应用结果。

再看一个例子。我们通过使用哈德玛门制备\(|x\rangle\)

\[\frac{1}{\sqrt{2^q}}\sum_{x=0}^{2^q}|x\rangle
\]

然后我们使用受控U门



根据并行机制,每个叠加态从0到\(2^q\)做控制位,目标位函数是\(7^x mod 15\),结果是他们的和。下图是一个近似的例子

\[\frac{1}{\sqrt{r2^t}}\sum_{s=0}^{r-1}\sum_{j=0}^{2^t-1}e^{2\pi isj/r}|j\rangle|u_s\rangle
\]

受控U门的实现

矩阵\(U\)可以写成

\[U=e^{i\alpha}AXBXC
\]

其中\(A\)门、\(B\)门和\(C\)门都是单qubit操作,并且\(ABC=I\)。这样受控U门可以分解成下面这样

这样的分解对于相位估计和其他算法都非常重要,后面会看到。接下来顺理成章的该看看多量子位操作,当然也是基于2qubit门的。

托佛利门(TOFFOLI gate)

托佛利门有两个控制位,可以模拟标准的布尔操作:如果两个控制位都是1,就把目标位反转,所以也称作控控非门

\[(a,b,c)\overset{托佛利门}{\rightarrow}(a,b,c\oplus ab)
\]



托佛利门是幺正的,如果两次使用它,就和哈德玛门一样恢复如初:

\[(a,b,c\oplus ab)\rightarrow(a,b,c\oplus ab\oplus ab)\rightarrow(a,b,c)
\]

可以通过单qubit门和双qubit门结合实现托佛利门



当然实际的实现要复杂得多,是这样的(下面这些门我们都接触过了)



控控非门的矩阵也比较大:

\[\begin{bmatrix}
1&0 &0 &0 &0 &0&0&0 \\
0&1 &0 &0 &0 &0&0&0 \\
0&0 &1 &0 &0 &0&0&0 \\
0&0 &0 &1 &0 &0&0&0 \\
0&0 &0 &0 &1 &0&0&0 \\
0&0 &0 &0 &0 &1&0&0 \\
0&0 &0 &0 &0 &0&0&1 \\
0&0 &0 &0 &0 &0&1&0
\end{bmatrix}
\]

再强调一下,只有两个控制位一起是1才反转:

受控SAT门

看一个受控U门的例子,来自stackexchange,先看3-SAT问题。SAT问题在逻辑学课程和高级算法课程中都会讲到。当变量增加时,它的求解难度急剧上升。

SAT问题是第一个NPC问题

这个范式中的符号的含义可以看我之前的文章《自然演算规则

我们需要创建这样的电路:

\[|\Psi_2\rangle=\frac{1}{\sqrt{2^n}}\sum_{x\in \{0,1\}^n}|x\rangle|f_{SAT}(x)\rangle
\]

也就是我们需要\(n\)个控制位,一起控制第\(n+1\)个目标位



对于上面那个3-SAT的例子,它的线路图是



下面部分是4个工作位和一个目标位,4个工作位是为了存储临时信息来制备目标位。为了重复利用qubit,通常会使用反转逻辑来重置qubit



下面这个就是完整的Grover算法电路图:



因为经过重置,辅助位不变化,所以方程中(上面的方程)通常会把他们忽略掉,而且它们存储的信息也被称为“垃圾”!

量子纠缠

再看一个创建纠缠态的例子,需要用到受控非门

\[\hat{U}_{CNOT}\left(\frac{1}{\sqrt{2}}\left(|\uparrow\rangle+|\downarrow\rangle\right)\otimes|\uparrow\rangle\right)=\frac{1}{\sqrt{2}}\begin{pmatrix}
1& 0& 0 & 0 \\
0 & 1 & 0 &0 \\
0& 0 &0 &1 \\ 0& 0 &1 &0
\end{pmatrix}\begin{pmatrix}
1 \\
0 \\
1 \\ 0
\end{pmatrix}=\frac{1}{\sqrt{2}}\begin{pmatrix}
1 \\
0 \\0\\
1
\end{pmatrix}
\]

上面在使用CNOT前先使用的哈德玛门



对于不同的输入,会产生不同的纠缠结果:

更多例子

上面我们看到了多控制位电路:



实际上目标位也可以多个:



控制位也可以反转:



CNOT也可以同时作用在多目标位:

量子门汇总

不可克隆理论

不可克隆理论表明的是对于任何未知的量子状态,没有任何人能够创建它的精确副本。自然界禁止精确复制任意叠加状态。这个机制对于量子加密特别有用,因为你想知道信息就得测量;但是测量完就坍缩了,就能被发现有人测量了这个状态。

2个qubit的量子门的更多相关文章

  1. [转帖]谷歌宣称首次实现量子优越性,IBM“不服”,中国同行咋看?

    谷歌宣称首次实现量子优越性,IBM“不服”,中国同行咋看? 投递人 itwriter 发布于 2019-10-24 15:46 评论(7) 有306人阅读 原文链接 [收藏] « » https:// ...

  2. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  3. 使用rowid抽取数据方法以及大数据量游标卡住的应对

    平时工作的时候,经常会遇到这种事情,从一个大表A中,抽取字段a在一个相对较小B的表的数据,比如,从一个详单表中,抽取几万个用户号码的话单出来.这种时候,一般来说, 做关联查询: create tabl ...

  4. Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器

    最近在业余时间玩玩树莓派,刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚,从而控制LED发光二极管的闪烁,后来觉得,是不是可以使用HTML5+jQuery等流 ...

  5. 一种简单,轻量,灵活的C#对象转Json对象的方案

    简单,是因为只有一个类 轻量,是因为整个类代码只有300行 灵活,是因为扩展方式只需要继承重写某个方法即可 补充:修正无法处理可空值类型的bug 首先我将这个类称之为JsonBuilder,我希望它以 ...

  6. 一种简单,轻量,灵活的C#对象转Json对象的方案(续)

    本文参考资料 一种简单,轻量,灵活的C#对象转Json对象的方案 [源码]Literacy 快速反射读写对象属性,字段 一段废话 之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的 ...

  7. 基于轻量型Web服务器Raspkate的RESTful API的实现

    在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API. 模块 首先让我们了解一下"模块&quo ...

  8. ArcGIS Engine开发之量测功能

    1.距离测量 距离测量时,片段长度通过两点之间距离计算得到,全部长度通过片段长度的和计算得到.主要用到INewLineFeedback和IScreenDisplay两个接口. 1)INewLineFe ...

  9. Dapper.NET——轻量ORM

    Dapper.NET使用 http://www.cnblogs.com/yankliu-vip/p/4182892.html 本文目录 Dapper.NET使用 1.为什么选择Dapper 2.以Da ...

  10. 编写轻量ajax组件01-对比webform平台上的各种实现方式

    前言 Asp.net WebForm 和 Asp.net MVC(简称MVC) 都是基于Asp.net的web开发框架,两者有很大的区别,其中一个就是MVC更加注重http本质,而WebForm试图屏 ...

随机推荐

  1. Lora训练的参数和性能

    主要为了测试模型增加Lora模块后,参数量和训练速度的变化情况.结论:正常情况下,增加Lora模块是会增加参数量的,因此前向传播和反向传播的时间也会增加.但是,在大语言模型训练的情况下,因为基础模型本 ...

  2. SpringBoot-mybatis-plus 分页

    前言: 想必数据分页对于每一个程序员并不陌生,针对分页查询功能代码实现上:肯定是代码简洁明了且能达到分页的效果会更好! 现在我将基于SpringBoot - mybatisPlus分页查询的方法总结如 ...

  3. Docker打包程序镜像

    简介 做了一个视频检测程序,它是由golang和c++编写的.因为公司要做私有化部署,因此需要打包成镜像然后放到公司的registry镜像仓库里.之前一直没有去熟悉docker,现在刚好机会来了,咱就 ...

  4. ajax递归发送请求

    简介 大家都知道浏览器在处理http网络请求的时候,不同的浏览器会有不一样的并发限制,下表是一些主流浏览器对 HTTP 1.1 和 HTTP 1.0 的最大并发连接数目: Browser HTTP/1 ...

  5. 80x86汇编—分支循环程序设计

    文章目录 查表法: 实现16进制数转ASCII码显示 计算AX的绝对值 判断有无实根 地址表形成多分支 从100,99,...,2,1倒序累加 输入一个字符,然后输出它的二进制数 大小写转换 大写转小 ...

  6. 一文搞懂RESTful开发

    REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描述形式 http: ...

  7. 在线电子表格编辑器 Luckysheet

    下载地址 不知道地址正不正经,我先用着,网上找的地址,不知道是不是可信任的,疑似官网的两个地址都打不开, https://github.com/dream-num/Luckysheet zip包  h ...

  8. 我们小公司,哪像华为一样,用得上IPD(集成产品开发)?

    在一些咨询或活动现场,我们经常听到有朋友说:我们是小公司,IPD(集成产品开发)太厚重了,不适合我们.但--到底哪里不合适? 提及IPD,成功的案例多以大公司为主:20世纪90年代,IBM在激烈的市场 ...

  9. 在唯一密钥属性“name”设置为“XXX”时,无法添加类型为“add”的重复集合项

    我是在调试时,更改了项目url出现的问题,没有改端口号,只是改了"/"后面的地址 这个是我是改哈端口号就好了,改了端口号就重新建立虚拟目录了. 感觉是因为端口号没变,但项目url变 ...

  10. u8二次开发再遇问题再总结

    在调用api生成采购入库单时,报错:该操作会造成订单到货和入库同时存在,请重新检查操作!普通采购必有订单,存货[0501-0304-0075]不能手工录入 这是因为:采购入库单单据必须要录入上游单据, ...