量子奇异值阈值算法

        特征值分解只适用于方阵,如何扩展到任意形状的矩阵呢?奇异值分解能够解决此问题。量子奇异值阈值算法在奇异值分解的基础上将小的特征值设置为0,从而将小的特征值及其对应的特征向量去掉,进而降低矩阵的秩,达到降维的目的。

奇异值阈值算法

     假设A是一个M\times N的矩阵,A 的秩记为rank(A)=R。A的奇异值分解是指存在满足UU^{T}=IVV^{T}=I的矩阵U=(u_{0},u_{1}...u_{M-1})\in R^{M\times M}V=(v_{0},v_{1}...v_{M-1})\in R^{N\times N}

以及对角矩阵\Lambda =diag(\lambda _{1},\lambda _{2},...\lambda _{R-1},0,0,0)\in R^{M\times N},使得下式成立

                                                                 A=U\Lambda V^{T}                                                            (1)    

其中\lambda _{1},\lambda _{2},...\lambda _{R-1}为A 的奇异值,u0...和v0...分别为左右奇异量,则A的分解为

                                ​​​​​​​            A=U_{R}\Lambda _{R}V_{R}^{T}=\sum_{R=0}^{R-1}\lambda _{r}u_{r}v_{r}^{T}                                             (2)    

实验

实验中为了简化线路的设计与实现,假设A是方阵,进而可以设置\tilde{A}=A此时奇异值就是特征值,左右奇异值向量就是特征向量。使用的矩阵为

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​            A=\begin{pmatrix} 1.5 & 0.5\\ 0.5 & 1.5 \end{pmatrix}                        

其奇异值\lambda _{1} = 2\lambda _{1} = 1,对应的左右奇异向量分别为

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                        |u_{0}\rangle= |v_{0}\rangle=\frac{1}{\sqrt{2}}(1,1)^{T}                                                (3)    

        ​​​​​​​        ​​​​​​​        ​​​​​​​                               |u_{1}\rangle= |v_{1}\rangle=\frac{1}{\sqrt{2}}(1,-1)^{T}                                             (4) 

则算法输入为矩阵A的归一化形式:

        ​​​​​​​        ​​​​​​​        |\varphi \rangle = \frac{1.5}{\sqrt{5}}|00\rangle+ \frac{0.5}{\sqrt{5}}|01\rangle+ \frac{0.5}{\sqrt{5}}|10\rangle+\frac{1.5}{\sqrt{5}}|11\rangle=\frac{1}{2\sqrt{5}}(3,1,1,3)^{T}           (5) 

假设阈值\tau =0.8,使得矩阵A的两个特征值在U_{\lambda ,\tau }执行前后的比例从

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​    \frac{\lambda _{1}}{\lambda _{2}}=\frac{2}{1}

变成

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​\frac{1-\tau /\lambda _{1}}{1-\tau /\lambda _{2}}=\frac{3}{1}

第一步:制备初始态

        ​​​​​​​        ​​​​​​​        ​​​​​​​        |q_{1}q_{2}q_{3}q_{4}q_{5}\rangle=\frac{1}{\sqrt{5}}(2|u_{0}\rangle|v_{0}\rangle+1|u_{1}\rangle|v_{1}\rangle)|000\rangle                              (6) 

第二步:利用相位估计将矩阵A 的特征值提取到q_{1}q_{2}上,量子态演化为

        ​​​​​​​             ​​​​​​​          ​​​​​​​|q_{1}q_{2}q_{3}q_{4}q_{5}\rangle=\frac{1}{\sqrt{5}}(2|u_{0}\rangle|v_{0}\rangle|01\rangle+1|u_{1}\rangle|v_{1}\rangle|10\rangle)|0\rangle                     (7) 

这里,将算子e^{iAt}张量上单位矩阵I_{2\times 2}将其扩展到4*4的矩阵,其实只需要将e^{iAt}作用到q_{3}即可。

第三步:通过CNOT门将矩阵A的特征值由|01\rangle|10\rangle变为|11\rangle|10\rangle,完成对奇异值的阈值变换,此时量子态演化为

        ​​​​​​​        ​​​​​​​        ​​​​​​​      |q_{1}q_{2}q_{3}q_{4}q_{5}\rangle=\frac{1}{\sqrt{5}}(2|u_{0}\rangle|v_{0}\rangle|11\rangle+1|u_{1}\rangle|v_{1}\rangle|10\rangle)|0\rangle

这一步很关键,使得特征值由|01\rangle=|2\rangle|10\rangle=|1\rangle,变成了|11\rangle=|3\rangle|10\rangle=|1\rangle

第四步:对q_{0}进行受控旋转,将新的奇异值相关的信息提取到q_{0}的概率幅上

