前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正儿八经的带你解开量子态隐形传输的神秘面纱

正儿八经的带你解开量子态隐形传输的神秘面纱

作者头像
不知雨
发布2018-08-02 20:37:58
1K0
发布2018-08-02 20:37:58
举报

在这篇文章中,我将帮助你解开量子态隐形传输的神秘面纱,并在这里提供一些示例代码,你可以在IBM的Quantum Experience上运行,并可以查看它的实际运行情况。相关的专业名称已于百科链接,这将帮助你更好的理解。在本文中我将使用QISKit,这样以便下载并安装SDK。

这其实是一篇关于我早期文章S?uperdense Coding的后续帖子,所以我建议你首先阅读我这篇早期文章,因为可能在我讲解量子态隐形传输的这个主题之前,你可能需要对量子叠加和纠缠先有一个很好的理解。

其实正如我们将要看到的那样,量子隐形传态实际上是超级密码编码的另一面。在超级密码编码中,我们能够仅使用单个量子位发送两个经典的信息位。在量子隐形传态中,我们将使用两个经典的信息位来发送处于未知量子态的单个量子位。

这篇文章将引导你完成数学,量子电路和编码的整个过程。在此过程中,我将一步一步的进行解释其中发生的事情。在我开始之前,我假设你对量子比特狄拉克符号,经典比特和线性代数有一些了解。如果你正在寻找有关与Quantum Computing的教程,我建议你查看IBM Q Experience文档。

在深入研究基础概念之前,让我们看看我们将在示例中使用的一些Python代码。在下面的代码片段中,我创建了两种类型的寄存器:Quantum 和classic。QuantumRegister将用于存储测量ClassicalRegister的结果。ClassicalRegister是我们的“量子比特”,我们将在我们的程序中操作它们以实现某些期望的效果。QuantumCircuit将用于连接我们的量子位和操作。你可以在此处找到整篇文章中使用的代码副本。

代码语言:c
复制
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import available_backends, execute
# Create three quantum and classical registers
q = QuantumRegister(3)
c = ClassicalRegister(3)
qc = QuantumCircuit(q, c)
介绍

在我们开始进行量子隐形传态之前,我们首先需要讨论复制或克隆量子比特的含义。通常我们无法复制或克隆未知状态的量子位。所以,你可能会问,如果我们无法复制或克隆它,那我们将如何传输量子比特?在本文中,我将向你展示我如何解决这一限制的,正儿八经的发送一个不丢失信息的quibit。

作为复习,需要先回顾一下|0?和|1?基态狄拉克函数向量符号以及量子位作为基态的线性组合的一般描述,如下图所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
不可克隆定理

让我们首先来探索一下克隆量子比特的概念,然后在开始我们的量子隐形传态之旅。“不可克隆定理”指出,你不能普遍的去克隆未知量子态的量子位。所以我们来聊一聊,看一看看为什么这是真的。

在我们进入之前,让我们花一点时间来看看添加和乘法向量的规则,因为我们需要这些信息来理解“不可克隆定理”。

代码语言:javascript
复制
|ψ?,|φ?和|ω?是矢量
|ψ?+ |φ?总和是矢量
标量乘法α|ψ?是矢量,α∈? α是复数
加法是可交换的:|ψ?+ |φ?= |φ?+ |ψ?
加法是关联的:(|ψ?+ |φ?)+ |ω?= |φ?+(|ψ?+ |ω?)
标量乘法是标量和向量的分布:
(? + β)|?? = ?|?? + β |?? 其中?,β∈ ?
?(|ψ?+ |φ? ) = ?|ψ?+ ?|φ?其中? ∈ ?
标量乘法是关联的:
?(β|ψ?)=(?β)|ψ?其中?,β∈ ?

现在,假设我们可以构建一个名为U的特殊单一运算符,它可以克隆一个量子位。该运算符将两个量子位作为输入,一个处于未知状态|ψ?,另一个处于诸如| 0'的状态,其将用作我们的复制目标。然后,克隆算法将生成我们的量子位的副本以及原始源量子位,并且两个量子位将处于相同的状态|ψ?。

