简单描述:算法导论中动态规划章算法的简单实现。
一、装配线调度:
1、最优解描述:opt(i,j)=重起始节点到第i条路线第j站的最快时间。
2、最优子结构:opt(1,j)=min(opt(1,j-1),opt(2,j-1)+e(2,j-1) )+a(1,j);
opt(2,j)=min(opt(2,j-1),opt(1,j-1)+e(1,j-1) )+a(2,j);
证明:略
3、至底向上求解:按j的递增顺序求解
4、构造元问题的解:
1、最快时间:min(opt(1,N)+end1,opt(2,N)+end2);
2、路线 :没有写。
二、矩阵链乘:
1、最优解描述:opt(i,j)=<Ai,...Aj>加全括号的最优方安。
2、最优子结构:opt(i,j)=min{opt(i,k)+opt(k+1,j)+AI的行*Ak的列*Aj的列},其中k属于【i,j-1】
证明:略
3、至底向上求解:gap=j-i,按gap的递增顺序求解。
4、构造原问题的解:
1、最少乘法次数:opt(0,N-1);
2、加括号的方安:没有写。
三、最长公共子序列
1、最优解描述:opt(i,j)=序列<x1,x2...xi>与序列<y1,y2,y3...yj>的最长公共子序列。
2、最优子结构:opt(i,j)=pot(i-1,j-1)+1 如果序列1中第i个元素等于序列2中第j个元素;
opt(i,j)=max(opt(i-1,j),opt(i,j-1) ) 其他。
3、至底向上求解:按i、j的递增顺序求解。
4、构造原问题的解:
1、最长公共子序列长度:opt [序列1的长度][序列2的长度];
2、其中一条最长公共子序列:看原码
原码见:https://github.com/erliang/algorithms