0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在量子计算机上编程——QPU编程

西西 来源:博客园 作者: 夏天喵 2020-09-23 14:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天要给大家介绍的是这本书《Programming Quantum Computers —— Essential Algorithms and Code Samples》,主要讲如何在量子计算机上编程,又示例的代码可以跑 https://oreilly-qc.github.io./ ,这本书的理解方向是纯粹计算机的,连矩阵都很少涉及,一个量子计算机就像是协处理器一样,很像我们现在的GPU

单量子比特

这本书中对于量子的表达方式如下circle notation:

蓝色圈的面积就是这个量子态测量后是这个状态的概率,中间的蓝色短线代表他们的相位,因为全局相位也观察不出来,所以一般|0〉 |0〉就是朝上的。对于一个量子比特来说,重要的也就这两个,magnitude和relative phase(可能因为重要的是概率大小,所以他其实没有提amplitude其实是一个复数)。

这两个态实际上是等价的。

电路图呢,一般长这样

这个电路图对应的代码如下:(这个例子都可以在上面那个网站上跑起来)

qc.reset(1);         // allocate one qubit
qc.write(0);         // write the value zero
qc.had();            // place it into superposition of 0 and 1
var result = qc.read();  // read the result as a digital bit

第一步就是申请一个qubit,就像你要给变量分配空间一样。

第二步写0,其实写0很容易,你可以直接测量,要么0,要么1,如果结果是1的话,再做一个not操作就好;当然,你要是嫌麻烦,对于一个qubit,长时间的静置他,他也会变成0,毕竟还是基态比较稳定。

第三步就是进行一个H门的操作

第四步读,其实就是测量了

常见的作用于单量子比特操作的表达方式:

其中值得一提的是PHASE相位操作,phase操作只作用在 |1〉|1〉 上,因为他的效果是改变相对相位,如果大家都改变就没有什么用了。可能有同学听说过绕X轴旋转和绕Y轴旋转,这些都是针对Bloch球的表达方式,与这里的circle notation的方式不要弄混了。

一个操作也可能是其他几个操作的组合,比如:

如果我们可以把not变成H+180°旋转+H,那么我们也可以把中间的180°旋转变成两个90°的旋转,中间再加上两个H,因为HH=IHH=I,他们可以相互抵消,这样我们还可以得到RNOT:

COPY:这是一个需要注意的操作,因为量子程序里没有复制,这也保障了量子传输的信息不会被窃听, 因为你要窃听,你就需要去读,一读就是测量,而量子比特一测量就是坍缩。由于量子不能复制,所以,上述所有操作都是在原有的那个比特上操作的,所以操作就会被发现。

一个简单例子:

对于这里例子来说, A1A1 和 A2A2 是对qubit Hadmard门操作后测量得到的随机值,因为这个是真随机,所以就不会被窃听者提前知道或者预估,那么当我传输这个被我用红色圈出来的比特的时候,spy并不知道这个比特是否执行了H门和not操作,那他就只能猜了,25%的概率,图里面所示就是他猜有执行了,然后他再按照他的猜测如法炮制一个qubit继续传递,当B收了这个bit后,B也随机一个数据B2B2,看是否执行H门,然后测量。这个时候消息也都收到了,测量也都测量好了,那么把 A2A2的信息发过来也和窃听没有关系了,如果 B2B2 A2A2 的结果一样,那么测量结果应该一样,如果不一样,那么一定被窃听了。

这样的成功概率有多少呢? B2B2 A2A2 一样的概率0.5,在这种情况下spy被发现的概率0.25。看起来不是很高,但是如果我们有一百个比特先检测一下这条线路,不被发现的概率将会降到百万分之一。

现在来看一下代码:https://oreilly-qc.github.io/?p=2-4

qc.reset(3);//申请三个qubit

qc.discard();
var a = qint.new(1, 'alice'); //给其中一个变量命名为a,但是画出来的电路图中显示alice
var fiber = qint.new(1, 'fiber');
var b = qint.new(1, 'bob');

function random_bit(q) {//对一个初始化为0的比特,进行H操作,然后测量,测量结果是随机的
    q.write(0);
    q.had();
    return q.read();
}

// Generate two random bits
qc.label('get two random bits');
var send_had = random_bit(a);//得到是否执行H门的随机值
var send_value = random_bit(a);//得到是否not的随机值
qc.label('');

// Prepare Alice's qubit
a.write(0);//a重新赋值为0,所以前面取随机值的操作也可以在a上进行
qc.label('set value');
qc.nop();
if (send_value)
    a.not();
qc.nop();
qc.label('');
qc.nop();
qc.label('apply had');
qc.nop();
if (send_had)
    a.had();
qc.nop();
qc.label('');

// Send the qubit!
fiber.exchange(a);

// Activate the spy
var spy_is_present = true;
if (spy_is_present)
{
    var spy_had = 1;
    qc.nop();
    qc.label('spy');
    if (spy_had)
        fiber.had();
    stolen_data = fiber.read();
    fiber.write(0);
    if (stolen_data)
        fiber.not();
    if (spy_had)
        fiber.had();
    qc.label('');
    qc.nop();
}

// Receive the qubit!
var recv_had = random_bit(b);
fiber.exchange(b);
qc.label('apply had');
qc.nop();
if (recv_had)
    b.had();
qc.nop();
qc.label('');
qc.nop();
qc.label('read value');
qc.nop();
recv_val = b.read();
qc.nop();
qc.label('');
qc.nop();

// Now Alice emails Bob to tell
// him her had setting and value.
// If the had setting matches and the
// value does not, there's a spy!
if (send_had == recv_had)
    if (send_value != recv_val)
        qc.print('Caught a spy!\n');

多量子比特

多量子比特的表示方法和单量子比特没有什么区别,下面的数字就是把他们从01的二进制换算成了我们熟悉的十进制。0x是十六进制的表示方法,最上面的是地位,正好可以not操作表示了出来,0就是000,1就是001,2就是010……以此类推

真要说和单量子比特的区别,那主要是两方面,一个是纠缠;另一个就是受控操作。

纠缠

纠缠好说,两个纠缠的量子比特就是其中一个的测量结果会影响另一个。

具体可以看一下这篇量子纠缠1——量子比特、Bell态、EPR佯谬

受控操作

受控操作就是说有两类比特,一个是用来控制的,另一个是被控制的。

比如大家耳熟能详的CNOT,当控制比特是1的时候,就翻转被控制的比特,如果控制比特是0的时候,那就不做操作。还有CCNOT门,又叫做toffli门,有两个控制比特,只有当他们都为1的时候才翻转。

现在要介绍一个前面没有提过的CPHASE受控相位门,和CNOT相似,同样是当控制比特为1的时候才进行,但是正如前面我们提过,PHASE操作只操作在1上,也就是说,如果这个操作被执行其实只有一种情况,那就是|11〉|11〉 。

在前面我们表示过一个旋转180°的相位操作可以表示成一个 H+NOT+H figure 2-14

那么现在受控相位操作拥有了三种表示方法:

当控制比特为0的时候,CNOT就不会发生,两个H又正好抵消了。

phase kickback

在这之所以说这么多的受控相位操作是因为这里面有个一很有趣的小技巧 QPU Trick: Phase Kickback 来看下面这个电路图

这个电路图很容易理解,一种理解方式就是把register 1当作控制比特,register 2 当作受控比特,两个H门使得register 1变成了等可能的四种情况 12|00〉+12|01〉+12|10〉+12|11〉12|00〉+12|01〉+12|10〉+12|11〉 。

现在来看看结果:

因为register 2并不是叠加态,所以没有相对相位,而绝对相位又测不出来,所以他可以说是没有变的,改变了的,反而是register 1 , |3〉|3〉 转了135°是因为两个都为1,45°和90°都转了。作为一个受控操作,控制比特反而变了,而受控比特没有改变。

