量子退火算法入门(7):如何QUBO中的三次多项式怎么转换?

news2024/11/16 21:30:28

文章目录

  • 前言
  • 一、三次多项式的例题
  • 二、Python实现
    • 1.引入库
  • 总结


前言

本文还是大部分截图来自于:《最適化問題とWildqatを用いた量子アニーリング計算入門》 https://booth.pm/ja/items/1415833

终于有人问到怎么将QUBO中的三次多项式转换为二次多项式了。直接以一个例题开始讲解。中间会用到之前文章里的知识,大家最好读了该系列前两篇之后,再阅读此文。


一、三次多项式的例题

问题:通过量子退火算法求解令下面 H H H最小化的 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3值。
在这里插入图片描述

下面讲解如何导出对应的QUBO矩阵。

Step1. 变量替换。

首先,把两个变量的乘积用一个变量替代,这里用 x 4 x_4 x4替代 x 2 x 3 x_2x_3 x2x3

在这里插入图片描述
因为我们使用了上面的变量替换,所以我们要满足以下约束:
在这里插入图片描述

Step2. 加入约束项。

上面的约束对应的约束项 H ′ H' H如下👇,由 x 2 , x 3 , x 4 x_2,x_3,x_4 x2,x3,x4能构成的二次多项式构成。
在这里插入图片描述
这里补充一句,在本系列第二篇中,直接给大家列出了常见约束的H表达式,这次我们需要手动推导。大家从头到尾,要谨记一句话:

【我们最终的目标是令目标 H H H最小化的同时,满足约束。所以,约束 H ′ H' H代入令目标 H H H最小化的变量 x 2 , x 3 , x 4 x_2,x_3,x_4 x2,x3,x4具体值时,也是最小化的。】

于是,接下来所有的变换都是为了寻找 H ′ H' H的适当的系数(a, b, c, d, e, f)。本系列第二篇中每个常见约束的求解,都经历了寻找对应系数的过程。

Step3. 寻找合适的约束项系数。

我们可以这么想,通过合适的系数(a, b, c, d, e, f),使得 x 2 , x 3 , x 4 x_2,x_3,x_4 x2,x3,x4满足式(2)时,令 H ′ = 0 H'=0 H=0;不满足式(2)时, H ′ > 0 H'>0 H>0。那就这么约定了。

  1. x 2 x 3 = x 4 x_2x_3=x_4 x2x3=x4时,如我们约定好的,令 H ′ = 0 H'=0 H=0,整理如下表:
    在这里插入图片描述
    这时,上表中的 x 2 , x 3 , x 4 x_2,x_3,x_4 x2,x3,x4按行代入式(4)后,对应的只包含系数(a, b, c, d, e, f)的等式如下:

在这里插入图片描述

  1. x 2 x 3 ≠ x 4 x_2x_3≠x_4 x2x3=x4时,如我们约定好的,令 H ′ > 0 H'>0 H>0,整理入下表:
    在这里插入图片描述
    这个时候, ( k 1 , k 2 , k 3 , k 4 ) (k_1,k_2,k_3,k_4) k1,k2,k3,k4都是比0大的常量。在a=b=0的前提下,把上表中的所有指按行代入式(4)后,得到等式如下:

在这里插入图片描述
接下来,我们要寻找合适的 ( k 1 , k 2 , k 3 , k 4 ) (k_1,k_2,k_3,k_4) k1,k2,k3,k4,比如下面的两组赋值都不行❌。
在这里插入图片描述
于是我们找了很久,终于发现 ( k 1 , k 2 , k 3 , k 4 ) (k_1,k_2,k_3,k_4) k1,k2,k3,k4如下👇取值时,满足约束。
在这里插入图片描述

Step4. 获得确定系数的约束项 H ′ H' H

把已经确定的(a, b, c, d, e, f)和 ( k 1 , k 2 , k 3 , k 4 ) (k_1,k_2,k_3,k_4) k1,k2,k3,k4代入式(4)就行了。得到最终的 H ′ H' H如下:

在这里插入图片描述
Step5. 获得最终的二次多项式 H H H

