量子计算“揭秘”之背包问题与Ising建模

graphite
2024-08-24 10:04:44
运筹优化
算法解析





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




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


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


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


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


问题描述


背包问题是基本的组合优化问题,我们引入这个背包问题的二次版本进行分析,二次指物品之间的选择关系会影响物品的价值取值,即二次背包问题(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)。


(6)


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



 


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


(8)


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



参考资料:


[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



 


 



1377
0
0
0
关于作者
相关文章
  • AI设计RNA开关新突破:受限玻尔兹曼机让人工分子“听懂”代谢物 ...
    多国联合团队2025年在 Nature Communications 发表的《 Designing molecular RNA switches with ...
    了解详情 
  • 清华团队用反绎 AI 破解复杂系统 “涌现”,成果登《自然・物理 ...
    清华联合 MIT、牛津等机构的研究《 Understanding emergence in complex systems using abductiv ...
    了解详情 
  • 分解三向RBM:解锁自然图像特征,CIFAR-10识别率达65.3% ...
    多伦多大学团队在第 13 届国际人工智能与统计会议(AISTATS 2010)发表《Factored 3-Way Restric ...
    了解详情 
  • Transformer + 贝叶斯优化的时间序列预测与调优
    本文结合 Transformer 和贝叶斯优化方法,用于时间序列数据的预测与超参数调优。Transformer 模 ...
    了解详情 
  • 动态对接与能量引导:药物设计中的自由能新范式 ...
    自由能计算是量化药物与靶标结合亲和力的关键工具。结合自由能反映了配体与受体结合时体系能量的 ...
    了解详情 
联系我们
二维码
在本版发帖返回顶部
快速回复 返回顶部 返回列表
玻色有奖小调研
填写问卷,将免费赠送您5个100bit真机配额
(单选) 您是从哪个渠道得知我们的?*
您是从哪个社交媒体得知我们的?*
您是通过哪个学校的校园宣讲得知我们的呢?
取消

提交成功

真机配额已发放到您的账户,可前往【云平台】查看

量子AI开发者认证

考核目标

开发者能够成功搭建Kaiwu-PyTorch-Plugin项目基础环境,并成功运行示例代码,根据示例提示,输出指定的值并填写至相应的输入框中。

通过奖励

5个一年效期的1000量子比特真机配额

专属「量子AI开发者」社区认证标识

开发者权益

每月固定权益:5个550量子比特真机配额
前往考核

第一步

按照README提示成功安装Kaiwu-PyTorch-Plugin库环境依赖
前往GitHub

第二步

运行 community-assessment 分支下的 run_rbm.py 代码示例

第三步

理解示例代码,手动打印并填写如下数值:

正相采样的状态

负相采样的状态

正相的能量值

负相的能量值

*

提交答案

开发者权益

每月固定权益:5个550量子比特的真机配额

恭喜您完成考核

您将获得量子AI开发者认证标识及考核奖励

1000 bit*5

配额

Quantum AI Developer Certification

Assessment Objectives

Developers should successfully set up the basic environment for the Kaiwu-PyTorch-Plugin project, run the QBM-VAE sample code, and calculate the correct FID value based on the random seed value provided by the system.

Pass Rewards

10 quotas for 550-qubit real quantum machines with a one-year validity period

Exclusive "Quantum AI Developer" Community Certification Badge

Developer Benefits

Fixed Monthly Benefits: 5 quotas for 550-qubit real quantum machines
Proceed to Assessment

Step 1

Install the environment dependencies for the Kaiwu-PyTorch-Plugin library according to the README instructions
Go to GitHub

Step 2

Replace the Seed Value

Your seed value is

Step 3

Enter the FID Value You Calculated

*

Submit Answer

Developer Benefits

Fixed Monthly Benefits: 5 quotas of 550-qubit real machines

Congratulations on Completing the Assessment

You will receive the Quantum AI Developer Certification Badge and Assessment Rewards

550bit*10

Quotas