量子计算(9)编程实践1:构造贝尔态

        相信通过前面几节课的学习,大家已经多多少少对量子计算这门课感到了浓厚的兴趣。前面我们讲到了|0>态,讲到了|1>态,这些都属于基态,但是我们今天要学习的是几种更为复杂的状态,其中包含特别有意思的贝尔态。

目录

一、纯态和混合态介绍

1、介绍

2、判定方法

3、量子门与密度矩阵

二、贝尔态

1、直积态与纠缠态

2、介绍

3、构造方法

三、实践:构造bell态


一、纯态和混合态介绍

1、介绍


        量子计算的书是这样定义混合态和纯态的:“具有精确已知状态的量子系统称为纯态(pure state)。在这种情况下,密度算子就是ρ = ∣\psi> <\psi∣ ,我们也把密度算子称为密度矩阵,此情况下以100%的概率处在∣\psi> 态。

        比如说\begin{pmatrix} 1 & 0\\ 0 & 0 \end{pmatrix}就是一个纯态,它能拆解为|0><0|,同理\begin{pmatrix} 0 & 0\\ 0 &1 \end{pmatrix}也是,因为能拆解为|1><1|。

        如果不能用向量的形式描述量子态,是借助密度矩阵的形式描述的,那么这个量子态就是混合态,系统就是处于混合态(mixed state),称为是在ρ的系综里不同纯态的混合。”

        总结一下上面这段话,就是对于纯态它可以借助矢量和密度算子两种形式进行描述;但是对于混合态,是只能借助密度矩阵的形式进行描述的。

2、判定方法

        通常会使用tr(\rho ^{2})[矩阵对角线之和]与1的关系,来判定它是不是纯态。如果tr(\rho ^{2})=1,表明它是一个纯态,如果tr(\rho ^{2})<1表明这是一个混合态。

3、量子门与密度矩阵

        我们做一个题目,立马就会了:

        Ted使用一个量子线路对自己手中的初态∣0〉进行演化,但她的量子线路有些故障,有1/4的概率什么都不做,1/4的概率作用X门,1/2的概率作用H门。则她所获得的末态对应的密度矩阵应该是

【解析】:由题意知道,Ted的态有四分之一的概率在|0>态,由四分之一的概率在|1>态,还有二分之一的概率在|+>态。根据概率矩阵的定义ρ=\frac{1}{4}|0><0|+\frac{1}{4}|1><1|+\frac{1}{2}|+><+|,求得密度矩阵为\begin{pmatrix} \frac{1}{2}&\frac{1}{4} \\ \frac{1}{4} & \frac{1}{2} \end{pmatrix}

二、贝尔态

1、直积态与纠缠态

        我们来看看它们的定义。         

        直积态:复合系统的量子态|a>可以表示为若干个孤立子系统|a1>、|a2>、|a3>……|an>的直积形式,这些子系统相互独立,不存在纠缠,即|a>=|a1>|a2>|a3>……|an>,则此符合量子态称之为直积态。

        纠缠态:若一个量子系统不能写成若干个子系统的直积形式,则称此量子态为纠缠态。

        看不懂的话,还是让小编举个例子吧!

例如:|01>就是直积态,很明显,因为这就是|0>\otimes|1>,而我们接下来要学习的贝尔态都不是直积态,并且我们通过对贝尔态的学习可以发现:纠缠态和纯态并不对立。

2、介绍

        贝尔态是一个极其复杂的状态,也被称为EPR态或者EPR对。它是用首次提出这些奇怪性质的学者贝尔,以及Einstein(没错,就是爱因斯坦)、Podolsky、Rosen的名字命名的。

        好的,现在热烈欢迎,四位嘉宾登场!有请,潘周聃。(帅气扭头)

        |\beta _{00}>=\frac{|00>+|11>}{\sqrt{2}}|\beta _{01}>=\frac{|01>+|10>}{\sqrt{2}}

        |\beta _{10}>=\frac{|00>-|11>}{\sqrt{2}}|\beta _{11}>=\frac{|01>-|10>}{\sqrt{2}}

        不难发现,以上四种量子态均不能写作 ∣ϕ>= (a∣0>+b∣1>)⊗(c∣0> +d∣1>) ,不过还是希望大家头铁的去试一试,看看是不是果真如此。

        那么,它是纯态吗?相信很多读者听名字,纠觉得纯态和纠缠态势不两立,水火不容。刚好用这个例子,来证明,这两种状态均可存在于一体。

        证明方法:请算出概率矩阵的平方,判断这个新得到的矩阵,对角线之和是不是等于1。