这里就不必多说了,别忘了还有个 λ \lambda λ 系数,需要手动指定。
在这里插入图片描述
我们把 λ \lambda λ =1,代入上式,得到下面最终的QUBO矩阵。
在这里插入图片描述

二、Python实现

1.引入库

import wildqat as wq
import numpy as np

H_A = np.array([
	[1,0,0,-1],
	[0,0,0,0],
	[0,0,0,0],
	[0,0,0,0]])
H_A = np.array([
	[0,0,0,0],
	[0,0,1,-2],
	[0,0,0,-2],
	[0,0,0,3]])
k, l = 1, 1

a = wq.opt()
a.qubo = k * H_A + l * H_B

for i in range(5):
	print("x = {}".format(a.sa()))
	print("H = {}".format(a.E(-1)))

结果打印如下,有兴趣的可以看看,取值是否满足约束。
在这里插入图片描述

总结

提示:写的比较匆忙,可能有很多错误,大家发现了留言告诉我:

还是挺麻烦的,不过不难理解,是可以写程序自动化的,这也是为什么我们需要pyqubo这中自动化转换QUBO的程序。

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

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

相关文章

购物车--购物车模块完善

很明显,之前的购物车模块功能的实现不够完善,缺少一个删除购物车中产品的操作,针对此我们加一个删除功能。 1、写负责删除的servelt类 2、然后我们给购物车页面的jsp添加超链接传递目标id 搞定。

王道计组(23版)1_计算机系统概述

1.计算机发展历程 硬件的发展: 电子管、晶体管、中小规模集成电路、超大规模集成电路 摩尔定律: 价格不变时,每18个月,集成电路可容纳的晶体管数量和性能增加一倍 微型计算机的发展以微处理器技术为标志 计算机体系结构&#xf…

u盘里的文件被自动删除了怎么办?五种数据恢复方案

u盘是我们日常生活中常常用到的一种便携式存储设备,可以帮助我们存储和携带大量的文件信息。但是,使用过程中难免会遇到一些问题,例如u盘会自己删除文件的情况,如果你遇到了这种情况,该怎样找回u盘自己删除的文件呢&am…

程序猿眼中的协议:TCP / IP 五层网络模型

哈喽,大家好~我是你们的老朋友: 保护小周ღ,本期为大家带来的是 网络基础原理中的 TCP / IP 五层网络模型,主要从协议的概念,网络模型,数据分层传输的流程,几个方面讲解,看完之后可以…

jdk-FuteureForkJoin框架源码学习

背景 日常的计算任务大部分都是串行来执行,但是如果一个复杂的任务需要进行拆分为多个小任务,那么以往是自行写一个递归或者循环计算等算法来实现,随着这类需求的提升,java7中引入了ForkJoin框架来支持这类计算,可以比…

计算机组成原理——第六章总线

误逐世间乐,颇穷理乱情 文章目录 前言6.1.1 总线概述6.1.2 总线的性能指标6.2 总线仲裁(408不考)6.3 总线操作和定时 前言 本章在概述部分我们会首先介绍一下总线的基本概念,介绍一下总线的分类以及经典结构,介绍一些性能指标来评价总线的性…

部分面试题记录

Spring相关: 1. spring框架中的单例bean是线程安全的嘛? 1.1 bean单例多例配置: bean可以手动设置单例或者多例: Service Scope("singleton") public class UserServicelmpl implements UserService { }singleton:b…

QT学习笔记4

一.UI的使用 ui代码输入: ui->setupUi(this);ui->statusbar->showMessage("作者",3000); 在ui类中调用 二.对话框QDialong 模态对话框:就是会阻塞同一应用程序中其它窗口的输入 非模态对话框:不会堵塞同一应用程序中其…

Python反序列化漏洞及魔术方法详细全解(链构造、自动审计工具bandit)

目录 一、Python序列化反序列化相关函数 二、Python魔术方法 三、魔术方法实例详解 <__reduce__> <__setstate__> <__getstate__> 四、反序列化安全漏洞的产生 五、真题实例 六、CTF-CISCN华北-JWT&反序列化 七、代码审计自动化工具——bandit …

理解unsafe-assume-no-moving-gc包