那么,让我们测试一下我们的克隆运算符,看看我们使用它时会发生什么。我们知道,如果我们应用克隆运算符,我们应该得到一个副本和我们的原始量子位,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

回想一下,量子比特只是状态|ψ?=α|0?+β|1?的相加。那么,让我们继续用α|0?+β|1?替换|ψ?然后取出值,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

现在,如果克隆|ψ?的扩展,我们的克隆机,会做什么?所以让我们尝试一下,看看我们得到了什么,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

与:

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

让我们比较下这两个克隆操作的结果:

  • α?|00?+αβ|10?+αβ|01?+β?|11?
  • α|00?+β|11?

如你所见,结果不一样。那我们怎样才能做到这一点?简单的答案是我们不能,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

尽管数十年的实验证据证明相反,或者我们无法可靠地克隆处于未知量子态的量子位,但量子力学是错误的。可悲的事实是,无论我们如何努力,我们都无法克服未知量子态的量子比特。

但有一点需要指出。“不可克隆定理”并未说两个量子位不能处于相同的量子态。它只是声明,如果你不了解状态,那么就无法构建一台机器来可靠地克隆它。宇宙可以自由地允许处于相同状态的量子位。

克隆Qubits

现在,如果我们事先知道状态,我们可以克隆它吗?答案是肯定的。例如,如果我们知道我们必须克隆一个或者两个可能的叠加状态之一| +?或|-?中的量子位,那么我们可以执行一些单一的变换,这将使我们能够复制状态量子比特。

回想一下,Hadamard变换用于将量子位置于| +?或|-?叠加状态,这取决于运算符是否应用于|0?或|1?基态的量子位。当测量量子位时,合成矢量具有相等的返回0或1的概率。下图显示了| +?和|-?的定义以及用于生成它们的量子线路

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

我们如何能够复制量子比特的状态?我们知道必须从|0?或|1?基础状态生成两个叠加状态| +?或|-?。所以,这意味着如果我们将处于| +?或|-?状态的量子位置超出叠加,那么我们的量子位将处于|0?或|1?基态。

通过应用Hadamard变换,我们可以轻松地使我们的量子比特不再叠加。回想一下,量子变换是可逆的,因此应用相同的单一Hadamard变换可以有效地解除先前的Hadamard变换,参见下图。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

以下是执行复制操作的QISKit代码。

代码语言:javascript
复制
#创建初始叠加+状态
qc.h(q [0])
#从量子位置
qc.h(q [0])中取出量子位
#在量子比特之间执行CNOT
qc.cx(q [0],q [1])
#把量子位置叠加,现在状态是相同的
qc.h(q [0])
qc.h(q [1])
量子通信

因此,鉴于克隆量子位的限制,我们可以通过某种方式使用量子计算的一些基本属性来传达未知量子位的状态吗?假如小明有一个未知量子态的量子位|ψ?=α|0?+β|1? ,小明希望与他的同事小红沟通,小明应该怎么做?好吧,让我们假装一下我们可以以某种方式在小明的量子位和小红在|0?基础状态下准备的量子位之间创建一个神奇的链接。

小明可以创建什么类型的特殊链接?让我们想象他可以在他的量子比特和小红的量子比特之间建立一个可以跨越任何距离的CNOT门,如下所示。我们知道这样的门是不可能创建的,但让我们假装我们可以在这些量子位之间建立一个CNOT门来看看会发生什么。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

我们可以看到,在施加CNOT门之后,现在联合状态为|ψ?=α|00?+β|11?。那么如果小明要在|0?和|1?基础状态下测量他的量子位①怎么办?那么他会得到0或1,并且新的联合状态将是|00?或|11?,将小红的量子位②留在状态|0?或|1?中,这与α|0?+的β|1?状态不同。所以做这种类型的测量显然不会帮助小明与小红沟通。

那么小明还有其他选择吗?如果小明在| +?和|-?基础状态下测量她的量子位①怎么办?为此,我们可以用| +?和|-?来写|0?和|1?,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

