动态规划解决简单投资问题

1.问题
设 m 元钱,n 项投资,函数 表示将 x 元投入第 i 项项目所产生的效益,i=1,2,…,n.
问:如何分配这 m 元钱,使得投资的总效益最高?
在这里插入图片描述
如给出上图关系表。

2.解析
Fk (x) 表示 x 万元投给前 k 个项目的最大效益,k=1,2,…,n,x=1,2,…,m

递推方程:Fk (x) = max {f k (x k ) + Fk -1 (x x k )},-k 2, 3,…, n
边界条件:F1 (x) = f1 (x), Fk (0) = 0, k = 1, 2,…, n

说明:第 k 步,前后共分配 x 万元。
使用这个地推方程进行计算,这里不对此进行证明。

3.设计
For k = 1, 2, 3,…, n // k 个项目共分配 x 万元
For x= 1,2,3, . . .m // k 个项目共分配 x万元
For x = 0,1, 2, 3,…, x // 第k 个项目分配 Xk万元

实例:
1)F1 (x) ,k=1,只有一个项目
x=1: F1(1) = f1 (1) =11 x1 ( x) = x, x =1,2,3,4,5
x=2: F1 (2) = f1 (2) =12
x=3: F1(3) = f1 (3) =13
x=4: F1 (4) = f1 (4) =14
x=5: F1(5) = f1 (5) =15

2)F2 (x),k=2,有两个项目 l x=1,总共分配 1 万元

x=1, xk =0: f 2 (0) + F1 (1)

x=1, xk =1: f 2 (1) + F1 (0)

F2 (1) = max{f 2 (0) + F1 (1), f 2 (1) + F1 (0)} = max{0 + 11, 0 + 0} = 11

x2 (1) = 0

以此类推

分析
复杂度O(nm^2)

源代码
https://github.com/jiachenwei123/jiajia/blob/master/%E6%8A%95%E8%B5%84%E9%97%AE%E9%A2%98

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值