动态规划算法分析实验报告.doc

上传人:F****n 文档编号:98642115 上传时间:2019-09-12 格式:DOC 页数:6 大小:124KB
返回 下载 相关 举报
动态规划算法分析实验报告.doc_第1页
第1页 / 共6页
动态规划算法分析实验报告.doc_第2页
第2页 / 共6页
动态规划算法分析实验报告.doc_第3页
第3页 / 共6页
动态规划算法分析实验报告.doc_第4页
第4页 / 共6页
动态规划算法分析实验报告.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《动态规划算法分析实验报告.doc》由会员分享,可在线阅读,更多相关《动态规划算法分析实验报告.doc(6页珍藏版)》请在金锄头文库上搜索。

1、动态规划算法设计一、实验内容编程实现图示多段图的最短路径问题的动态规划算法。(源代码见附录A)12345678111009129732811116535524644211127二、实验目的及环境 实验目的:1、理解动态规划算法的概念; 2、掌握动态规划算法的基本要素;3、掌握设计动态规划算法的步骤; 4、通过应用范例学习动态规划算法的设计技巧与策略。实验环境: WIN7 系统下VC+6.0环境三、 实验分析与设计采用动态规划算法的两个基本要素:最优子结构性质:原问题的最优解包含了其子问题的最优解。子问题的重叠性质:每次产生的子问题并不总是新问题,有些子问题被反复计算多次。实验定义:#defin

2、e n 12 /*定义顶点数*/ #define k 5 /*定义段数*/void init(int cost ) /初始化图void fgraph(int cost ,int path ,int d )向前递推算法求最短路径void bgraph(int bcost ,int path1 ,int d )向后递推算法求最短路径向前递推算法实现: int r,j,temp,min; for(j=0;j=1;j-) temp=0; min=cjtemp+costtemp; /初始化最小值for(r=0;r=n;r+) if(cjr!=MAX) if(cjr+costr)min) /找到最小的r

3、min=cjr+costr; temp=r; costj=cjtemp+costtemp; dj=temp; path1=1; pathk=n; for(j=2;jk;j+) pathj=dpathj-1; 后递推算法与前递推算法类似。四、 实验结果显示五、 实验总结通过理解最优子结构的性质和子问题重叠性质,在VC+6.0环境下实现动态规划算法。动态规划算法是由单阶段的决策最优逐步转化为多阶段的决策最优,最后构造一个最优解。经过反复的调试操作,程序运行才得出结果。六、 附录 A#include #include #include #include #define MAX 100 #define

4、 n 12 #define k 5 int cnn; void init(int cost) int i,j; for(i=0;i13;i+) for(j=0;j13;j+) cij=MAX; c12=9; c13=7;c14=3; c15=2; c26=4; c27=2; c28=1; c36=2; c37=7; c48=11;c57=11;c58=8; c69=6; c610=5; c79=4; c710=3;c810=5;c811=6;c912=4;c1012=2;c1112=5; void fgraph(int cost,int path,int d) int r,j,temp,min

5、; for(j=0;j=1;j-) temp=0; min=cjtemp+costtemp; for(r=0;r=n;r+) if(cjr!=MAX) if(cjr+costr)min) min=cjr+costr; temp=r; costj=cjtemp+costtemp; dj=temp; path1=1; pathk=n; for(j=2;jk;j+) pathj=dpathj-1; void bgraph(int bcost,int path1,int d) int r,j,temp,min; for(j=0;j=n;j+) bcostj=0; for(j=2;j=n;j+) tem

6、p=12; min=ctempj+bcosttemp; for(r=0;r=n;r+) if(crj!=MAX) if(crj+bcostr)=2;i-) path1i=dpath1i+1; void main() int cur=-1; int cost13,d12,bcost13; int pathk; int path1k; init(cost); fgraph(cost,path,d); cout使用向前递推算法后的最短路径:nn; for(int i=1;i=5;i+) coutpathi ; coutn; coutendl最短路径为长度:cost1endl; coutn; coutn使用向后递推算法后的最短路径:nn; bgraph(bcost,path1,d); for(i=1;i=5;i+) coutpath1i ; coutn; coutendl最短路径为长度:bcost12endl; coutn; 涟江为区内地表水的主要排水通道,隧道设计标高高于最低排水基准面,隧道区山脊内沟谷多为季节性冲沟,主要由大气降水补给,水量小,受季节影响明显,地表水不发育,地表水对隧道施工及运营无影响。第 5 页 共 6 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号