实验三动态规划求多段图问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
voidcreatgraph() //创建图的(成本)邻接矩阵
{inti,j;
foቤተ መጻሕፍቲ ባይዱ(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&cost[i][j]);//获取成本矩阵数据
}
voidprintgraph() //输出图的成本矩阵
{inti,j;
printf("成本矩阵:\n");
实验项目算法实验动态规划实验
一、实验目的
1.掌握动态规划算法的基本思想
2.掌握多段图的动态规划算法
3.选择邻接表或邻接矩阵方式来存储图
4、分析算法求解的复杂度。
二、实验内容
4.掌握动态规划算法的基本思想
5.掌握多段图的动态规划算法
6.选择邻接表或邻接矩阵方式来存储图
4、分析算法求解的复杂度。
三、实验环境
}
path[0]=0;//起点
path[k-1]=n-1;//最后的目标
for(i=1;i<=k-2;i++) (path[i])=d[path[i-1]];//将最短路径存入数组中
}
voidprintpath()
{inti;
for(i=0;i<k;i++)
printf("%d ",path[i]);
程序设计语言:c++
编程工具:microsoftvisual studio 2010
四、算法描述和程序代码
#include "stdio.h"
#define n 7 //图的顶点数
#define k 4 //图的段数
#define MAX 23767
intcost[n][n]; //成本值数组
intpath[k]; //存储最短路径的数组
return 0;
}
五、实验结果截图
六、实验总结
在做实验的过程中,要按部就班,首先明确实验目的,然后进行分析,写算法程序,最后调试运行,不能粗枝大叶,做的过程要细心谨慎,自己不会的通过向别人请教,总之上机实践的过程会学到很多。
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
printf("%d ",cost[i][j]);
printf("\n");
}
}
//使用向前递推算法求多段图的最短路径
voidFrontPath()
{inti,j,length,temp,v[n],d[n];
for(i=0;i<n;i++) v[i]=0;
}
intmain()
{
creatgraph();
printgraph();
FrontPath();
printf("输出使用向前递推算法所得的最短路径:\n");
printpath();
printf("\n输出使用向后递推算法所得的最短路径:\n");
printpath();
printf("\n");
for(i=n-2;i>=0;i--)
{ for(length=MAX,j=i+1;j<=n-1;j++)
if(cost[i][j]>0 && (cost[i][j])+v[j]<length)
{length=cost[i][j]+v[j]; temp=j;}
v[i]=length;
d[i]=temp;
相关文档
最新文档