1. 背景 在之前的《Go与神经网络&#xff1a;张量计算》[1]一文中&#xff0c;不知道大家是否发现了&#xff0c;所有例子代码执行时&#xff0c;前面都加了一个环境变量ASSUME_NO_MOVING_GC_UNSAFE_RISK_IT_WITH&#xff0c;就像下面这样&#xff1a; $ASSUME_NO_MOVING_GC_UN…

单片机--第六章中断系统例子学习

单片机--第六章中断系统例子学习 例6-2 P0口连上8个LED&#xff0c; 13引脚&#xff08;INT0&#xff09;上接了一个按钮&#xff0c;要求每次按钮均能改变LED的亮灭 代码&#xff1a; #include<reg51.h> #define LED P0sbit KEYP3^3; bit flag0;//延时函数 void dela…

Linux学习笔记——网络基础

文章目录 计算机网络发展过程独立模式网络互联局域网LAN广域网WAN 计算机网络协议的概念网络协议协议分层OSI七层模型TCP/IP五层(或四层)模型网络传输基本流程数据包封装和分用各层间通信IP地址MAC地址端口 计算机网络发展过程 独立模式 计算机之间相互独立; 网络互联 多台计…

Docker笔记3 | 在Ubuntu下安装Docker

3 | 在Ubuntu下安装Docker 1 支持环境2 卸载旧的docker3 安装Docker3.1 添加HTTPS 传输的软件包以及 CA 证书3.2 添加软件源的 GPG 密钥3.3 添加 Docker 软件源3.4 安装Docker3.5 自动安装 4 Docker启动和验证是否安装ok4.1 启动Docker4.2 docker 用户组建立4.3 验证docker 1 支…

Shell在日常工作中的应用实践

作者&#xff1a;京东物流 李光新 1 Shell可以帮我们做什么 作为一名测试开发工程师&#xff0c;在与linux服务器交互过程中&#xff0c;大都遇到过以下这些问题&#xff1a; •一次申请多台服务器&#xff0c;多台服务器需要安装相同软件&#xff0c;配置相同的环境&#x…

Redis复制详解

Redis复制&#xff08;replica&#xff09; 前言 redis复制是什么&#xff1f; 就是主从复制&#xff0c;master以写为主&#xff0c;slave以读为主&#xff0c;当master数据发生变化时&#xff0c;自动将新的数据异步同步到其他slave数据库。 redis复制能做什么&#xff1f…

算法篇——字符串大集合(js版)

344.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 链接&#xff1a;https://leetcode.cn/problems/r…

SWCF QA集锦待查收 (车联网与V2X、自动驾驶、5G毫米波、射频测试、频谱监测与规划等)

感谢大家的观看与支持&#xff01;我们为大家整理了本次发布会中的演讲资料&#xff0c;汇总了直播过程中的热点问题并请讲师进行了详细解答&#xff0c;在此整理分享给大家&#xff01; 演讲Q&A Q&#xff1a;目前5G天线支持最大的MIMO是多少&#xff1f; A&#xff1a;…

为什么会是植物神经紊乱 如何辨别

很多人都认为&#xff0c;疾病一定能通过仪器检查出来&#xff0c;很多时候去医院检查的时候&#xff0c;大多都需要进行各种的仪器检查&#xff0c;但是当仪器都检查不出来的时候&#xff0c;大家就认为没有生病。其实&#xff0c;当出现浑身不适的时候&#xff0c;检查检查不…

LeNet网络简介

1. 背景 主要介绍LeNet网络预测在CIFAR-10图像数据集上的训练及预测。 2. CIFAR-10图像数据集简介 CIFAR-10是一个包含了6W张32*32像素的三通道彩色图像数据集&#xff0c;图像划分为10大类&#xff0c;每个类别包含了6K张图像。其中训练集5W张&#xff0c;测试集1W张。 数…

window环境rabbitMq安装

RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写&#xff0c;即需要先安装部署Erlang环境再安装RabbitMQ环境*需加注意的是&#xff0c;可根据两者版本号的对应表&#xff0c;安装相应版本的Erlang和RabbitMQ。 一、安装准备工具 版本查看地址&#xff1a;Rabbi…