swap

受控操作当然也能连在一起,得到一些有用的结果,比如三个CNOT操作,他就可以交换两条线路。

这个的证明是一件很容易的事情,你可以取一个任意态推一边,专门把这个提出来说一遍是因为这个还能做一件有趣的事情,那就是验证两个比特是否相等。我们需要用到的是CSWAP,即当控制比特为1时才交换。

当我们的output比特经过H门后,他就变成了等概率的 |0〉|0〉 和 |1〉|1〉 经过一个CSWAP,为1情况下的input1和input2就会交换,也就是说他们原来x概率的ab就变成了x概率的ba了,这样的问题出在哪?

如果概率还是原来的分布,那么在经过一个H门output等待率的 |0〉|0〉 和 |1〉|1〉 又会化简成 |0〉|0〉 ,各种各样的 |1〉|1〉 的概率会相互抵消掉,那么在经历一个NOT操作就一定会得到1。

那,如果这两个数据不一样,就一定得不到1吗?不一定,只是他有概率不是1,而一旦有概率不是1,那只要多检测几次就一定能检测出来,就像上面那个窃听一样,明明只有四分之一的概率,但仅需要一百次,测不出来的可能性就降到了百万分之一。

当然,代码在这里https://oreilly-qc.github.io/?p=3-4,这也是这本书的特色了。

受控操作当然不止这些,但是很多受控操作都可以分解成CNOT加上一些相位操作,我们可以自己构造自己需要的操作。

远距离操控随机

这里的远距离操控不是指我能扣确定他是什么,如果我能确定,那就不是随机了,而是说,我把两个比特弄成纠缠,当我一个测出来是0的时候,另一个以x%的概率得到0,至于我测出来是不是0看天意,对面测出来是不是0,也看天意,其中唯一能确定的,就只有这个x了。

这个例子是书上例子3-6 https://oreilly-qc.github.io/?p=3-6 方法很简单,就是我H门操作后,我旋转45°的角度,这样再来一个H门,因为相位变了,符号对不上,所以回不去了,就有了关联。