3、构造方法

        ①假设输入为|0>与|0>,首先高位量子比特经过Hadamard Gate,(高位量子比特作为控制比特,低位量子比特作为目标比特),则可以得到\frac{|00>+|11>}{\sqrt{2}}

        ②假设输入为|0>与|1>,首先在pyqpanda中低位量子比特要从|0>变为|1>需要经过一个X门,并且高位量子比特需要经过Hadamard Gate,(高位量子比特作为控制比特,低位量子比特作为目标比特),则可以得到\frac{|01>+|10>}{\sqrt{2}}

        假设输入为|1>与|0>,首先在pyqpanda中高位量子比特要从|0>变为|1>需要经过一个X门,并且高位量子比特还需要经过Hadamard Gate,(高位量子比特作为控制比特,低位量子比特作为目标比特),则可以得到\frac{|00>-|11>}{\sqrt{2}}

        ④假设输入为|1>与|1>,首先在pyqpanda中高位量子比特与低位量子比特要从|0>变为|1>需要经过一个X门高位量子比特还要经过Hadamard Gate,(高位量子比特作为控制比特,低位量子比特作为目标比特),则可以得到\frac{|01>-|10>}{\sqrt{2}}

三、实践:构造bell态

        题目:请用“3、构造方法”里的思路,构造出四种贝尔态。要求输入字符串表示是哪一种贝尔态,返回值为量子状态。

from pyqpanda import *
import numpy as np


#输入字符串,返回状态列表
def question1(input: str) -> list:
    def getFirstNum(input: str) -> int:
        return int(input[0])

    # 获取输入字符的第一个数字
    def getSecondNum(input: str) -> int:
        return int(input[1])

    # 获取输入字符的第二个数字
    num1 = getFirstNum(input)
    num2 = getSecondNum(input)
    qvm = CPUQVM()
    qvm.init_qvm()
    qubits = qvm.qAlloc_many(2)
    cbits = qvm.cAlloc_many(2)
    cbits[1].set_val(num2)
    cbits[0].set_val(num1)
    # 构造量子程序prog
    prog = QProg()
    # 构造量子程序的各个条件分支

    progstart = QProg()
    progend = QProg()

    # 当输入00与01时,不需要插入X门
    # 当输入10与11时,需要将0态转变为1态,即加一个X门
    progstart.insert(X(qubits[1]))
    # 如果输入00或者10,则第二条线路输入0态,否则执行X门操作,将其变为1态
    progend.insert(X(qubits[0]))
    # qif1执行对第一条线路的改造,qif2执行对第二条线路的改造
    qif1 = create_if_prog(cbits[0], progstart)
    qif2 = create_if_prog(cbits[1], progend)

    prog.insert(qif1)
    prog.insert(qif2)
    prog.insert(H(qubits[1]))
    prog.insert(CNOT(qubits[1], qubits[0]))
    # 用prob_run_list测概率
    result2 = qvm.prob_run_list(prog, qubits, -1)
    #使用get_qstate()函数返回列表
    result = qvm.get_qstate()
    # 返回此概率列表
    return result


print("本题的结果为:")
print("当输入为00时,结果为", question1("00"))
print("当输入为01时,结果为", question1("01"))
print("当输入为10时,结果为", question1("10"))
print("当输入为11时,结果为", question1("11"))

输出的结果为:

 结果正确!

那么,如果您感觉小编写的文章对您有帮助,请点个赞与收藏再走好嘛?谢谢大家!

        

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机鬼才~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值