第五步:执行第二步和第三步的逆操作,解除q_{1}q_{2}与其他量子的纠缠。

        在qasm仿真中添加measure语句会改变最终的测量结果,与理论值有略微的偏差,而不加测量语句,通过自动测量,仿真值与理论值基本吻合。原因还没有找到,但是可以猜测,通过measure语句,当某一条线路已经没有量子逻辑门了,测量便直接进行,而其他的线路仍有量子逻辑门,可能是这样的测量导致了偏差,而统一在所有逻辑门执行完成后测量的值与理论值基本吻合略微好。然而,测量得到的00001,01001,10001,11001的振幅分别为0.0003,0.00009,0.00008,0.00042。特征值比例为3:1,与理论有一定误差。

 

#量子奇异值阈值分解
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
from numpy import pi
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, transpile
from qiskit_aer import Aer
import numpy as np
from qiskit.visualization import plot_histogramfrom math import pi
from qiskit.visualization import plot_histogram
# 创建一个量子电路,包含 4 个量子比特和 4 个经典比特
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
from numpy import piqreg_q = QuantumRegister(5, 'q')
creg_c = ClassicalRegister(5, 'c')
circuit = QuantumCircuit(qreg_q, creg_c)circuit.h(qreg_q[3])
circuit.h(qreg_q[2])
circuit.h(qreg_q[1])
circuit.x(qreg_q[3])
circuit.cu(0.635, 0, 0, 0, qreg_q[3], qreg_q[4])
circuit.x(qreg_q[3])
circuit.cu(2.5, 0, 0, 0, qreg_q[3], qreg_q[4])
circuit.cu(-pi / 2, -pi / 2, pi / 2, 0, qreg_q[2], qreg_q[3])
circuit.u(3 * pi / 4, 0, 0, qreg_q[2])
circuit.cx(qreg_q[1], qreg_q[3])
circuit.swap(qreg_q[1], qreg_q[2])
circuit.h(qreg_q[2])
circuit.cu(-pi / 2, 0, 0, 0, qreg_q[1], qreg_q[2])
circuit.h(qreg_q[1])
circuit.cx(qreg_q[1], qreg_q[2])
circuit.cu(-pi / 16, 0, 0, 0, qreg_q[1], qreg_q[0])
circuit.cu(-pi / 32, 0, 0, 0, qreg_q[2], qreg_q[0])
circuit.cx(qreg_q[1], qreg_q[2])
circuit.h(qreg_q[1])
circuit.cu(pi / 2, 0, 0, 0, qreg_q[1], qreg_q[2])
circuit.h(qreg_q[2])
circuit.swap(qreg_q[1], qreg_q[2])
circuit.cx(qreg_q[1], qreg_q[3])
circuit.h(qreg_q[1])
circuit.u(-3 * pi / 4, 0, 0, qreg_q[2])
circuit.cu(-pi / 2, pi / 2, -pi / 2, 0, qreg_q[2], qreg_q[3])
circuit.h(qreg_q[2])
circuit.measure(qreg_q[0], creg_c[0])
circuit.measure(qreg_q[1], creg_c[1])
circuit.measure(qreg_q[2], creg_c[2])
circuit.measure(qreg_q[3], creg_c[3])
circuit.measure(qreg_q[4], creg_c[4])
# Draw the circuit
circuit.draw(output='mpl')

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python_爬虫3_Requests库网络爬虫实战(5个实例)

目录 实例1:京东商品页面的爬取 实例2:亚马逊商品页面的爬取 实例3:百度360搜索关键词提交 实例4:网络图片的爬取和存储 实例5:IP地址归地的自动查询 实例1:京东商品页面的爬取 import requests url …

黑马微项目

