Algorithm 动态规划装配线调度

Algorithm 动态规划装配线调度,algorithm,dynamic-programming,Algorithm,Dynamic Programming,我正在读Cormen等关于算法的书中关于动态规划的内容。以下是这本书的内容 假设我们有一个汽车工厂,有两条装配线,分别称为1号线和2号线。我们必须确定最快的时间获得底盘的所有方式 最终目标是确定最快的时间获得底盘的所有方式通过工厂,这是我们所表示的Fn。CHASSIS必须一路通过1号线或2号线的n站,然后到达工厂出口。因为这些方法中速度最快的是通过整个工厂的最快的方法,所以我们 Fn = min(f1[n] + x1, f2[n]+x2) ---------------- Eq1 Above

我正在读Cormen等关于算法的书中关于动态规划的内容。以下是这本书的内容

假设我们有一个汽车工厂,有两条装配线,分别称为1号线和2号线。我们必须确定最快的时间获得底盘的所有方式

最终目标是确定最快的时间获得底盘的所有方式通过工厂,这是我们所表示的Fn。CHASSIS必须一路通过1号线或2号线的n站,然后到达工厂出口。因为这些方法中速度最快的是通过整个工厂的最快的方法,所以我们

Fn = min(f1[n] + x1, f2[n]+x2) ---------------- Eq1

Above x1 and x2 final additional time for comming out from line 1 and line 2
我有下面的递推方程。考虑以下是EQ2. < /P>
f1[j]  = e1 + a1,1                                    if j = 1
             min(f1[j-1] + a1,j, f2[j-1] + t2,j-1 + a1,j  if j >= 2

f2[j]  = e2 + a2,1                                    if j = 1
             min(f2[j-1] + a2,j, f1[j-1] + t1,j-1 + a2,j  if j >= 2
设Rij为递归算法中对fi[j]的引用数

从方程R1n=R2n=1

根据上面的方程式2,我们得到

R1(j) = R2(j) = R1(j+1) + R2(j+1)  for j = 1, 2, ...n-1
我的问题是作者是如何得到Rn=1的,因为通常我们的基本情况是0而不是n,这里我们将如何在代码中编写递归函数 例如C代码

另一个问题是作者是如何提出R1j和R2j的


谢谢你的帮助。

如果你用递归的方法解决这个问题,你会怎么做? 你应该开始计算Fn。Fn会递归地调用f1n-1和f2n-1,直到到达叶f10,f20,对吗

这就是递归解中Fn的引用数为1的原因,因为只需要计算一次f1n和f2n。f1n-1不是这样,在计算f1n和f2n时会引用f1n-1

现在,他是如何得出R1j=R2j=R1j+1+R2j+1的? 用递归的方法计算,每次你需要f1i,你必须计算f1j,f2j,对于区间[0,i-AKA]中每一个小于i的j。 换句话说,f1,2i的值取决于f1,20..i-1的值,所以每次计算f_i时,你都在计算每一个f1,21..i-1,因为它取决于它们的值

因此,计算f_i的次数取决于他上面有多少个f1,2


希望这是清楚的。

在上面最后一段的第三行是f1,2i的值取决于f1,20..j的值,也就是说,它应该是j?我说的对吗?不,但应该是f1,21…i-1-编辑答案对不起,我应该更清楚:对于f1i或f2i,这类fi的值取决于f10,f11,f12,…,f1i-1的值,f20,f21,f22,…f2i-1。这只是表示f_i依赖于f1j,f2j的另一种方式,对于区间[0,i-对于小于i的每一个j