动态规划python实现,动态规划算法程序

  动态规划python实现,动态规划算法程序

  使用过程

  1.获取相应的信息。

  (商品数量、背包体积、每件商品的体积和价值)

  2.结构的最优值矩阵。

  3.初始化最优值矩阵

  (左右两边有空白矩阵供后续操作,但没有结果)

  4.根据商品之间的最佳价值公式计算出相应的结果。

  5.逆向导出矩阵得到一个商品,否则不装。

  输出结果。

  实例

  打印(请输入要装载的物品数量和背包体积(用空格分隔): )

  n,v=map(int,input()。split())#获取物品数量和背包体积

  商品=[]#初始化商品清单

  第:号

  打印(f 请输入第{i 1}项的重量和值(用空格分隔): )

  Goods.append (list (map (int,input()。split ())) #获取商品信息

  #计算最佳值矩阵

  DP=[[0 foriinrange(v1)]forjinrange(n1)]#初始化最优值矩阵

  foriinrange(1,n 1):

  forjinrange(1,v 1):

  Dp[i][j]=dp[i-1][j]#默认不安装,即等于之前的最优值。

  ifj=goods[i-1][0]:

  #如果背包里还有足够的空间

  dp[i][j]=max(dp[i][j],dp[i-1][j-goods[i-1][0])

  货物[i-1][1])#比较装卸值,选择较大值。

  #输出最佳值矩阵

  对于iindp:

  打印(一)

  #计算最佳解决方案

  X=[0foriinrange(n 1)]#初始化项目的状态,0:未加载,1:已加载。

  foriinrange(n,0,-1):

  Ifdp[i][v]==dp[i-1][v]:#,判断最优值是否发生了变化。如果没有变化,说明没有安装。

  X[i]=0#未安装

  Else:#如有变化,说明安装好了,减去相应重量。

  X[i]=1包

  v-=货物[i-1][0]#减去相应的重量

  x[n]=1ifdp[n][v]!=0else0#判断最后一项是否加载。

  #输出最佳解决方案

  打印(背包里要装的物品是:)

  foriinrange(1,n 1):

  print(f number:{ str(I)} t weight:{ goods[I-1][0]} t value:{ goods[I-1][1]} n ifx[I]==1 else ,end= )

  #输出最佳值

  Print(该项的值为: ,dp[-1][-1])。以上是使用python的动态规划算法的过程。希望对你有帮助。更多python学习方向:Python基础课程

  本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: