2个qubit的量子门
量子计算机就是基于单qubit门和双qubit门的,再多的量子操作都是基于这两种门。双qubit门比单qubit门难理解得多,不过也重要得多。它可以用来创建纠缠,没有纠缠,量子机就不可能有量子霸权。
CNOT门(受控非)
C是受控Controlled的首字母
受控非们作用在两个qubit上,一个叫控制位\(|\text{x}\rangle\),一个叫目标位\(|\text{y}\rangle\)。如果控制位是\(0\),目标位不变;如果控制位是\(1\),目标就反转:

所以有
\]
受控非们的图示是

实现的能力是
\]
\(\oplus\)是模2加法(也就是异或)。更简单的写法是
\]
控制位可以是多个基向量的叠加态,比如3qubit
\]
CNOT的矩阵如下
\begin{bmatrix}
1&0 &0 &0 \\
0&1 &0 &0 \\
0& 0& 0&1 \\ 0& 0& 1&0
\end{bmatrix}
\]
最后再看个例子巩固一下CNOT门的能力认知:
\]
怎么快速得到这个结果呢(所谓快速就是不用去进行矩阵乘法,实际就是利用门的性质,没什么快不快)?控制位1不变,目标位与1异或(上面讲了\(\oplus\)的实际表现是异或),所以1变0,0变1。
受控U门
受控U门就是受控酉门,它把受控非门的能力泛化到了任意的酉矩阵上:当控制位是\(0\)时啥也不干;当控制位是\(1\)时,给目标位应用对应的酉矩阵\(U\)。电路图如下

|1x\rangle\rightarrow|1,Ux\rangle
\]
比如受控Z门的矩阵:
1&0 &0 &0 \\
0&1 &0 &0 \\
0& 0& 1&0 \\ 0& 0& 0&-1
\end{bmatrix}
\]
量子并行机制
上面这些都是量子并行性的体现,也就是把一个函数应用到叠加态的\(|x\rangle\)上
\]
\(f(x)\)是什么?是给一个辅助qubit应用酉矩阵\(U_f\)得到的,一般辅助位可以使用\(|0\rangle\)

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

结果就是
\]
看出并行性了吗?结果中同时计算出了每个基向量的受控U门应用结果。
再看一个例子。我们通过使用哈德玛门制备\(|x\rangle\)
\]
然后我们使用受控U门

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

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

这样的分解对于相位估计和其他算法都非常重要,后面会看到。接下来顺理成章的该看看多量子位操作,当然也是基于2qubit门的。
托佛利门(TOFFOLI gate)
托佛利门有两个控制位,可以模拟标准的布尔操作:如果两个控制位都是1,就把目标位反转,所以也称作控控非门:
\]

托佛利门是幺正的,如果两次使用它,就和哈德玛门一样恢复如初:
\]
可以通过单qubit门和双qubit门结合实现托佛利门

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

控控非门的矩阵也比较大:
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问题

这个范式中的符号的含义可以看我之前的文章《自然演算规则》
我们需要创建这样的电路:
\]
也就是我们需要\(n\)个控制位,一起控制第\(n+1\)个目标位

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

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

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

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

