量子计算机就是基于单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. 前端使用 Konva 实现可视化设计器(9)- 另存为SVG

    请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ github源码 gitee源码 示例地址 另存为SVG 这一章增强了另存为的能力,实现" ...

  2. Fiddler在抓取https数据包时如何解决Tunnel to 443的问题?

    学习视频: https://www.bilibili.com/video/BV1zg4y1i7k3?p=2 谷歌浏览器导入证书 1.导出证书到桌面 2.双击安装证书 3.浏览器-->设置--&g ...

  3. redis rdb数据持久化

    面试和工作,持久人都是重点! Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失.所以Redis提供了持久化功能! RDB(Redis ...

  4. NASM中的伪指令

    伪指令不是真正的指令,而是为了方便NASM汇编器而存在,但是它们的地位与真正的指令相同: label: instruction operands ; comment instruction部分就可以是 ...

  5. leaflet 使用kriging.js实现前端自定义插值

    1.GitHub地址:https://github.com/oeo4b/kriging.js 2.核心代码 var variogram = kriging.train(t, x, y, model, ...

  6. 在uGUI正交相机中实现旋转透视效果

    正常uGUI使用正交相机的话,旋转是没有透视效果的,但如果能实现较简单的透视, 对一些效果表现来说还是不错的:见下图(左为透视效果): 正常思路感觉各种麻烦. 因为uGUI使用unity的x和y方向表 ...

  7. IDEA+carbon.now.sh安装使用

    安装 打开IDEA,选择setting-->plugins 搜索carbon.now.sh,点击安装,重启IDEA即可. 使用 选择需要生成的代码,Ctrl+A全选.然后再代码中点击右键,找到o ...

  8. elementui table tree懒加载只能执行一次的解决办法

    绑定 table的:key为随机值,在每次查询更新table时,更改key,就能刷新 table tree 懒加载只能第一次有效的问题, 本来那个懒加载只能执行一次,即使重新绑定了数据列表,再展开,也 ...

  9. truffle 框架complie错误。

    第一次使用trulle框架编译合约发现编译失败,原因是没有在truffle-config.js文件中加入编译器版本. module.exports = { // See <http://truf ...

  10. 文件系统(五):exFAT 文件系统原理详解

    前言 exFAT是微软2006年推出的一种文件系统,距今已快二十年,相比于FAT16和FAT32,exFAT还是算年轻.exFAT一直是微软的一个专用文件系统,直到2019年微软发布它的规范,目前微软 ...