量子算法入门——5.Qiskit库介绍与简单应用(2)

参考资料:
【【零基础入门量子计算】】
来自b站up:溴锑锑跃迁
建议关注他的更多高质量文章:CSDN:【溴锑锑跃迁】
(实际上只带一点点原创,绝大部分资料来自这位大佬)
跟着视频我手打了一遍notebook的内容,文件随附(为了创作分哈哈),为了绕开CSDN下载资源的种种手段,再附【下载链接】: 密码:depven

OpenQASM后端

对一个量子电路,我们需要测量它来得到(理想的)实际结果,否则我们不能从量子态中得到任何信息。而测量这一行为则会导致量子比特坍缩到经典比特,我们使用量子电路的measure函数添加测量门:

#可以接续我们的测试代码
#再创建一个量子电路以进行测量操作
#绘图时会生成 3 qubits + 3 bits = 6个道
meas = QuantumCircuit(3, 3)
#在0~2个量子比特道上加一个隔板以进行区分
meas.barrier(range(3))
#建立从量子到经典的测量映射,相当于把测量结果移至经典道
meas.measure(range(3), range(3))qc = circ.compose(meas)#电路的可加性
qc.draw('mpl')

在这里插入图片描述
OpenQASM后端用于实打实地测量最终量子态,其对应的后端名称为qam.simulator,原理是制备大量初始量子态输入电路当中,最后测量对应的最终量子

#导入OpenQASM后端
backend2 = Aer.get_backend('qasm_simulator')#基于OpenQASM后端运行电路
#这里用参数shots把样本数设定为1024(事实上是默认值)
job = execute(qc, backend2, shots = 1024)#获得结果
result = job.result()counts = result.get_counts(qc)
print(counts)

在这里插入图片描述
结果解释:shots是测试的次数,总共1024次测量,000出现508次,111出现516次
每次执行的结果都是不一样的,如何理解这一结果呢?我们可以通过计算一个哈达吗门和两个CNOT门作用于量子电路后得出的最终态为
∣ ψ ⟩ = 1 2 ( ∣ 000 ⟩ + ∣ 111 ⟩ ) |\psi\rangle=\frac{1}{\sqrt{2}}(|000\rangle+|111\rangle) ψ=2 1(∣000+∣111⟩)
如此一来,两种量子态各占约50%的结果就是符合理论的了。
回顾上文所述的态矢后端可以印证这一点,如下图:
在这里插入图片描述

绘图

绘图要使用qiskitvisualization库

from qiskit.visualization import *

绘图的对象永远是量子态,也就是statevector。量子态可以是态矢量,也可以是态矩阵 ρ ρ ρ
ρ = ∣ ψ ⟩ < ψ ∣ = ∑ k ∣ ψ k > < ψ k ∣ \rho=\left|\psi\right\rangle\left<\psi\right|=\sum_{k}\left|\psi_{k}\right>\left<\psi_{k}\right| ρ=ψψ=kψkψk
为方便,我们先创建一个贝尔态并调用态矢后端

bell = QuantumCircuit(2)
bell.h(0)
bell.cx(0, 1)backend = Aer.get_backend('statevector_simulator')
job = execute(bell, backend)
result = job.result()
statevector = result.get_statevector(bell, decimals=3)statevector

在这里插入图片描述
可以看到,我们绘制出了贝尔态,即:
∣ 贝尔 ⟩ = 1 2 ∣ 00 ⟩ + 1 2 ∣ 11 ⟩ = [ 1 2 0 0 1 2 ] |\text{贝尔}\rangle=\frac{1}{\sqrt2}|00\rangle+\frac{1}{\sqrt2}|11\rangle=\begin{bmatrix}\dfrac{1}{\sqrt{2}}\\0\\0\\\dfrac{1}{\sqrt{2}}\end{bmatrix} 贝尔=2 1∣00+2 1∣11= 2 1002 1

直方图

plot_histogram:直方图用于绘制OpenQASM后端返回的counts

circ = QuantumCircuit(3)
meas = QuantumCircuit(3, 3)
# 根据测试部分中的描述,现在第0个和第2个量子比特都处于|0>和|1>的叠加态
# 每个单态的概率都是50%
circ.h(0)
circ.h(2)
circ.cx(0, 1)meas.barrier(range(3))
meas.measure(range(3), range(3))
qc = circ.compose(meas)backend = Aer.get_backend('qasm_simulator')
result1 = execute(qc, backend).result()
result2 = execute(qc, backend).result()counts1 = result1.get_counts(qc)
counts2 = result2.get_counts(qc)
legends = ['1st','2nd']#加入图例
plot_histogram([counts1, counts2], legend = legends, figsize=(10, 7))