量子纠缠
再看一个创建纠缠态的例子,需要用到受控非门
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的量子门的更多相关文章
- [转帖]谷歌宣称首次实现量子优越性,IBM“不服”,中国同行咋看?
谷歌宣称首次实现量子优越性,IBM“不服”,中国同行咋看? 投递人 itwriter 发布于 2019-10-24 15:46 评论(7) 有306人阅读 原文链接 [收藏] « » https:// ...
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- 使用rowid抽取数据方法以及大数据量游标卡住的应对
平时工作的时候,经常会遇到这种事情,从一个大表A中,抽取字段a在一个相对较小B的表的数据,比如,从一个详单表中,抽取几万个用户号码的话单出来.这种时候,一般来说, 做关联查询: create tabl ...
- Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器
最近在业余时间玩玩树莓派,刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚,从而控制LED发光二极管的闪烁,后来觉得,是不是可以使用HTML5+jQuery等流 ...
- 一种简单,轻量,灵活的C#对象转Json对象的方案
简单,是因为只有一个类 轻量,是因为整个类代码只有300行 灵活,是因为扩展方式只需要继承重写某个方法即可 补充:修正无法处理可空值类型的bug 首先我将这个类称之为JsonBuilder,我希望它以 ...
- 一种简单,轻量,灵活的C#对象转Json对象的方案(续)
本文参考资料 一种简单,轻量,灵活的C#对象转Json对象的方案 [源码]Literacy 快速反射读写对象属性,字段 一段废话 之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的 ...
- 基于轻量型Web服务器Raspkate的RESTful API的实现
在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API. 模块 首先让我们了解一下"模块&quo ...
- ArcGIS Engine开发之量测功能
1.距离测量 距离测量时,片段长度通过两点之间距离计算得到,全部长度通过片段长度的和计算得到.主要用到INewLineFeedback和IScreenDisplay两个接口. 1)INewLineFe ...
- Dapper.NET——轻量ORM
Dapper.NET使用 http://www.cnblogs.com/yankliu-vip/p/4182892.html 本文目录 Dapper.NET使用 1.为什么选择Dapper 2.以Da ...
- 编写轻量ajax组件01-对比webform平台上的各种实现方式
前言 Asp.net WebForm 和 Asp.net MVC(简称MVC) 都是基于Asp.net的web开发框架,两者有很大的区别,其中一个就是MVC更加注重http本质,而WebForm试图屏 ...
随机推荐
- WEB服务与NGINX(5)- root和alias的区别详解
root和alias的区别 root:指定站点家目录,给定的路径对应于location中的/uri 左侧的/,文件的绝对路径为root+location. 支持环境:http, server, loc ...
- 圣诞快乐 - Splashtop 2020 年回顾及未来展望
我们很高兴 Splashtop 的远程访问解决方案能够在这个充满挑战的时期为全球的组织和教育机构提供帮助. 实际上,2020 年 Splashtop 的每日使用量增加了400%!不仅如此,我们还增 ...
- 10分钟了解Flink SQL使用
Flink 是一个流处理和批处理统一的大数据框架,专门为高吞吐量和低延迟而设计.开发者可以使用SQL进行流批统一处理,大大简化了数据处理的复杂性.本文将介绍Flink SQL的基本原理.使用方法.流批 ...
- C数据结构:KMP算法详解(呕心沥血)
KMP算法 作者心声 了解暴力求解(必需会) KMP算法详解 记住我这段话(你会爱上它的)← : ①前后缀及其用处 ②求出前后缀的next数组 求出next数组的代码 开始实现KMP算法 结尾 附上源 ...
- JDK源码阅读-------自学笔记(二十二)(java.util.ArrayList自定义晋级,ArrayList实战详解)
简介(Introduction) 上篇文章主要介绍了ArrayList自行模仿建立的方式,那么,其实这个类不是一次性就那么完美的,现在做一个一步步变成那样完整的ArrayList的版本升级测试. ...
- JDBC连接MySQL 8时报错:MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
需要设置属性 IDEA DBerver
- OpenTelemetry agent 对 Spring Boot 应用的影响:一次 SPI 失效的
背景 前段时间公司领导让我排查一个关于在 JDK21 环境中使用 Spring Boot 配合一个 JDK18 新增的一个 SPI(java.net.spi.InetAddressResolverPr ...
- go高并发之路——启航
工作7年有余了,B端和C端业务都做过不少,打算整理分享一些自己在实际工作中所遇到的高并发的场景和解决方案,也是对自己本人职业生涯中的一些经验的总结和感悟.与其他博文略有不同的是,这些基本上都是自己实际 ...
- RocketMq开启安全认证ACL-解决服务器系统安全漏洞
1.为什么要开启ACL 通过之前的文章我们已经知道怎么安装RocketMq了.如果你还不会安装RocketMq可以查看我的这篇文章:快速入门一篇搞定RocketMq-实现微服务实战落地 进行软件安装, ...
- npm 淘宝镜像的安装
方法一: 使用阿里定制的cnpm命令行工具代替默认的npm,输入以下代码 npm install -g cnpm --registry=https://registry.npm.taobao.org ...