玻色量子“揭秘”之背包问题与Ising建模

news2024/11/17 11:40:49

摘要:背包问题(Knapsack problem)是一种组合优化的NP-Complete问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。

背包问题早期的研究可追溯到1897年,数学家托比亚斯·丹齐格(Tobias Dantzig,1884-1956)提出如何包装最有价值或有用的物品而不会超载行李的问题。使用传统的计算机算法来解决这个问题时,解决问题所需的时间随着问题规模变大将呈指数级增长。

因此,对于大规模的问题,需要使用更高效的算法、近似算法或其他有效的工具来解决。背包算法一般提法是:一位旅行者携带背包去登山,已知他所能承受的背包重量限度为akg,现有n种物品可供他选择装入背包,第i种物品的单件重量为aikg,其价值(可以是表明本物品对登山的重要性的数量指标)是携带数量xi的函数ci(xi)(i=1,2,...,n),问旅行者应如何选择携带各种物品的件数,以使总价值最大。相似问题经常出现在商业、组合数学,项目选择,资本预算,计算复杂性理论、密码学和应用数学等领域中。

目前,许多背包问题的理论研究已经广泛应用在现实生活中,帮助大量面向应用程序的研究人员与从业者寻找更好、更快的解决方案来解决巨大的问题。通常,背包问题是更复杂的组合问题的子问题的优化问题,大多数需要选择某些给定的子集来获得利润总额最大化的项目,而分配的总重量不超过背包的容量。

背包问题在现实生活中的应用包括财务建模、生产和库存管理系统、分层抽样、制造中的排队网络模型设计以及制造中的流量过载控制电信系统。其他应用领域包括产量管理、航空公司、酒店和租赁机构、大学招生、质量适应和交互式多媒体系统的准入控制、货物装载、资本预算、削减库存问题,以及巨大的分布式计算机处理分配系统。

北京玻色量子科技有限公司在5月16日新品发布会上推出的100计算量子比特相干光量子计算机真机——“天工量子大脑”🔗,旨在快速、高效地求解NP-hard的Ising模型。背包问题可以转化为一个Ising/QUBO模型“天工量子大脑”可以极大简化求解步骤并在毫秒级的时间内给出问题的全局最优解。

问题描述

背包问题是基本的组合优化问题,我们引入这个背包问题的二次版本进行分析,二次指物品之间的选择关系会影响物品的价值取值,即二次背包问题(Quadratic Knapsack Problem),该问题是经典的NP-Hard问题之一。

建模思路

首先给出二次背包问题的混合整数规划模型

其中xj表示是否选择物品j,xj=1表示选择,否则表示不选择,vij是物品i,j的交互价值,aj为物品j的体积,b为背包的容量限制。我们引入惩罚系数P和m+1个0/1松弛变量yk,k∈{0,...,m}将模型转写为QUBO模型。

首先将不等式约束配平得到式(2)

将式(2)平方后乘上惩罚系数即可以转为无约束的表达,得到式(3),即该问题的QUBO模型

我们用下面的例子来进一步分析。

其中式(5)为不等式约束,举例而言,如不等式a-b<0可以通过引入辅助变量c转化为等式a-b+c=0,c>0,其中c也叫做松弛变量,我们引入辅助松弛0/1变量x5,x6来配平式(5)。

因此,我们得到QUBO模型为:

我们取P=10,同时根据x2=x(x为0/1变量)的特性,我们可以化简式子,舍去常数项2560后,我们得到QUBO模型的矩阵表达:

  其中Q矩阵为:

求解这个QUBO模型,我们可以得到最优解

x1=x3=x4=1,x2=x5=x6=0,y=-2588。

问题拓展

背包问题是经典的NP-hard问题,在数学、计算机科学、物理学等领域都有应用。该问题有多个扩展和变种,其中一些常见的包括:

多重背包问题(Multiple Knapsack Problem):在多重背包问题中,每种物品有多个可用的副本,而不仅仅是一个。每个物品的数量限制可能不同,目标是选择物品的副本来最大化总价值。

无界背包问题(Unbounded Knapsack Problem):在无界背包问题中,每种物品有无限多个可用的副本。目标是选择物品的副本来最大化总价值。