现在让我们继续用| +?和|-?重写小明的量子位①,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

让我们通过Collect terminology来简化这一过程,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

我们可以看到,如果小明要测量她的量子位①她会得+或 - ,而小红的量子比特②在状态α|0?+β|1?或α|0? - β|1?。

在小明测量她的量子位①并获得+的情况下,小红不需要对他的量子位②做任何事情,因为它正好处于正确的状态α|0?+β|1?。但是,如果小明测量得到的是 - ,则oxida的量子比特在一定条件下,不同相,为α|0? - β|1?。

oxida可以改变量子位的相位以获得正确的α|0?+β|1?状态。小红可以通过应用泡利-Z 门来做到这一点。应用Z门翻转了小红的量子比特?gate。如果你想了解更多关于Pauli gate的信息,请查看此链接以及我关于Superdense Coding的文章。所以小明需要做的就是告诉小红她做了哪些测量,或者+或 - 。如果需要,小红然后应用相移Z门来校正相位,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

小明如何在|0?和|1?基础上进行测量,并能够判断她是在测量+或 - ?答案是,在进行测量之前,小明会将Hadamard?H门应用于她的量子位①,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

Hadamard门投影,+测量0,和 ,- 测量1。记住,一旦小明测量,他将会破坏他的量子比特,但他的量子比特的状态将转移到oxida的量子比特。下面的代码显示了我们如何在+和 - 基础上进行测量,并在需要时应用相位翻转。

代码语言:javascript
复制
#使用单个单一量子位为①准备初始状态
qc.u1(0.5,q [0])
#在量子位①和量子位
②qc.cx(q [0],q [1])之间执行CNOT
#在+ - 基础上测量量子位①
qc.h(q [0])
qc.measure(q [0],c [0])
#如果需要对量子位执行相位校正②
if c [0] == 1:
qc.z(q [1])

那么这将如何能告诉我们有关传输量子比特的信息呢?但是它告诉我们,如果我们有一些方法在小明的量子比特和小红的量子比特之间创建一个远程CNOT,我们可以进行通信。好消息是,确实有办法做到这一点,那就是通过纠缠。现在让我们看看我们如何使用纠缠来建立远程CNOT操作并传送量子比特。

量子传送

这将如何运作?我们要做的是在三个量子比特之间创建一个特殊的纠缠状态,其中我们的一个量子比特保存我们想要发送的未知信息,另外两个将是一对纠缠的量子比特,将在发送者和发送者之间共享接收者的信息。

我们将对两个量子比特进行一系列测量,最终将它们从纠缠中解放出来。这些测量和我们对纠缠态的了解将使我们能够将我们的源量子位“传送”到目的地而不会丢失信息。但是,我们将破坏包含我们想要作为传送协议的一部分发送的信息的源量子位。

设置初始状态

在我们的场景中,让我们再次假如小明想要向小红发送一个处于某种未知状态的量子比特。我们知道,由于“不可克隆定理”,小明无法直接克隆量子位。然而,小明是一个非常聪明的量子编码器,并且知道他可以利用量子纠缠的本质来帮助他实现自己的目标。

小明做的第一件事是打电话给她的朋友“你”来帮他和小红出去。小明要求你为他和小红准备一对纠缠的量子比特,并指示你给他一个量子比特,并将另一个送给小红,如下面的电路图所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

在电路图中,标记为①的量子位是包含小明想要传送给小红的未知信息的量子位。标记为②和③的量子比特是你为小明和小红准备的纠缠量子比特。我们的3量子比特系统的联合状态只是量子比特的乘积,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

下面是用于设置纠缠的量子比特的QISkit代码以及我们将要传送的量子比特的初始状态。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
代码语言:javascript
复制
#使用单个量子位为①准备初始状态
qc.u1(0.5,q [0])
#使用量子位②和量子位③准备一对纠缠对
qc.h(q [1])
qc.cx(q [1],q [2])
#阻止门重新排序以进行优化的障碍

qc.barrier(q)

