算法设计与分析课程复习笔记7——动态规划

算法设计与分析课程复习笔记7——动态规划

动态规划

  • 和分治法一样,是一种算法设计技术。
  • 子问题非独立。
  • 分治法通过递归方式解决性质相同的子问题,
    而动态规划每次解决一个子问题,并将结果存储在表格中。
  • 用于优化类问题。

算法:

  1. 描述最优解的结构特征
  2. 定义最优解决方案的递归形式
  3. 以自底向上的方式计算最优解决方案的值
  4. 从计算信息构造出最优解决方案

装配线排程

装配线排程
S1,1,S1,2,……,S1,n;S2,1,S2,2,……,S2,nS_{1,1},S_{1,2},……,S_{1,n};S_{2,1},S_{2,2},……,S_{2,n}S1,1,S1,2,,S1,nS2,1,S2,2,,S2,n为两条装配线的工序站台
a1,1,a1,2,……,a1,n;a2,1,a2,2,……,a2,na_{1,1},a_{1,2},……,a_{1,n};a_{2,1},a_{2,2},……,a_{2,n}a1,1,a1,2,,a1,na2,1,a2,2,,a2,n为两条装配线的各站台工作时间
每条装配线的第j个站台的功能相同,但是效率不一致,即花费时间不同。
另外有上线时间e1,e2e_1,e_2e1,e2和下线时间x1,x2x_1,x_2x1,x2
以及从一条装配线变换到另一条装配线需要的时间t1,1,t1,2,……,t1,n−1;t2,1,t2,2,……,t2,n−1t_{1,1},t_{1,2},……,t_{1,n-1};t_{2,1},t_{2,2},……,t_{2,n-1}t1,1,t1,2,,t1,n1t2,1,t2,2,,t2,n1

问题:如何充分利用两条装配线,使得组装一辆汽车的时间最短?

解决方法:
1️⃣蛮力法
计算装配线排程所有可能的组合情况,比较并选择出最短时间的组合
2️⃣动态规划
【1】.构建最优解
考虑所有从起点到达S1,jS_{1,j}S1,j可能途径
只有两种可能:
①从S1,j−1S_{1,j-1}S1,j1直接到S1,jS_{1,j}S1,j
②从S2,j−1S_{2,j-1}S2,j1花费t2,j−1t_{2,j-1}t2,j1时间转换到S1,jS_{1,j}S1,j
构建最优解
如果到达S1,jS_{1,j}S1,j的最快装配路线来自S1,j−1S_{1,j-1}S1,j1那么必须是从装配线起点经过S1,j−1S_{1,j-1}S1,j1的最快装配路线。S2,j−1S_{2,j-1}S2,j1同理分析。

最优解的结构
寻求从起点到达S1,jS_{1,j}S1,j最快装配路线,可分解为寻求从起点经过S1,j−1S_{1,j-1}S1,j1 or S2,j−1S_{2,j-1}S2,j1 最快装配路线问题。
我们将这种具有分解递归特征的解的形式称为最优化结构特征
利用这种优化构造特征,从子问题的最优化解获得整个问题的最优化的解。

【2】.递归解
利用子问题的最优解,通过递归的方式求解原问题的最优解
f∗f*f为完成所有装配过程的最短时间。
fi[j]f_i[j]fi[j]表示从起点经过Si,j工序的最短时间.

f∗=min(f1[n]+x1,f2[n]+x2)f* = min (f_1[n] + x_1, f_2[n] + x_2)f=min(f1[n]+x1,f2[n]+x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值