在这里插入图片描述

城市图

plot_state_city:将量子态矩阵分成实部和虚部进行绘制,会形成立体的柱状图

plot_state_city(statevector)

在这里插入图片描述

Q球图

plot_state_qsphere:Qiskit中的特色菜,将某量子态的振幅和相位绘制在球体中,并分别用线条粗细和颜色区分。
对混合态则会将每个分量的qsphere绘制出来,下称“Q球图”

plot_state_qsphere(statevector)

在这里插入图片描述

Bloch球图

plot_bloch_multivector: 将态向量画在布洛赫球面上

plot_bloch_multivector(statevector)

在这里插入图片描述

Pauli图

plot_state_paulivec:相当于用泡利矩展开量子态

plot_state_paulivec(statevector, color=['red','blue','violet','green'])

在这里插入图片描述

Bloch矢量图

plot_bloch_vector:布洛赫矢量被定义为
v ⃗ = [ T r [ X ρ ] T r [ Y ρ ] T r [ Z ρ ] ] \left.\vec{v}=\left[\begin{array}{c}Tr[X\rho]\\Tr[Y\rho]\\Tr[Z\rho]\end{array}\right.\right] v = Tr[]Tr[Yρ]Tr[]

plot_bloch_vector([0.77, -0.2, 0.79])

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87395.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端如何优雅地实现一个“请求队列”,避免服务器被卡死?

有这样一些场景&#xff1a; 页面一加载&#xff0c;需要同时发 10 个请求&#xff0c;结果页面卡住&#xff0c;服务器也快崩了。用户可以批量操作&#xff0c;一次点击触发了几十个上传文件的请求&#xff0c;浏览器直接转圈圈。 当后端处理不过来时&#xff0c;前端一股脑…

SSL/TLS协议信息泄露漏洞(CVE-2016-2183)、SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)修复方法

目录 一、问题原因二、整改步骤 一、问题原因 通过绿盟漏洞检测工具扫描发现Windows系统存在SSL/TLS协议信息泄露漏洞(CVE-2016-2183)、SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)、SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)。 二、整改步骤 使用gpedit.msc进入组…

MinHook 如何对 .NET 母体 CoreCLR 进行拦截

一&#xff1a;背景 1. 讲故事 这篇文章起源于和一家 .NET公司 开线上会议时&#xff0c;提出的一个场景问题&#xff0c;程序出现了非托管内存暴涨&#xff0c;这些非托管内存关联的对象都囤积在 终结器队列 中&#xff0c;很显然这是代码中没用 using 及时释放引发的&#…

DPI深度检索原理和架构

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; DPI&#xff08;深度包检测&#xff09;技术通过**透视网络载荷内容**实现精细化流量管控与威胁检测&#xff0c;其核心在于突破传统防火墙仅检查IP/端口等表层信息的局限&#xff0c;对**应用层数据**进…

QT Creator的返回到上一步、下一步的快捷键是什么?

在 Qt Creator 中&#xff0c;用于导航的 返回上一步 (Back) 和 前进下一步 (Forward) 的快捷键如下&#xff1a; 默认快捷键&#xff1a; 功能Windows/LinuxmacOS返回上一步Alt ←Command [前进下一步Alt →Command ]

UI前端大数据处理策略优化:基于云计算的数据存储与计算

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 一、引言&#xff1a;大数据时代前端处理的挑战与云计算破局 在数字化转型的浪潮中&#xff…

机器学习基础 多层感知机

机器学习基础 多层感知机 文章目录 机器学习基础 多层感知机1. 多层感知机1.1 线性模型的失效1.2 感知机1.3 感知机的收敛定理1.4 从线性到非线性1.5 多层感知机的定义和实现 参考 1. 多层感知机 1.1 线性模型的失效 ​ 在李沐《动手学深度学习》中有这样的描述&#xff1a; …

关于安装Ollama大语言模型本地部署工具

一、Ollama 安装方法概述 Ollama 是一个开源的大型语言模型(LLM)本地部署工具&#xff0c;支持在 Windows、macOS 和 Linux 系统上运行。它简化了在本地计算机上运行和管理大语言模型的流程&#xff0c;让开发者能够轻松部署各种开源模型。 Windows 系统安装步骤 访问 Ollam…

html配置rem实现页面自适应

1.在js文件使用&#xff0c;建议放到全局js中 // 全局js文件 $(function () {// 设置根目录字体大小var baseSize 16; // 设计稿的基准字体大小&#xff0c;通常是16pxvar baseWidth 750; // 设计稿的基准宽度&#xff0c;通常是750pxfunction adjustFontSize() {const widt…