目录 1 飞机票 2 生成一个五位数验证码 3 数字加密 4 数字解密 5 抢红包 6 双色球系统 7 用户登录 8 金额转换 9 手机号屏蔽 10 罗马数字转换 11 调整字符串 12 初级学生管理系统(学生数据的管理) 13 学生管理系统(用户的相关操…

基于lighthouse搭建私有网盘Cloudreve【开源应用实践】

基于lighthouse搭建私有网盘Cloudreve【超高性价比】 今天给大家分享一款私人网盘神器,既能存放你的文件文档,也能替你保存那不可告人的秘密~ 香菇今天将手把手教给大家如何在腾讯云轻量应用服务器上搭建个人专属网盘 1. 既爱又恨的网盘存储 很多小伙伴…

博物馆实景复刻:开启沉浸式文化体验的新篇章

随着数字化技术的飞速发展,博物馆的展览形式正在经历一场前所未有的变革。3数字博物馆和3D线上展览,这种创新的展览方式不仅打破了时间和空间的限制,更让文化遗产的保护与传承迈上了一个新的台阶。 本文将深入探讨博物馆实景复刻虚拟展厅的兴…

java中设计模式的使用(持续更新中)

概述 设计模式的目的:编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有…

linux基础io重定向

文章目录 目录 文章目录 前言 一、函数的认识 1、认识close函数和dup2函数 1、close函数: ​编辑 2、write、read函数 1、write函数 2、read函数 二、重定向 1.引入函数dup2 ​编辑 2、输出重定向 3.输出重定向 三、myshell重定向 总结 前言 接上一篇,…

[STM32] 定时器应用之输出比较 (五)

文章目录 1.输出比较2.PWM 介绍3.配置PWM 1.输出比较 OC: 输出比较。 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。每个高级定时器和通用定时器都拥有4个输出比较通道高级定…

【计算机毕设】无查重 基于python豆瓣电影评论舆情数据可视化系统(完整系统源码+数据库+开发笔记+详细部署教程)✅

目录 【计算机毕设】无查重 基于python豆瓣电影数据可视化系统(完整系统源码数据库开发笔记详细部署教程)✅ 一、项目背景 二、项目目标 三、项目功能 四、开发技术介绍 五、数据库设计 六、项目展示 七、开发笔记 八、启动步骤文档 九、权威教…

后台管理系统窗体程序:个人中心

目录 个人中心的功能介绍: 1、进入页面 2、页面内的各种功能设计 (1)修改按钮 (2)页面的进入退出操作 一、网页设计 二、html代码 三、css代码 四、js代码 本次项目为后台管理系统,在本系统内的第七…

PLC如何支持GEM300标准?SECS/GEM通讯协议

1. 提供技术服务,保证户使用没问题 2. 支持市场所有的常规PLC 3. 支持常规组态软件,如wincc、组态王、组态屏等 4. 支持各类传感器,私有协议、modbus、web等 5. 无需二次开发,只需配置映射到已有的PLC地址 GEM300协议是为了满…

用 Google Sheets 表格增强 Tableau 数据分析的 3 种玩法

轻松实现文本翻译、网页数据抓取,甚至创建高级日期表来增强 Tableau 可视化效果! 作为一款强大的数据可视化工具,Tableau 的可视化能力毋庸置疑。然而,对于跟表格打交道的用户来说,它没有“创建表格”的功能&#xff0…

计算机网络 (3)计算机网络的性能

一、计算机网络性能指标 速率: 速率是计算机网络中最重要的性能指标之一,它指的是数据的传送速率,也称为数据率(Data Rate)或比特率(Bit Rate)。速率的单位是比特/秒(bit/s&#xff…

CAP与BASE分布式理论

CAP理论 C:Consistency 一致性:指强一致性,分布式系统中的所有节点在同一时刻具有同样的值、都是最新的数据副本,一致性保证了不管向哪台服务器写入数据,其他的服务器能实时同步数据 强一致性:写入数据的时…

【Java基础知识系列】之Java类的初始化顺序

前言 类的初始化顺序 简单场景 代码示例 public class Person {private String name initName();private String initName() {System.out.println("【父类】初始化实例变量name");return "【父类】史蒂夫";}private int age;private static int staticVa…

探索大规模语言模型(LLM)在心理健康护理领域中的应用与潜力

概述 心理健康是公共卫生最重要的领域之一。根据美国国家精神卫生研究所(NIMH)的数据,到 2021 年,22.8% 的美国成年人将患上某种形式的精神疾病。在全球范围内,精神疾病占非致命性疾病负担的 30%,并被世界…

解决 idea windows 设置maven离线模式之后,maven继续请求远程仓库

在内网开发的时候经常遇到没有办法来链接远程仓库的情况,这个时候需要设置maven的离线模式。 idea windows 设置maven离线模式之后,maven继续请求远程仓库 当设置完离线模式之后,有的时候执行maven的命令会报错,提示请求远程失败…

卷积神经网络 (CNN)

代码功能 网络结构: 卷积层: 两个卷积层,每个卷积层后接 ReLU 激活函数。 最大池化层用于降低维度。 全连接层: 使用一个隐藏层(128 个神经元)和一个输出层(10 类分类任务)。 数据集…

等保二级需要哪些安全设备?

在信息化高速发展的今天,服务器的安全性成为了企业乃至国家信息安全的重要基石。等保二级,作为信息安全等级保护制度中的一个关键环节,对服务器的安全防护提出了明确要求。本文将详细阐述服务器等保二级所需的各种安全设备,旨在为…

C++【深入项目-检测键盘】

神马是检测键盘,就是让编辑器可以检测键盘按下了什么按键,我们先科普复习检测键盘 。 检测键盘需要用到一些函数,请见下: ! KEY_DOWN( 80 ) 这个代码是检测按下键盘上P按键。那80是什么?原来是对应按键的&#xff0…

问题An object named ‘ResNetArcFace‘ was already registered in ‘arch‘ registry!

在安装 GFPGAN 的时候,一切都顺利,但是执行的时候出现了错误,哦还有一个问题, 问题一 就是如果basicsr安装不成功可以执行如下命令 pip install -i https://mirrors.aliyun.com/pypi/simple tb-nightly pip install -i https:/…