当前位置: 首页 > news >正文

量子电路的实现 基于ibm的qiskit

量子计算的物理实现        

        量子计算的实现有几种方式,最常用的就是超导量子计算机,它的量子处理器是用超导传输量子比特构建的,它是由一个约瑟夫森结和一个并联的电容器组成的电路。约瑟夫森结是一种非线性电感,由两层重叠的超导金属层和它们之间的绝缘屏障构成。在非常低的温度下,超导体种的电子会形成所谓的库珀对。库珀对可以自发地通过绝缘势垒从结的一边隧穿到另一边。这种隧穿的非线性特性,从而产生了我们的量子位。微波传输线在芯片上制造,用于将微波信号传递给量子比特。

       当这些线路应用高度校准的微波脉冲——具有特定的频率、幅度、形状和持续时间时,我们可以让量子比特执行特定的操作。这构成了我们的量子门的基础。制造芯片,使得相邻的量子比特以特定的晶格结构连接,称为重六角晶格。这种连接性——所谓的拓扑结构——是我们设计电路时需要考虑的重要因素。

性能指标

每个处理器都列出了三个性能指标,我们在上一课讨论过,但作为提醒,它们是:Qubit count、EPLG和CLOPS。

Qubit count,这是显而易见的:它是单个量子处理器上可用的量子比特总数。对于一个相对较大的、实用规模的问题,你需要确保你使用的处理器有足够的量子比特来解决问题。但量子比特数量本身并不是唯一重要的因素。

EPLG,或“每层门的错误次数”。这是衡量量子比特和量子门质量的一个指标。它测量在100个量子比特的链中纠缠相邻量子比特的电路中每个门引入的平均错误。你希望这个数值尽可能小。

CLOPS,或“每秒电路层操作次数”。这量化了处理器的速度。它测量量子处理单元(QPU)每单位时间内可以执行多少层某种基准测试电路,称为量子体积电路。数值越高,我们的计算速度就越快。

设计量子电路:Qiskit模式

        那么,我们如何设计和运行量子电路呢?了解典型量子计算工作流程的最简单方法是通过Qiskit模式。Qiskit模式是一个概念性框架,允许用户通过使用模块化工具实现某些步骤来运行量子工作负载。这使得量子计算任务可以通过异构(CPU/GPU/QPU)计算基础设施来执行。这些步骤可以作为服务执行,并且可以合并资源管理,从而在开发新功能时实现无缝的可组合性。

1.映射:这一步形式化了我们如何处理我们感兴趣的一般问题,并找出如何以量子电路的形式将其映射到量子计算机上。

2.优化:在这一步中,使用Qiskit的转译器(transpile)将电路路由和布局到实际的物理量子比特硬件上。这包括将单个量子门转换为在硬件上执行的操作序列,以及对门的布局进行优化。

3.执行:Qiskit运行时原语提供了IBM量子硬件的接口,该接口允许运行编译电路。此步骤还包括使用错误抑制和缓解技术,这些技术在很大程度上可以从用户中抽取出来。

4.后处理:在这个步骤中,来自量子处理器本身的数据被处理,为用户提供原始问题的有用结果。基本上,这包括对所获得数据的任何进一步分析。

映射

        映射步骤基本上提出了这样一个问题:“我如何将我的问题转化为可以在量子硬件上合理运行的量子电路?”毫无疑问,地图绘制是一个难题,也是一个活跃的研究领域。没有一种万无一失的方法可以保证成功,但有一些建议的指导方针和我们已经知道如何解决的问题的例子。

        第一条准则是让经典计算机做它们更擅长的工作。对于经典计算机来说很容易的任务可能不会从量子计算机中受益。量子计算机用于解决传统难题。当然,如果是第一次使用Qiskit或量子计算机,不要担心会发现计算复杂的问题。把它分解成更小、更小的问题,你可以在直接进行大规模项目之前学会解决这些问题。接下来,将您想要度量或理解的问题的结果转换为期望值或成本函数。成本函数是一个特定于问题的函数,它将问题的目标定义为最小化或最大化。它可以用来查看试验状态或解决方案相对于目标的表现如何。这个概念可以应用到化学、机器学习、金融、优化等领域的各种应用中——你从哪个学科来解决问题并不重要。还要记住,您将要使用的硬件具有特定的拓扑,正如我们在硬件部分所讨论的那样。有些量子位是连接的,有些不是——你需要把你的问题映射到一个遵循IBM量子处理器的重十六进制拓扑的电路上。这个阶段需要练习。您不仅需要很好地理解您的问题,还需要很好地理解硬件功能—我们将在以后的课程中通过具体的示例和用例来了解如何平衡所有这些考虑因素。