POI实现文档的图片的提取和替换

1. 简介 在日常办公自动化开发中&#xff0c;常常需要对 Word 文档中的图片进行批量提取、保存&#xff0c;甚至将图片替换为自定义的文本或链接。Apache POI 是一款强大的 Java 开源库&#xff0c;支持对 Microsoft Office 文档&#xff08;包括 Word、Excel、PowerPoint 等&…

毫米波雷达 – 深度学习

目录 数据表示 公开数据库 未来发展方向 稀疏点云 + 深度学习 直接处理点云 (1/2) 候选生成+特征提取+候选分类(DL* ) 候选生成+特征提取+候选分类(DL) 直接处理点云 (2/2) 候选生成+特征提取(DL)+候选分类(DL) 网格数据+端对端检测(DL) 稠密数据块 + 深度学习 直接…

Redis——常用指令汇总指南(一)

目录 1.set & get ①set指令 ②get指令 2.keys 3.del 4.expire & setex & psetex 5.ttl 6.exists 7.setnx 8.flushall 9.object encoding 10. type 1.set & get set & get指令中key和value都是字符串&#xff0c;但是不需要加单引号或双引号。 …

PDF处理控件Aspose.PDF教程:在 Java 中删除 PDF 页面

您是否需要使用 Java 从PDF文档中删除特定页面&#xff1f;无论您是要清理空白页、删除机密部分&#xff0c;还是仅仅在分发前调整内容&#xff0c;以编程方式操作 PDF 页面的能力都将大有裨益。本指南将向您展示如何借助Aspose.PDF仅用几行代码删除不需要的页面。让我们深入了…

RediSearch 字段类型与配置选项

1. 数值字段&#xff08;NUMERIC&#xff09; 用途&#xff1a;存储整数或浮点数&#xff0c;可进行范围查询与排序。 选项&#xff1a; SORTABLE&#xff1a;允许用 SORTBY 排序NOINDEX&#xff1a;不参与索引&#xff0c;仅供返回 定义语法 FT.CREATE idx ON HASH PREFIX…

PHP Yii2 安装SQL Server扩展-MAC M4 Pro芯片

MAC M4 Pro芯片版本&#xff0c;千锤百炼编译十几次终于成功 # 设置基础镜像并强制使用 x86_64 架构&#xff08;适配 M4 芯片&#xff09; FROM --platformlinux/amd64 php:8.1-fpm-alpine3.18WORKDIR /var/www/html# 可选&#xff1a;设置时区 ARG TZAsia/Shanghai ENV TZ${…

HTML初学者第二天

<1>HTML的语法规范 1.1标签 -双标签&#xff1a;如 <html></html> 前面的叫开始标签&#xff0c;后面的叫结束标签。 -单标签&#xff1a;如 <br /> 1.2基本语法概述 -HTML标签是由尖括号包围的关键词&#xff0c;例如<html>。 -HTML标…

【加解密与C】HASH系列(二) SHA

SHA&#xff08;安全散列算法&#xff09;简介 SHA&#xff08;Secure Hash Algorithm&#xff09;是由美国国家安全局&#xff08;NSA&#xff09;设计的一系列密码散列函数&#xff0c;用于将任意长度的数据转换为固定长度的散列值。SHA家族包括SHA-1、SHA-2&#xff08;含S…

【Python】进阶 - 数据结构与算法

系列篇章&#x1f389; No.文章1【Python】基础知识&#xff08;详细&#xff09;&#x1f680;2【Python】基础 - 循环、容器类型&#x1f680;3【Python】基础 - 推导式、函数&#x1f680;4【Python】基础 - 文件、异常、模块&#x1f680;5【Python】进阶 - 面向对象&…

【如何实现分布式压测中间件】

分布式压测中间件的原理及其实现 原理全链路追踪框架&#xff08;Trace&#xff09;MQ中间件数据库分布式缓存中间件&#xff08;Redis&#xff09;分库分表中间件 原理 通过大量阅读中间件源码&#xff0c;开源社区调研&#xff0c;得到设计原理&#xff1a; &#xff08;1&a…

Qt进程间保活方案:详解如何实现进程间通信与自动保活机制

目录 摘要 一、进程间保活的基本原理 二、具体步骤及代码示例 三、常见问题与优化 四、总体方案 摘要 在一些需要长时间运行的应用程序中&#xff0c;确保进程在意外退出时能够自动重启是一项非常重要的任务。尤其是在嵌入式开发、后台服务以及需要高可用性的场景下&#x…