动态规划:选择原料工厂

这是一个关于如何使用动态规划解决选择3个原料工厂,使剩余工厂到最近工厂距离之和最小的问题。首先理解问题本质是寻找12个点在一维坐标轴上的最佳3点选择,接着解释了选择中位数作为单个工厂的优势。然后,通过定义A[i][j]和B[i][j]的状态转移方程,展示了动态规划的解决方案,其中A[i][j]表示前i个工厂选择j个工厂的最短距离,B[i][j]表示从第i到第j个工厂选择一个工厂的最短距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

12个工厂分布在一条东西向高速公路的两侧,工厂距离公路最西端的距离分别是0、4、5、10、12、18、27、30、31、38、39、47,在这12个工厂中选取3个原料供应厂,使得剩余工厂到最近的原料供应厂距离之和最短,问应该选哪三个厂?


1、本题实际上可以抽象为:有12个点分布在一维坐标轴上,选择3个点,使得剩余的点到最近的点的距离之和最小。

2、假设在12个工厂中选择1个工厂,应该怎么选?我们应该选择中位数位置的工厂,这样可以使之距离最近。

3、下面我们尝试着使用动态规划的算法:

设A[i][j]表示前i个工厂选择j个原料工厂的最短距离,B[i][j]表示从第i个工厂到第j个工厂选择一个原料工厂的最短距离

A[i][j]:1<=j<=i<=n  (n表示工厂的总数,下同)

B[i][j]:1<=i<=j<=n 

定义了上面的概念,我们就可以进行如下的动态规划,从前i个工厂选择j个原料厂,可分为两部分:

(1)从前k个工厂选择j-1个原料厂

(2)从第k+1个工厂到第i个工厂选择1个原料工厂

它们满足的条件分别是:1<=j-1<=k<i,k+1<=i

化简为:2<=j<=i,j-1<=k<i

根据上面的分析

A[i][j]=B[1][i],当j=1

A[i][j]=min{ A[k][j-1]+B[k+1][i] },当2<=j<=i,j-1<=k<i


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值