优化

        下一步,我们需要选择一个量子处理器,它有足够高质量的量子比特,我们可以运行我们的量子电路。在硬件部分讨论的三个指标的指导下做出这些决策:qubit number(量子数)、EPLG(每层错误次数)和CLOPS(每秒电路层操作次数)。然后针对所选硬件优化电路。首先,我们需要有效地布局和布线我们的电路。布局是指将电路中的虚拟量子位映射到处理器上的物理量子位。路由是指调整电路,使电路中虚拟量子位之间的连通性与处理器上物理量子位的连通性相匹配。在布局和布线阶段有几件事要记住。并非所有量子位都是相连的。有些在芯片上彼此相距很远,我们需要尽可能减少或消除远距离交互。您可以在相邻的量子位之间应用一系列SWAP门来移动量子位信息,但是SWAP门成本高且容易出错,因此可能有更好的方法来实现这一点。尽量避免使用太多昂贵的SWAP门。布局和路由是迭代过程。你可以手工操作,但也有一个名为mapomatic的Qiskit工具,它可以根据近似错误率为物理量子位布局提供建议。转译器(将在稍后讨论)也可以给出明智的建议。接下来,可以将作用于相同量子位的单量子位门序列组合成单个门-有时也可以摆脱不必要的门或门的组合。例如,一些门的组合可以简化为更简单的组合——事实上,有时门的组合可能等同于恒等运算,因此我们可以简单地消除它们。您可以使用Qiskit转译器自动执行此操作,但如果您想要更多的控制,也可以逐个逐个地手动执行此操作。一旦我们改进了电路布局,路由和门计数-无论是手工还是使用转译器-我们通常想要可视化我们的电路,以确保所有门的定时都是有意义的。您可以在转译器中标记一个参数,以可视化电路的时间轴,并确保一切都按照您期望的方式排列。

编译

        Qiskit Transpiler可用于在模式工作流的早期阶段提供帮助。现在让我们更详细地研究一下它的功能。它可以重写给定的输入电路,使其与特定量子器件的拓扑结构相匹配,并优化电路的执行和抗噪声的弹性。它还将给定电路改写为您选择使用的特定量子处理器的基础门。

        Qiskit有四个内置的编译管道,对应于不同的优化级别,除非您已经熟悉量子电路优化,否则建议您使用其中一个。

        默认情况下,编译过程包括以下六个步骤:

1.初始化:这个阶段运行在我们开始将电路嵌入到后端之前所需的任何初始传递。这通常涉及展开自定义指令并将电路转换为单量子位和双量子位门。

2.布局:这个阶段将电路中的虚拟量子位映射到后端上的物理量子位。有关更多细节,请参阅布局阶段。(https://docs.quantum.ibm.com/api/qiskit/transpiler#layout-stage)

3.布线:此阶段在应用布局后运行,并将门(例如交换门)注入原始电路以使其与后端连接兼容。请参阅路由阶段了解更多详细信息。

(https://docs.quantum.ibm.com/api/qiskit/transpiler#routing-stage)

4.翻译:这个阶段将电路中的门转换为目标后端的基集。请参阅翻译阶段了解更多细节。

(https://docs.quantum.ibm.com/api/qiskit/transpiler#translation-stage)

5.优化:这个阶段反复运行主优化循环,直到达到某个条件(例如达到某个目标深度)。我们有四种不同的优化级别可供选择,如下所述。

6.调度:此阶段适用于任何硬件感知调度过程。在高层次上,调度可以被认为是在电路中插入延迟,以解释指令执行之间量子位的空闲时间。

        注意,qiskit的教程里有教学案例,可以自己试(唯一困难的点在于,调用真实的量子计算机需要排队,通常时间很长而且额度有限)有从0到3的四个优化级别,其中更高的优化级别需要更多的时间和计算努力,但可能产生更好的电路。优化级别0用于器件特性实验,因此,仅将输入电路映射到目标后端的约束,而不执行任何优化。优化级别3花费最大的精力来优化电路。然而,由于转译器中的许多优化技术都是基于启发式的,因此花费更多的计算工作并不总是导致输出电路质量的改善。如果对此有进一步的兴趣,请查看Qiskit文档中的转译器页面。

抑制错误

        减少电路中错误的第一步是优化布局,布线和最小化门数,我们已经完成了,要么使用转译器,要么自己完成。现在来讨论一些更复杂的误差抑制方法。错误抑制是指在编译过程中转换电路以使错误最小化的一类技术。它不同于错误缓解,我们将在下面的“执行”一节中讨论错误缓解。我们使用的两种最常见的错误抑制形式是动态解耦和泡利旋转

       1. 动态解耦用于有效地抵消当量子位空闲时引入的一些环境噪声。通过在特定时间应用一系列门,您可以使在空闲时间的一部分中积累的噪声大致抵消另一部分中的噪声。

      2.  泡利旋转是一种插入随机门的方法,不是像动态解耦那样消除噪声,而是简化噪声。通过插入随机门,它可以防止不同误差的影响快速累积,并且使噪声更容易表征,因为它现在具有随机性质。这种方法还构成了一种强大的错误缓解技术的基础,将在下面讨论。

执行

        现在我们准备好执行量子程序了。Qiskit Runtime原语提供了一个到IBM Quantum硬件的接口,它们还从用户那里抽取出错误抑制和缓解。有两个原语可供选择:Sampler和Estimator

        Qiskit Runtime的采样器在量子设备上多次运行电路,每次运行执行测量,并从恢复的位串中重建概率分布。它执行的运行(或射击)越多,结果就越准确,但这需要更多的时间和量子资源。具体来说,它通过测量电路制备的状态来计算获得每个可能的标准基态的概率。

        Qiskit Runtime的Estimator使用一个复杂的代数过程,通过将可观察对象分解成具有已知特征基的其他可观察对象的组合,来估计真实量子设备上的期望值。

        在执行步骤中,我们还可以选择错误缓解策略。错误缓解是指允许用户通过对执行时存在的设备噪声进行建模来减少电路错误的技术。通常,这会导致与模型训练相关的大量预处理开销,以及通过使用生成的模型来减轻原始结果中的错误的经典后处理开销。作为这笔开销的交换,我们能够得到更准确的结果。

        我们可以实现多种技术来减少错误。我们将讨论三种,以增加对错误的弹性的顺序,但也因此,以增加计算成本的顺序。然而,请注意,这是一个活跃的研究领域——所以我们可能会继续发明新的,并改进旧的。

        在弹性水平0,转译器对你的电路不做任何事情,在弹性水平1,它引入了一种称为旋转读出错误消除(T-REX)的方法。T-REX使用泡利旋转,正如在错误抑制部分所讨论的那样。如前所述,在电路中插入随机门可以使非常复杂,难以建模的噪声看起来是随机的,并且在后处理中更容易解释或减去。在弹性水平2,加入零噪声推断ZNE)。这是一种流行的技术,我们最近取得了很多成功。ZNE背后的想法可能有点令人惊讶-我们实际上在已经存在的基础上添加了噪音!但这让我们可以反向推断,来预测如果噪音越来越少,结果会是什么样子。添加噪声可以通过几种不同的方式完成。例如,我们可以延长门,使其更长,从而更容易出错,或者运行更多的门,最终导致身份操作,因此电路不会改变功能,但我们有目的地采样更多的噪声。你必须对每条电路和每一个你想要跟踪的期望值都这样做,所以你可以看到它最终是如何在计算上昂贵的。

        ZNE的一种特殊类型被称为概率误差放大(PEA)。一旦我们了解了门的噪声模型,PEA就会从噪声模型中采样误差,并有意地将其注入电路中。我们将讨论的最后一种错误缓解形式是概率错误消除(PEC)。PEC不是第三个弹性级别,而是必须在Qiskit中手动打开的特殊功能,因为与其他错误缓解技术相比,所需的计算资源的可伸缩性不是很好。您首先要了解影响电路的噪声-为电路中的每个独特的双量子位门层运行噪声学习或噪声表征电路。这些结果让你可以用泡利算子来描述噪声。一旦你知道了这些噪声项,你就可以修改你的电路,这样它们就可以有效地内置相反的泡利门来消除这些噪声通道。在某些方面,这个过程类似于降噪耳机的工作方式。然而,这种消除噪声的方法非常昂贵,运行时间在门的数量上呈指数级增长,因此它可能不是非常大的电路的最佳选择。

后处理

        后处理阶段是我们可视化和分析量子电路输出的阶段。有许多Qiskit工具可供您使用,例如可视化和量子信息模块。

参考

1.Evidence for the utility of quantum computing before fault tolerance | Nature

2.Running Quantum Circuits | IBM Quantum Learning 

3.transpiler | IBM Quantum Documentation

相关文章:

量子电路的实现 基于ibm的qiskit

量子计算的物理实现 量子计算的实现有几种方式,最常用的就是超导量子计算机,它的量子处理器是用超导传输量子比特构建的,它是由一个约瑟夫森结和一个并联的电容器组成的电路。约瑟夫森结是一种非线性电感,由两层重叠的超导…...

关于谷歌浏览器debug模式不进断点问题解决方案

第一步.浏览器F12弹出调试者模式 第二步.点击设置齿轮,找到Ignore List,将node_model取消勾选,关闭浏览器,重新打开就进断点了...

制造行业实践|悠进电装基于超融合完成信息化改造, 保障业务系统 7/24 长跑

当一辆汽车在路上奔驰时,确保车内各种电气信号正常传递和电力供给的关键是什么?正是那不起眼却功不可没的汽车线束。这些精密编织的电线网络,犹如汽车的“神经网络”和“动脉血管”,在传递电气信号、数据的同时,源源不…...

如何学习C++游戏开发

学习C游戏开发是一个涉及多个领域的复杂过程,包括编程、游戏设计、图形学等。 1. **学习C基础**: - 掌握C的基本语法和面向对象编程。 - 学习C标准库,特别是STL(标准模板库)。 2. **理解游戏开发概念**&#xf…...

计算网络信号

题目描述: 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。注意:网络信号可以绕过阻隔物 array[m][n]的二维数组代表网格地图, array[i][j]0代表i行j列是空旷位置&…...

【Vue 全家桶】6、vue-router 路由(更新中)

目录 相关理解基本路由嵌套路由路由传参编程式路由导航 相关理解 基本路由 嵌套路由 路由传参 编程式路由导航...

解决程序因缺少xinput1_3.dll无法运行的有效方法,有效修复丢失xinput1_3.dll

如果你的电脑在运行某些应用程序或游戏时提示“xinput1_3.dll丢失”或“找不到xinput1_3.dll”的错误消息,那么很可能是因为你的系统中缺少这个重要的DLL文件而导致的问题。那么电脑出现xinput1_3.dll丢失的问题时有哪些方法进行修复呢? 如何确定电脑是否…...

uni-popup 弹出框

:maskClick"false" 是点击空白遮罩处不关闭弹窗 <uni-popup ref"popup" type"center" :maskClick"false"> <div style"width: 80vw;padding: 0.5em;box-sizing: border-box; background-color: #fff; border-…...

Android笔记:Android中Fragment改变主题

‌在Android中,Fragment使用主题可以通过以下几种方法实现‌: 1 在onCreateView方法中设置主题‌: 在onCreateView方法中,可以通过创建一个ContextThemeWrapper来改变Fragment的主题。例如: @Override public View onCreateView(LayoutInflater inflater, ViewGroup co…...

GEE 训练——利用sentinel-2数据计算两栖NDVI前后差异

目录 简介 函数 expression(expression, map) Arguments: Returns: Image 代码 结果 简介 利用sentinel-2数据计算两栖NDVI前后差异 COPERNICUS/S2是欧洲空间局(ESA)的地球观测计划,旨在通过卫星遥感技术提供全球的高分辨率地球观测数据。S2是COPERNICUS地球观测计…...

看电动缸是如何提高农机的自动化水平

电动缸作为一种将电动机的旋转运动转变为推杆的直线往复运动的电力驱动装置&#xff0c;在提升农机自动化水平方面发挥了重要作用。以下详细分析电动缸如何提高农机的自动化水平&#xff1a; 一、电动缸的工作原理与优势 电动缸的工作原理是以电力作为直接动力源&#xff0c;采…...

C++ 并发专题 - 条件变量的使用

一&#xff1a;概述&#xff1a; 在 C 中&#xff0c;条件变量&#xff08;std::condition_variable&#xff09;是一种用于线程间同步的机制&#xff0c;主要用于在多线程环境中让一个线程等待某个条件满足后再继续执行。条件变量通常配合互斥锁&#xff08;std::mutex&#…...

《Essential C++》学习笔记

《Essential C》这本书&#xff0c;是适合从C选手快速过度到C选手的 一本书&#xff0c;下面是个人记录 第一章&#xff1a;基础语法 第一章主要就是C语言基础&#xff0c;这里类似于表达式 数组 条件语句 循环语句&#xff0c;就不多概述了。 :::info vector&#xff1a;可动…...

揭秘!微服务架构下,Apollo 配置中心凭啥扮演关键角色?

在当今的微服务架构蓬勃发展的时代&#xff0c;配置中心扮演着极为关键的角色&#xff0c;其重要性不言而喻。今天&#xff0c;我们就以 Apollo 为例&#xff0c;聊聊配置中心在微服务架构中的重要意义。 一、微服务架构下的配置管理挑战 随着微服务架构的广泛应用&#xff0…...

每日OJ题_牛客_春游_贪心+数学_C++_Java

目录 牛客_春游_贪心数学 题目解析 C代码 Java代码 牛客_春游_贪心数学 春游 描述&#xff1a; 盼望着&#xff0c;盼望着&#xff0c;东风来了&#xff0c;春天脚步近了。 值此大好春光&#xff0c;老师组织了同学们出去划船&#xff0c;划船项目收费如下&#xff1a;…...

JavaWeb--Maven

1.初始Maven 1.1介绍 Maven 是一款用于管理和构建Java项目的工具&#xff0c;是Apache旗下的一个开源项目 。 1.2Maven的作用 2.Maven概述 2.1Maven介绍 Apache Maven是一个项目管理和构建工具&#xff0c;它基于项目对象模型(Project Object Model , 简称: POM)的概念&am…...

计算机网络——网络层导论

转发是局部功能——数据平面 路由是全局的功能——控制平面 网卡 网卡&#xff0c;也称为网络适配器&#xff0c;是计算机硬件中的一种设备&#xff0c;主要负责在计算机和网络之间进行数据传输。 一、主要功能 1、数据传输&#xff1a; 发送数据时&#xff0c;网卡将计算机…...

使用 JPA 的 `save()` 方法更新数据库中的数据

在开发基于 JPA&#xff08;Java Persistence API&#xff09;的应用时&#xff0c;数据持久化操作中的常见问题是执行 save() 方法后数据库中的数据没有更新。本文将详细介绍 JPA 的 save() 方法如何工作、其可能出现的问题&#xff0c;以及如何解决这些问题&#xff0c;以确保…...

Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题

Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题 参考文章引言1. git 介绍及安装2. git 本地配置及远程仓库链接3. obsidian 的 git 插件4. 常用的使用场景和对应的命令4.1. 本地仓库已推送到远端&#xff0c;如何在另一个电脑上第一次同步4.2 多端同…...

MapReduce 的 Shuffle 过程

MapReduce 的 Shuffle 过程指的是 MapTask 的后半程&#xff0c;以及ReduceTask的前半程&#xff0c;共同组成的。 从 MapTask 中的 map 方法结束&#xff0c;到 ReduceTask 中的 reduce 方法开始&#xff0c;这个中间的部分就是Shuffle。是MapReduce的核心&#xff0c;心脏。 …...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...