A1 ( 3, 1) = min{A 0( 3 ,1) , A 0( 3 ,1) +A 0( 1 ,1) }= 3
A1 ( 3, 2) = min{A 0( 3 ,2) , A 0( 3, 1) +A 0( 1 ,3) }= 3+4=7
Pr()是推导出最小成本路径的子函数:
pr() { int link; link=1; printf("1 ");
都是优化的,但最后结果不一定是最优的,则不能使用动 态规划方法。
优化问题给出约束条件和目标函数。所谓优化就是使
目标函数在给定的约束条件下达到最大或最小值。用动态 规划求解问题的步骤是:
1.将问题分解成若平个子问题,即将整个问题的最优 解与子问题的局部最优解用递推的等式联系起来。 2.找到边界条件。 3.将边界条件代入递推等式,逐步求得最优解。
main() { int b,z,e,f,k,m;
for (i=1;i<=12;i++) c[i]=0; v[1]=1;v[2]=4;v[3]=3;v[4]=3;v[5]=1;z=12;b=4; do { for (k=v[b];k>=1;k--) { e=z-k; m=99;
for (j=1;j<=v[b+1];j++) { f=z-1+j; if (g[e][f]==0) continue; if (g[e][f]+c[f]<m) {m=g[e][f]+c[f]; d[e]=f; } } c[e]=m; printf("e=%d c[e]=%d\n",e,c[e]);
printf("-%2d ",link); } printf("\n"); }