更强大的一点的应用是——量子隐形传态,量子隐形传态 Quantum Teleportation 提过了,就不在累述。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    90

    文章

    3708

    浏览量

    96778
  • 量子
    +关注

    关注

    0

    文章

    497

    浏览量

    26354
  • 量子计算机
    +关注

    关注

    4

    文章

    541

    浏览量

    27361
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    国内首条!量子计算机生产线落地深圳

    电子发烧友网报道(文/吴子鹏)日前,中国首个规模化专用光量子计算机制造工厂在深圳南山智城正式启用,我国量子计算产业迎来了历史性时刻——这不仅是国内首个光
    的头像 发表于 11-28 08:21 7112次阅读

    深圳中国首个光量子计算机制造工厂落成

    据央视新闻报道;在24日;深圳南山区国内首个光量子计算机制造工厂正式进入小规模生产阶段,据悉该工厂是隶属于玻色量子;总面积约5000平方米,集研发、制造、测试于一体,用于实现光量子
    的头像 发表于 11-25 17:17 1540次阅读

    快450000000倍!超导量子计算机“天衍-287”建成

    电子发烧友网综合报道 2025年11月14日,中国电信量子研究院正式宣布,搭载“祖冲之三号”同款芯片的超导量子计算机“天衍-287”完成搭建。这一突破标志着我国首个具备“量子
    的头像 发表于 11-18 08:40 8143次阅读
    快450000000倍!超导<b class='flag-5'>量子</b><b class='flag-5'>计算机</b>“天衍-287”建成

    量子竞赛进入深水区:IBM加速2029年容错量子计算机目标实现

    电子发烧友网综合报道 日前,IBM宣布入选美国国防部下属国防高级研究计划局(DARPA)量子基准测试计划(QBI)的B阶段,这标志着该公司在构建大规模容错量子计算机的技术路径上获得关键验证。这一
    的头像 发表于 11-16 00:28 6554次阅读

    NVIDIA助力全球最大量子研究超级计算机

    NVIDIA 宣布将开设量子-AI 技术商业应用全球研发中心(G-QuAT),该中心部署了全球最大量子计算研究专用超级计算机 ABCI-Q。
    的头像 发表于 05-22 09:44 690次阅读

    何在计算机上安装麒麟操作系统Kylin V10 SP3

    麒麟操作系统 Kylin V10 SP3 是一款基于 Linux 的操作系统,广泛应用于政府、企业和个人用户。本文将详细介绍如何在计算机上安装麒麟操作系统 Kylin V10 SP3,帮助您顺利完成安装并开始使用。
    的头像 发表于 04-11 15:32 3336次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>计算机上</b>安装麒麟操作系统Kylin V10 SP3

    AWG全新DDS固件如何提升量子计算机的开发效率?

    凯泽斯劳滕理工大学通过引入先进的德思特任意波形发生器(AWG)新DDS固件选件,显著加速了量子计算机的开发进程。德思特带您了解AWG全新DDS固件如何提升量子计算机的开发效率。
    的头像 发表于 03-21 16:50 600次阅读
    AWG全新DDS固件如何提升<b class='flag-5'>量子</b><b class='flag-5'>计算机</b>的开发效率?

    基于玻色量子相干光量子计算机的混合量子经典计算架构

    近日,北京玻色量子科技有限公司(以下简称“玻色量子”)与北京师范大学、中国移动研究院组成的联合研究团队提出一种基于相干光量子计算机的混合量子
    的头像 发表于 03-10 15:43 950次阅读
    基于玻色<b class='flag-5'>量子</b>相干光<b class='flag-5'>量子</b><b class='flag-5'>计算机</b>的混合<b class='flag-5'>量子</b>经典<b class='flag-5'>计算</b>架构

    Quantinuum“Reimei”量子计算机在RIKEN正式运行

    近日,东京——全球领先的集成量子计算公司Quantinuum与日本顶尖的综合研究机构RIKEN共同宣布,Quantinuum的“Reimei”量子计算机已在RIKEN Wako园区(位
    的头像 发表于 02-17 10:21 808次阅读

    BU-67121W实验室航空电子接口计算机North Hills

    可以在BU-67121W上轻松创建嵌入式软件,实现MIL-STD-1553、ARINC 429和以太网接口之间的数据自动转发。独立模式:允许BU-67121W作为用户可编程计算机系统独立运行。
    发表于 02-11 09:26

    日英联手开发下一代量子计算机

    近日,据报道,日本国立产业技术综合研究所(AIST)与全球芯片巨头英特尔公司正携手合作,致力于开发下一代量子计算机。这一举措预示着量子计算领域将迎来新的突破。 据了解,此次合作将充分利
    的头像 发表于 02-07 14:26 786次阅读

    量子处理器的作用_量子处理器的优缺点

    量子处理器(QPU),又称量子计算机处理器,是量子计算机中的核心部件,其作用主要体现在以下几个
    的头像 发表于 01-27 13:44 1533次阅读

    量子处理器是什么_量子处理器原理

    量子处理器(QPU)是量子计算机的核心部件,它利用量子力学原理进行高速数学和逻辑运算、存储及处理量子
    的头像 发表于 01-27 11:53 1801次阅读

    【一文看懂】什么是量子计算

    量子计算代表了一种突破性的计算方法,它利用量子力学的基本原理,能够在某些复杂问题上实现超越传统计算机
    的头像 发表于 01-02 14:08 2165次阅读
    【一文看懂】什么是<b class='flag-5'>量子</b><b class='flag-5'>计算</b>?

    云端超级计算机使用教程

    云端超级计算机是一种基于云计算的高性能计算服务,它将大量计算资源和存储资源集中在一起,通过网络向用户提供按需的计算服务。下面,AI部落小编为
    的头像 发表于 12-17 10:19 972次阅读