分数背包问题(Fractional Knapsack Problem):在分数背包问题中,物品可以被分割成任意比例,可以选择部分物品放入背包中。目标是选择物品的比例来最大化总价值。

有约束背包问题(Constrained Knapsack Problem):在有约束背包问题中,除了背包容量限制外,还存在其他约束条件,如物品之间的依赖关系、物品的数量限制等。目标是在满足所有约束条件的前提下,选择物品来最大化总价值。

未来,玻色量子将依托100计算量子比特相干光量子计算机真机——“天工量子大脑”,聚焦“实用化量子计算”,不断深入研究更多NP-Complete问题,拓展更多可实用化量子计算的真实应用场景。

玻色量子还将启动“燎原计划”开发者平台,并持续对外开放“天工量子大脑”的真机测试,热忱欢迎更多不同领域的研究伙伴前来了解相干量子计算的原理和能力,在此基础上展开共同研发,用量子计算去解决更多真实场景中的问题,让量子计算的超强算力能真正服务于各行各业,满足未来时代对于计算的需求。

参考资料

[1] Glover, Fred, Kochenberger, Gary, Du, Yu. Quantum Bridge Analytics I: a tutorial on formulating and using QUBO models[J]. 4OR: Quarterly Journal of the Belgian, French and Italian Operations Research Societies,2019,17(4):335-371. DOI:10.1007/s10288-019-00424-y.

[2] Dantzig T .T. Dantzig.Number; the Language of Science[J].The Economic Journal, 1930(40-160).

[3] https://zh.wikipedia.org/wiki/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98

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

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

相关文章

高清录屏软件推荐,捕捉每一个美好瞬间

在数字媒体和内容创作领域&#xff0c;高清录屏软件已经成为了日常工作与娱乐中不可或缺的一部分。无论是录制游戏视频、制作教育教程&#xff0c;还是记录演示文稿&#xff0c;高清画质能够让您的内容更加生动、吸引人。在本文中&#xff0c;我们将介绍三款不同的高清录屏软件…

微信小程序商城实例mpvue-xbyjShop-master(附精选源码32套,涵盖商城团购等)

mpvue-xbyjShop 基于mpvue的微信小程序商城&#xff08;小程序端&#xff0c;服务端&#xff09; 小程序端 技术栈 mpvue mpvue-router-patch mpvue-entry vuex webpack ES6/7 flyio mpvue-wxparse 项目运行 微信开发中工具选中mpvue-xbyjShop/buyer作为项目目录即可功…

RFID技术在刀具智能管理中的应用

RFID技术在刀具智能管理中的应用 科技日新月异&#xff0c;工业科技的不断提升,慢慢的改变了传统制造业。RFID技术的崛起改变了传统的人工记录数据、盘点物料的方式&#xff0c;带来更高效、错误率低的解决方案。 刀具是生产过程中不可或缺的工具&#xff0c;高效管理和利用刀…

Zabbix-Liunx服务器内存使用率测试

要在Python 2.7中运行内存消耗脚本并安装psutil&#xff0c;您需要先安装pip。以下是完整的步骤&#xff0c;包括如何在Python 2.7环境中安装pip&#xff0c;然后安装psutil&#xff0c;以及最后如何运行内存消耗脚本。 步骤1: 安装pip 在Python 2.7中安装pip&#xff1a; 首先…

rocketMQ5.0顺序消息golang接入

本人理解&#xff0c;顺序消息如果不分消息组&#xff0c;那么会影响并行处理速度&#xff0c;所以尽量消息组分的散一些 首先上要求&#xff0c;官方文档如下&#xff1a; 总结&#xff1a; 1.必须同一个消息组&#xff0c;消息组和消费组不是一个概念&#xff0c;不要混 2.必…

大语言模型概述(二):基于亚马逊云科技的研究分析与实践

上期介绍了大语言模型的定义和发展历史&#xff0c;本期将分析基于亚马逊云科技的大语言模型相关研究方向&#xff0c;以及大语言模型的训练和构建优化。 大语言模型研究方向分析 Amazon Titan 2023 年 4 月&#xff0c;亚马逊云科技宣布推出 Amazon Titan 大语言模型。根据…

Azure Machine Learning - 创建Azure AI搜索服务

