- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TAIWAN UNIVERSITY OF TECHNOLOGY
本科实验报告
课程名称: 算法设计与分析
实验项目:动态规划法求多段图问题
实验地点:
专业班级:学号:
学生姓名:
指导教师:
实验三动态规划法求多段图问题
一、 实验目的
掌握动态规划算法的基本思想
掌握多段图的动态规划算法
选择邻接表或邻接矩阵方式来存储图
分析算法求解的复杂度。
二、实验内容
设G=(V,E)是一个带权有向图,其顶点的集合V被划分成k2个不相交的子集 Vi , 1i=k , 其中V1和Vk分别只有一个顶点 s (源)和一个顶点t (汇)。图中所有边的始点和终点都在 相邻的两个子集 Vi和Vi+1中。求一条s到t的最短路线。参考讲义p136图5-24中的多段 图,试选择使用向前递推算法或向后递推算法求解多段图问题。
三、实验环境
程序设计语言:C++
编程工具:microsoft visual studio 2010
四、算法描述和程序代码
#include stdio.h
#include stdlib.h
#include conio.h
#include iostream.h
#define MAX 100
#define n 12
#define k 5
int c[n][n];
void init(int cost[]) // 初始化图
{
int i,j;
for(i=0;i13;i++)
{ for(j=0;j13;j++)
{ c[i][j]=MAX;
}
}
c[1][2]=9; c[1][3]=7; c[1][4]=3;
c[1][5]=2; c[2][6]=4; c[2][7]=2;
c[2][8]=1;
c[3][6]=2; c[3][7]=7; c[4][8]=11;
c[5][7]=11; c[5][8]=8; c[6][9]=6;
c[6][10]=5;
c[7][9]=4; c[7][10]=3; c[8][10]=5;
c[8][11]=6; c[9][12]=4;
c[10][12]=2;c[11][12]=5;
}
void fgraph(int cost[],int path[],int
d[]) // 使用向前递推算法求多段图的最短
路径
{ int r,j,temp,min;
for(j=0;j=n;j++)
cost[j]=0;
for(j=n-1;j=1;j--)
{ temp=0;
min=c[j][temp]+cost[temp]; //
初始化最小值
for(r=0;r=n;r++)
{
if(c[j][r]!=MAX)
{
if((c[j][r]+cost[r])min)
//找到最小的r
{ min=c[j][r]+cost[r];
temp=r;
} } }
cost[j]=c[j][temp]+cost[temp];
d[j]=temp; }
path[1]=1; path[k]=n;
for(j=2;jk;j++)
path[j]=d[path[j-1]];
}
void bgraph(int bcost[],int
path1[],int d[])// 使用向后递推算法求
多段图的最短路径
{ int r,j,temp,min;
for(j=0;j=n;j++)
bcost[j]=0;
for(j=2;j=n;j++)
for(j=2;j=n;j++)
( temp=12;
min=c[temp][j]+bcost[temp];
//初始化最小值
for(r=0;r=n;r++)
(
if(c[r][j]!=MAX)
(
if((c[r][j]+bcost[r])min)
//找到最小的r
(
min=c[r][j]+bcost[r];
temp=r;
} } }
bcost[j]=c[temp][j]+bcost[temp];
d[j]=temp;
}
path1[1]=1;
path1[k]=n;
for(int i=4;i=2;i--)
( path1[i]=d[path1[i+1]];
} }
void main()
(
int cur=-1;
int cost[13],d[12],bcost[13];
int path[k];
五、实验结果截图
int path1[k];
cout\t\t\t 动态规划解多段图问题
endl;
cout\n\n;
init(cost);
fgraph(cost,path,d);
cout 输出使用向前递推算法后的最
短路径:\n\n”;
for(int i=1;i=5;i++)
( coutpath[i]””;
}
cout\n;
coutendl” 最短路径为长
度:cost[1]endl;
cout\n;
cout\n 输出使用
您可能关注的文档
最近下载
- 35t锅炉课程设计汇本指导附设计程序与CAD总图.doc VIP
- 《铁路路基工程施工质量验收标准》TB-10414-2018全部表格.pdf VIP
- 混凝土地面球场施工方案.docx VIP
- 供应商有害物质管理审核表 .xlsx VIP
- DB37_T 1997.11—2019_物业服务规范第11部分:公共场馆物业.pdf VIP
- 《现代科学技术概论》课程教学大纲(模板).docx VIP
- 热处理工艺学.pdf VIP
- 1999-2023年哈尔滨工业大学高等代数考研真题.pdf VIP
- 一种料理机机座.pdf VIP
- Mg-Al-M合金中Al-M相(M=Sr,Nd)析出行为的热力学分析.pdf VIP
原创力文档


文档评论(0)