2013-04-07 121 views
0

我在想,如果你可能有一些洞察到一个问题,我们考虑的优化问题:动态规划方法

最大Σ从j = 1到FJ(XJ)正使得Σj = 1至XJ正< = B

XJ> = 0,整数

其中B是正整数和fj是真实实际

我试图使用动态编程配制的溶液,并找出这种方法的时间复杂度。

林有点困惑的动态规划方法,你将如何实现它的功能,例如F1(X)=开方如果n = 5,B = 10

亲切的问候

+0

什么是你发现的最大结束了吗? X [j]的? – 2013-04-07 16:11:58

+0

可能是http://math.stackexchange.com/问题 – 2013-04-07 16:16:11

+0

我找到Σf(x)的最大值,其中j从1到n – user87545 2013-04-07 16:20:49

回答

0
(X)

您的问题是解决

max(g(n,s) for s=0 to B) 

其中ssum(x[i] for i = 1 to j)

其中g可以递归表示为

g(0,s) = 0 
g(j,s) = max(g(j-1,s-x[j])) + f[j](x[j]) for x[j]=0 to s) 

这可以有效地通过计算g作为表来解决:

g(0,s) = 0 
g(1,s) = max(g(0,s-x1) + f1(x1) for x1=0 to s) 
g(2,s) = max(g(1,s-x2) + f2(x2) for x2=0 to s) 
etc. 
+0

谢谢,我确定你是对,虽然......可以理解,但是......这是什么状态和递归表达呢?是时间复杂度O(nB)? – user87545 2013-04-07 17:58:22

+0

在阅读了这个更接近我相信我们正从功能选择中最大化的时候,它们有n个,但是之后给出了5个,f1(x)= squrt(x),f2(x)= log x + 1),f3(x)= x(20-x)/ 25,f4(x)= x/2和f5(x)= 4(1-e ^( - x/5)你提供的仍然是正确的还是我需要重新配置它? – user87545 2013-04-07 18:09:13

+0

@ user87545:好的,你原来的问题被说成好像每个x [j]都有一个不同的f [j],但是好像你试图找到最好的f,所以我就这样设置它。 – 2013-04-07 18:15:25