目录 准备工作查找 Azure AI 搜索产品/服务选择订阅设置资源组为服务命名选择区域选择层创建服务配置身份验证扩展服务何时添加第二个服务将多个服务添加到订阅 Azure AI 搜索是用于将全文搜索体验添加到自定义应用的 Azure 资源&#xff0c;本文介绍如何创建Azure AI搜索服务 …

ROS知识:卡尔曼滤波

https://en.wikipedia.org/wiki/Kalman_filter 一、提要 在卡尔曼滤波的相关技术文献中,其数学表达看起来都非常晦涩和不透明。这很糟糕,如果您以正确的方式看待卡尔曼滤波器,它实际上非常简单易懂。这里的叙述简单,先决条件也很简单;您所需要的只是对概率和矩阵的基本了解…

数字孪生智慧校园 Web 3D 可视化监测

当今&#xff0c;智慧校园发展阶段亟需推动信息可视化建设与发展&#xff0c;将大数据、云计算、可视化等高新技术相融合&#xff0c;为校园师生创造科学智能的学习环境&#xff0c;并实现教学资源最大化和信息服务智能化。帮助学校更好地应用校园可视化技术&#xff0c;提升校…

java--static修饰成员方法

1.成员方法的分类 ①类方法&#xff1a;有static修饰的成员方法&#xff0c;属于类 ②实例方法&#xff1a;无static修饰的成员方法&#xff0c;属于对象。 2.成员方法的执行原理 解析&#xff1a; 第一行代码&#xff1a;扫描class包名&#xff0c;在方法区生成一个Test.cl…

chatGPT4机器学习数据后最终保留在机器里的是什么? 机器是怎么产生智能的? TensorFlow没有直接开发出类似GPT-4这样的模型

机器学习数据后最终保留在机器里的是机器学习模型。机器学习模型是机器学习系统中的核心&#xff0c;它是机器学习系统能够进行推理和预测的基础。 机器学习模型通常由参数组成。参数是机器学习模型的权重和偏差。机器学习系统通过训练来学习这些参数。训练是指让机器学习系统…

46、Flink 的table api与sql之配项列表及示例

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

opencv-GrabCut 图像分割算法

GrabCut 是一种图像分割算法&#xff0c;通过迭代优化的方式将图像分割为前景和背景。这种算法最初由Carsten Rother、Vladimir Kolmogorov和Andrew Blake于2004年提出。 GrabCut 算法的基本思想是通过用户**提供的一个矩形区域&#xff08;称为"掩模"&#xff09;*…

【C++】:多态

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关多态的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结…

MFC所有控件介绍及基本使用

一、前言 本篇文档介绍了MFC控件的基本使用&#xff0c;同时提供了关于MFC控件使用的工程代码&#xff0c;程序界面如下图&#xff0c;有兴趣的可以到文档最后的链接处进行下载。 二、控件介绍 2.1 Button &#xff08;按钮&#xff09; 2.2 CheckBox&#xff08;复选框&am…

【算法】链表-20231124

这里写目录标题 一、83. 删除排序链表中的重复元素二、206. 反转链表三、234. 回文链表 一、83. 删除排序链表中的重复元素 简单 1.1K 相关企业 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例…

Android相机性能提高50%

文章目录 应用举例&#xff08;可以不看这一part&#xff0c;直接跳过看具体怎么做&#xff09;&#xff1a;Snapchat 通过 Camera2 Extensions API 将新相机功能的集成速度提高了 50%**Camera2 扩展 API 可以访问高级功能更多设备上的更多机会 正文&#xff1a;开始使用扩展架…

甄知燕千云ITAM,您的IT资产管理专家

IT 资产是实现企业持续发展的重要资源之一&#xff0c;也是反观企业数字化转型发展的缩影。通常情况下&#xff0c;IT 资产指组织拥有、租赁或使用的任何信息技术设备和资源&#xff0c;这些设备和资源对组织的业务运行起到支持作用。包括硬件设备&#xff08;如服务器、计算机…

Rust语言入门教程(一) - 简介及Cargo使用

Rust编程入门 为什么学习Rust 我本人是一个DevOps工程师&#xff0c;并不是专职的开发人员&#xff0c;但需要了解各种各样的语言的基本知识和特性&#xff0c;以便在不同的项目中帮助开发人员设计软件架构&#xff0c;部署流程以及进行错误排查和调试。但是对任何新生的优秀…