算法导论 动态规划
FASTEST-WAY(a, t, e, x, n)
3 for j ← 2 to n
4 do if f1[j - 1] + a1,j ≤ f2[j - 1] + t2,j-1 + a1,j 如果想把当前任务在line1解决,则要看前一节点是在line1上还是line2上,计算二者的花费,取较小者
5 then f1[j] ← f1[j - 1] + a1, j
7 else f1[j] ← f2[j - 1] + t2,j-1 + a1,j
9 if f2[j - 1] + a2,j ≤ f1[j - 1] + t1,j-1 + a2,j 如果在line2解决,与line1情况同理。
10 then f2[j] ← f2[j - 1] + a2,j
12 else f2[j] ∞ f1[j - 1] + t1,j-1 + a2,j
14 if f1[n] + x1 ≤ f2[n] + x2
15 then f* = f1[n] + x1
17 else f* = f2[n] + x2
首先说明一下f1,f2,l1,l2数组的作用。f1[i]中存储的是从起点到line1上的第i个节点的最短距离。同样,f2[i]中存储的是从起点到line2上的第i个节点的最短距离。每次循环进行两对数据的共两次比较。最后根据数组l[i],由后向前,确定最佳路线,或者叫做最佳选择。
后面的几节没细看,暂时不总结了。