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

作者: zhyuzh3d | 来源:发表于2019-07-11 12:40 被阅读15次

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


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

    经典逻辑门

    目前的通用计算机都是基于逻辑门电路来实现的。关于逻辑门电路,你可以参照【量子计算通识】文章中索引的【经典计算机】小专题。

    运算的本质是对输入的信息进行修改,然后再输出。晶体管逻辑门电路的本质一种运算,电流进入之后绕来绕去会被改变成不同的电流,然后再输出

    经典计算机对于单个比特位的操作有四种:不变,翻转(0和1翻转,即非门NOT),等0(强制输出0),等1(强制输出1)。

    而对于两个比特,经典计算机有多重操作,如:

    • 与门AND,两者都是1结果才是1;
    • 或门OR,两者有一个是1结果就是1;
    • 与非门NAND,两者都是0结果才是1;
    • 异或门XOR,两者不相同结果才是1;

    可控非门CNOT

    可控非门CNOT是量子计算的最根本操作,也可直接把它称为量子逻辑门

    解释起CNOT门有一点麻烦,所以我们先从数学角度看,门就是一种操作,比如之前我们把经典比特位的四种操作都转换成了向量位运算:

    1. 不变操作就是乘以单位矩阵:
      \begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}1,0\\0,1\end{pmatrix}= \begin{pmatrix}x_0\\x_1\end{pmatrix}

    2. 翻转操作就是乘以单位翻转矩阵:

    \begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}0,1\\1,0\end{pmatrix}= \begin{pmatrix}x_1\\x_0\end{pmatrix}

    1. 等于0操作:

    \begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}1,1\\0,0\end{pmatrix}= \begin{pmatrix}1\\0\end{pmatrix}

    1. 等于1操作:

    \begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}0,0\\1,1\end{pmatrix}= \begin{pmatrix}0\\1\end{pmatrix}

    那么,我们定义CNOT门就是乘以下面的矩阵:
    \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix}

    注意这不是单位矩阵,它把第三行和第四行交换了。结果会怎样?前两项不变,后两项颠倒,具体如下:

    \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}= \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}

    这有什么意思?(0,0,1,0)这是一个四维向量,是个乘积态,它可以被分解成两个二维向量的张量积。我们把CNOT运算简单记作C,就有:

    \begin{align} C|10>=& \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} \\=& \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}\\=& \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}\\=& \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|11> \end{align}

    简化一下:

    C|10>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} = \begin{pmatrix} \begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|11>

    这里注意,我们通过CNOT操作,把|10>变成了|11>。

    CNOT对两个向量位的操作四种情况如下:

    C|00>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}1\\0\\0\\0\end{pmatrix}= \begin{pmatrix}1\\0\\0\\0 \end{pmatrix}= \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} =|00>

    C|01>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\1\\0\\0 \end{pmatrix}= \begin{pmatrix}0\\1\\0\\0 \end{pmatrix}= \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|01>

    C|10>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}= \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}= \begin{pmatrix} \begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|11>

    C|11>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}= \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}= \begin{pmatrix} \begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix}=|10>

    简化一下:

    C|00>=|00>
    C|01>=|01>
    C|10>=|11>
    C|11>=|10>

    仔细看上面这四个式子,规律就是左边第一位永远不变化,原来是0开头,结果就是0开头,原来是1开头,结果就是1开头。但是,当第一位是1的时候,第二位会被翻转(第三和第四)

    为什么叫CNOT,Controled NOT,可控非门。如果我们把左边第一位当做额外的开关,用它来控制第二位是否进行翻转,那么就是:如果第一位是0,那么就不翻转第二位,如果第一位是1,那么就翻转第二位。而第一位作为控制位不会被改变。

    在这里的运算中,第一位是控制位Control bit,第二位称为目标位Target bit,是被控制的。

    实际上理解CNOT的字面意义并不是很大,只要我们记住CNOT就是乘以一个前两行正常后两行翻转的矩阵就可以了。

    CNOT(x)=\begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} x

    在下一篇我们将开始正式进入量子计算的领域,谈论量子叠加态在数学计算中的实现。


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


    每个人的智能新时代

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


    END

    相关文章

      网友评论

        本文标题:【科普】量子计算通识-3

        本文链接:https://www.haomeiwen.com/subject/mmyrkctx.html