创建远程控制

现在我们已经准备好了我们的量子比特了,小明做的下一件事就是在量子比特①之间执行CNOT操作,他希望传送给小红和他与小红分享的一半纠缠的量子比特②,如图所示电路图如下。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

让我们看看CNOT操作现在对3量子比特系统的联合状态有什么影响,如下所示。正如我们所看到的那样,当绿色矩形表示量子位①被设置为1时,目标量子位②被翻转,如红色矩形所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

那么这如何帮助小明与小红沟通呢?如果小明要测量量子位②会发生什么?如下面的电路图所示

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

小明会得到一个0或1.这个测量能告诉小明什么?它告诉小明,量子位①和③的联合剩余状态处于两种可能状态中的任何一种状态,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

记得小明试图向小红发送状态|ψ?=α|0?+β|1??然而,当小明测量量子位②并得到1时,他知道量子位③已经以某种方式从0翻转到1.此时,小明写下这个测量并告诉小红她测量了什么。小明和小红知道他们可以通过应用Pauli?X门轻松翻转量子位,如下所示。如果你想了解有关Pauli X门的更多信息,请点击此链接

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

这是用于建立CNOT,测量量子位以及必要时执行位翻转的QISKit代码。

代码语言:javascript
复制
#在量子位①和量子位②之间执行CNOT
qc.cx(q [0],q [1])
#计算量子位②计算基础
qc.measure(q [1],c [1])
#如果需要对量子位③执行位翻转校正,
if c [1] == 1:
qc.x(q [2])

应用相位校正他是否需要在他的量子位上执行相位翻转③,如下面的电路图所示

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

让我们深入研究一下,看看在应用Hadamard门之后我们的3量子比特系统的状态会发生什么。回想一下之前,将Hadamard算子应用于量子位基态|0?和|1?将我们的量子位转换为以下两个叠加态之一。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

现在让我们将H?|0?和H?|1??的两个叠加态替换为我们之前的3个量子位状态描述,如下所示,并用红色矩形表示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

现在让我们看看我们的3量子比特系统的状态,如下图所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

为了更容易看到发生了什么,让我们重构,以便我们将量子位①和②组合在一起并隔离量子位③,如下所示并用红色矩形表示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

我们看到量子比特③除三种情况外都包含量子比特①的原始状态。我们有效地完成的是将状态从量子比特①传送到量子比特③。尽管如此,我们仍然留下了一个问题。

回想一下,我们试图传送量子位①的状态,即|ψ?=α|0?+β|1?,我们已经处理了需要翻转量子位的情况,所以剩下的就是小红需要使用Pauli?Z门翻转量子比特的情况。

之前我们看到小明能够通过在| +?和|-?基础上测量量子位来确定是否需要相位翻转。因此,小明现在在应用Hadamard门后进行测量,这使得他在量子位为+时为0,在量子位为时为1,然后将此值提供给小红,以确定他是否需要执行相位翻转,如下所示。

正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida
正儿八经的带你解开量子态隐形传输的神秘面纱-Oxida

以下是用于在+ - 基础上测量量子位并在必要时执行相位校正的QISKit代码。

代码语言:javascript
复制
#在+ - 基础上测量量子位①

qc.h(q [0])
qc.measure(q [0],c [0])
#如果需要对量子位③执行相位校正,
if c [0] == 1:
qc.z(q [2])
总结

因此,我们只要有它,小明就能够成功地将一个量子比特传送给小红。我应该简要提一下传送协议中的一些重要内容:

  • 小明和小红没有比光速更快的沟通。小明不得不告诉小红她的两次测量是什么,而这必须在一些经典的通信通道上完成,根据定义,它比光速慢。
  • 当小明将信息传送给小红时,小明最终摧毁了她的量子比特,因此我们没有违反不可克隆定理。

本文系外文翻译,前往查看

如有侵权,请联系?cloudcommunity@tencent.com?删除。

本文系外文翻译前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 不可克隆定理
  • 克隆Qubits
  • 量子通信
  • 量子传送
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com