人工智能通识自然科普程序员

【科普】量子计算通识-6

2019-07-23  本文已影响6人  zhyuzh3d

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
更多相关文章请点击【量子计算通识】


以下内容参照微软研究院主题演讲《Quantum Computing for Computer Scientists(计算机科学家量子计算导读)》的结构进行整理和扩充的。
本篇是第六部分。上一篇【科普】量子计算通识-5

多伊奇问题Deutsch Problem

量子计算能做什么?有什么优势?
我们从最简单的多伊奇问题开始。

首先,我们知道,对于一个比特进行操作,有四种方法:不变,翻转,等0,等1,它们都可以表示成用一个矩阵相乘的模式。

这四种操作又可以根据输入输出的对比分为两种情况:

现在问题是,假设有一个函数操作f',我们只知道它是四种操作里的一种,但我们可以用输入输出进行测试,那么,要确定f'属于情况A(变量可逆)还是情况B(常数不可逆),我们最少做几次测试?

David Deutsc大卫·多伊奇

这个问题最早是英国物理学家David Deutsch提出来的,当然他也提出了量子算法的解决方案。

经典计算机解决方案

用经典计算机来判断f'到底是情况A(变量结果操作)还是情况B(常量结果操作),必须要经过两次尝试,第一次输入0观看结果,第二次输入1观看结果。

所以,必须至少尝试两次,第一次输入0,第二次输入1或者相反:

我们经过两次经典计算可以确定f'属于变量操作或者常量操作。

虽然我们也可以确定到它属于四种操作中的哪一种,但其实这个信息是不必要的,又是不得已而为之的,因为我们只需要判断变量或者常量即可。

重新组装

在量子计算中我们要求所有操作都是可逆的,那么我们先对四种位操作进行重新布线,也就是说设计四种可逆的量子位操作线路,或者说四种算法。当然,这四种算法也必须满足实现四种操作:

在这里我们输入两个量子位InputA和InputB,其中InputA是固定的|0>,你可以把它视为冗余的辅助输入;同样输出的OutputA是真正的操作结果,而OutputB也可以视为冗余的副产品。

为什么设计成这样的线路?先不急,我们先看在这个结构下如何实现四种可逆的量子位操作。

注意上面四个图的OutputA,分别是|0>、|1>、|x>、|﹁x>,这正对应了量子比特的四种操作。

Deutsch多伊奇算法

有了上面四种操作全新的可逆线路算法,我们用一次测试就可以确定F'是变量操作还是常量操作了。

首先我们把F'(x)当做一个未知的黑盒子,并向两端增加一些翻转操作(X)、Hadamard门操作(H)和一些测量Measure操作(M),组成下面的测试电路:

从图中可知,我们的两个输入InputA和InputB都是|0>,那么我们来看一下在等0、等1、不变、翻转四种不同的操作情况下输出的结果都是什么。

在此之前,我们先把左侧的翻转(X)和Hadamard(H)处理出来:

InputA和InputB,都是|0>,经过-X-H-后得到\begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix}

但OutputA是怎么回事?首先我们知道这是个CNOT可控非门操作,而CNOT就是乘以一个特别的矩阵,我们有如下公式:

\begin{align} &C\begin{pmatrix} \begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix}\otimes \begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix} \end{pmatrix}= C\begin{pmatrix} \frac{1}{2}\\\frac{-1}{2}\\\frac{-1}{2}\\\frac{1}{2}\\ \end{pmatrix}\\ &=\frac{1}{2} \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0\end{pmatrix} \begin{pmatrix}1\\-1\\-1\\1\end{pmatrix}\\ &=\frac{1}{2} \begin{pmatrix}1\\-1\\1\\-1\end{pmatrix}= \begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{pmatrix}\otimes \begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix} \end{align}
注意这里最后一步的巧妙之处在于开头的CNOT操作相当于把两个\begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix}的张量积转换为\begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{pmatrix}\begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix}的张量积,简化后就是:

C\begin{pmatrix} \begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix}\otimes \begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix} \end{pmatrix}=\begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{pmatrix}\otimes \begin{pmatrix}\frac{1}{\sqrt{2}}\\\frac{-1}{\sqrt{2}}\end{pmatrix}

所以有上图,OutputA是\begin{pmatrix}1\\ 0\end{pmatrix}测量后是|0>,联合OutputA和OutputB仍然得到|01>

综合上面四种情况,我们得到:

所以,输入InputA和InputB两个都是|0>,如果结果是|11>,那么F'就是个常量操作,如果结果是|01>,那么F'就是个变量操作。

只要一次操作就完成了!速度快了一倍!

下一篇我们再深入了解多伊奇乔扎Deutsch-Josza算法,它可以针对更多量子操作实现类似的加速。


欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
更多相关文章请点击【量子计算通识】


每个人的智能新时代

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~


END

上一篇 下一篇

猜你喜欢

热点阅读