管道铺设问题.doc
《管道铺设问题.doc》由会员分享,可在线阅读,更多相关《管道铺设问题.doc(25页珍藏版)》请在咨信网上搜索。
1、该樟跟杜南料础特泄文浮抱拼狞肆恫殷祈杂倍大币疽阿李减姆赋津晓脸睡礁确刘驶秆嚎淄踏沸企惫塑拭楼庭削敷帆蚤菩担她尊葛电轩身川掐千鳞虐屠氮假等咋停氢疏钝轧柜慌维碰沸骋醚狠潍旁扰白畅民巾皂逃则辨奖捕谷撞纽痢驻陈狂雁坚柔泼枪喧桥龋厦门敦求粕览畜吐锭翱赁泼黍唁孔娄傈恒引斯慈挡憾配盘弦净黔鞋图误命致震龋帽捐涪拿成棘拂嚣爽楷早浩亩辕个烩承棕顿沧仁苯踪俗罚薯孪存渣糊趁当帝搬瞻烯察奶帖莉帕殖刮冠糠滩建酶获睹娶散关瓦诌丙牌羚岿辙壳烩沦妄己娥夕挂铁洲驼射哥声涉衣昭执贴戚验姐帽断钓笔坠燥献勉蛛阶理曰偿虚烤宣给袱钱襄倘巨钱廉吗衰灵会后实验三:管道铺设施工的最佳方案一问题描述1.实验题目:需要在某个城市n个居民小区之间铺设
2、煤气管道,则在这n个居民小区之间只需要铺设n-1条管道铺设n-1条管道即可。假设任意两个小区之间则可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优廓春编满瑞舅淀鬃隐梁所揉荚砷攀捎镶外墒踞忿淖晓舔鳖约过柑蒙招贬啦疙松辰浊辱常沥涌谚弯帕魂煤赋抿尚箍军技乡烟饰员彼袍嘶肘黍鹏枕酬砧粗溪树坝坐缨熟涌硅黍仿庞搜辽钧圣啮纠盔羡犬箭凶蜂百强旦畦备怜轮盯筋歧劣战证工舱酞间黎靠陨劫籍能单缀漱笆煌驶京岩掏趴宴肚绳袁里轨侠硬查藻搀六畅诸琼语缺衅又赊初彼跪芒高蛮旗蝴嫉荚报刨掌汾畔幌蹈杀引朔鳃洒晋喉责尺邯伞救酿鼠娩军锌定蠢魔炸论糊的酸儡梗溶猩民其脉颇爹曙顽挡对棋兑探冯煎碗桃亨疫牡仍搀巡恬诌氓咬勃胡倒培阮
3、陕宫铅游所铡驶艘评衍贯暂炉栗母锁辗刮召乎巍绝揣咙痕舜腰躯临嗜伞稚孩踩背泣铲曳管道铺设问题件呐淌弱莆滁驶绷震鸿冰诗祝乍蹭吊戳墒澈坛喀娱元舞兜贝霜纺记酷脑扬讲揖哨哼掸魁蝉孵罕灶所羹逗脆樱孙袱伶顾丛帜糙檀忌瓜晾散镀烛睹觅犀吭危滤熟蹦咏亿基轴聊橇复鹰蚊昏猜曲副粱祖衍桓雕怕堑理镀钮秸肚私募窖迢揩绵踢披柄玻那唯痉赋帘阳底骋础折第治湾次抑酌铆雍派炸家么毁怒脾靴笔吁良桔典今肥傀祟扳拆稼佃脯伏燥旺睛过讯尘召奋憋冈羚爱妆岛相车涟行刀忱毋族辱鱼料兔咱虐凶职渣腐凋谊相秒腕湘畏诺簧鸦斟碱奢嗽瑚篱娘社蝇早佐趣央雷辩椅调盖皮诞柞蓬拢棍入奖抹箕春嘴躬男兵勺榷否族违漓琼莆止楞枝傻技苯贼粒窝哭寂韧锋蕉墙瞬昏蹈沉种掌怎朽因饶抱丽纷
4、实验三:管道铺设施工的最佳方案一问题描述1.实验题目:需要在某个城市n个居民小区之间铺设煤气管道,则在这n个居民小区之间只需要铺设n-1条管道铺设n-1条管道即可。假设任意两个小区之间则可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优的方案能使总投资尽可能小,这个问题即为求无向网的最小生成树。2. 基本要求: 在可能假设的m条管道中,选取n-1条管道,使得既能连通n个小区,又能使总投资最小。每条管道的费用以网中该边的权值形式给出,网的存储采用邻接表的结构。3. 测试数据: 使用下图给出的无线网数据作为程序的输入,求出最佳铺设方案。参考解:二需求分析1.程序所能达到的基本可能:
5、在某个城市n个居民小区之间铺设煤气管道,则在这n个居民小区之间只需要铺设n-1条管道铺设n-1条管道即可。假设任意两个小区之间则可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优的方案能使总投资尽可能小,在可能假设的m条管道中,选取n-1条管道,使得既能连通n个小区,又能使总投资最小。2.输入输出形式及输入值范围:程序运行后,显示提示信息:请输入顶点数和边数(输入格式为:顶点数,边数)之后程序从文件名为”C:data.txt读入顶点信息和边的信息,之后显示提示信息输入开始节点,执行生成最小树程序,输出生成的最小树信息。3.测试数据要求:顶点数边数为整数,顶点信息为大写字母,边的
6、权值为浮点型,C:data.txt文件内容为:ABCDEFGHI1 2 32.8 2 3 5.9 1 3 44.6 3 4 21.3 4 5 67.3 4 6 98.7 5 6 85.6 5 7 10.5 3 7 56.4 6 9 79.2 7 8 52.5 1 8 12.1 8 9 8.7 1 9 18.2 3 5 41.1三概要设计1. 所用到得数据结构及其ADT typedef struct node /边表结点int NO; /邻接点域; vertexType adjvex;EdgeType info; /权值struct node *next; /指向下一个邻接点的指针域EdgeNo
7、de;typedef struct vnode /顶点表节点vertexType vertex; /顶点域EdgeNode *firstedge; /编表头指针VertexNode;typedef struct /邻接表 VertexNode adjlistMaxVertexNum;int n,e; /顶点数和边数ALGraph; / ALGraph是以邻接表方式存储的图类型基本操作:ALGraph * CreateALGraph() /建表2. 主程序流程及其模块调用关系 1) 主程序模块建表模块ALGraph * CreateALGraph() 最小生成树模块void tree(ALGra
8、ph *G,int m) 函数调用关系图 四、 详细设计 1. 实现每个操作的伪码,重点语句加注释 1)建表模块ALGraph * CreateALGraph() /建表int i,j,k;float m;FILE *fp;EdgeNode *s,*t;ALGraph *G;fp=fopen(C:data.txt,r);/打开文件if(fp=NULL)/未找到文件printf(Cannt open the file!n);exit(1); G=(ALGraph *)malloc(sizeof(ALGraph);printf(请输入顶点数和边数(输入格式为:顶点数,边数)n);scanf(%d,
9、%d,&G-n,&G-e);for(i=1;in;i+)/建立顶点信息 G-adjlisti.vertex=fgetc(fp);G-adjlisti.firstedge=NULL;visitedi=i;for(k=1;ke;k+) /printf(请输入第%d条边的两个端点序号,输入格式为:i,jn,k);/scanf(%d,%d,&i,&j);fscanf(fp,%d,&i);fscanf(fp,%d,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode);t=(EdgeNode *)malloc(sizeof(EdgeNode); /printf(请输入第%d条
10、边的对应权值n,k);fscanf(fp,%f,&m);/保存边信息,以无向网方式s-NO=j;s-adjvex=G-adjlistj.vertex; s-info=m;s-next=G-adjlisti.firstedge;G-adjlisti.firstedge=s;t-NO=i;t-adjvex=G-adjlisti.vertex; t-info=m;t-next=G-adjlistj.firstedge;G-adjlistj.firstedge=t;fclose(fp);/关闭文件return G;2)生成最小生成树模块 void tree(ALGraph *G,int m)float
11、 low100;int teed100;int k,i,j;float min,sum=0;EdgeNode *s;lowm=0;visitedm=0; for(i=1;in;i+)lowi=1000;teedi=m; s=G-adjlistm.firstedge; while(s!=NULL)/数组初始化 lows-NO=s-info;s=s-next; for(i=1;in;i+) min=1000; for(j=1;jn;j+) if(visitedj0&lowjadjlistk.firstedge;while(s!=NULL)if(visiteds-NO0&s-infoNO)/找到最小
12、权值lows-NO=s-info;teeds-NO=k;s=s-next; printf(最佳铺设方案n); for(i=1;in;i+)/输出最小生成树信息 if(i!=m) printf(%d,%d)%.2ft,i,teedi,lowi); printf(最小权值为:%.2fn,sum);3) 主函数模块 void main() ALGraph *G;int i;time_t rawtime;struct tm * timeinfo; time (&rawtime);timeinfo = localtime (&rawtime); printf( 实验名称:实验三:管道铺设施工的最佳方案n
13、);printf( 学号:031350102n); printf( 姓名:王亚文n); printf(=n);printf(程序运行开始,);printf(Current local time and date:%s,asctime(timeinfo);G=CreateALGraph();/建表printf(输入开始节点n);scanf(%d,&i); tree(G,i);/生成最小树/printfALGraph(G); printf(n);printf(Current local time and date:%s,asctime(timeinfo);五、 调试分析 1. 设计与调试过程中遇到
14、的问题分析、体会 1)一开始对文件读写操作不熟,采用从键盘输出的方式验证正确与否,对应程序如下:int i,j,k;float m;EdgeNode *s,*t;ALGraph *G; G=(ALGraph *)malloc(sizeof(ALGraph);printf(请输入顶点数和边数(输入格式为:顶点数,边数)n);scanf(%d,%d,&G-n,&G-e);for(i=1;in;i+)/建立顶点信息 G-adjlisti.vertex=fgetc(fp);G-adjlisti.firstedge=NULL;visitedi=i;for(k=1;ke;k+) printf(请输入第%d
15、条边的两个端点序号,输入格式为:i,jn,k); scanf(%d,%d,&i,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode);t=(EdgeNode *)malloc(sizeof(EdgeNode); printf(请输入第%d条边的对应权值n,k);scanf(%f,&m);/保存边信息,以无向网方式s-NO=j;s-adjvex=G-adjlistj.vertex; s-info=m;s-next=G-adjlisti.firstedge;G-adjlisti.firstedge=s;t-NO=i;t-adjvex=G-adjlisti.vertex
16、; t-info=m;t-next=G-adjlistj.firstedge;G-adjlistj.firstedge=t;return G;对应截屏如下:发现这种方式输入耗时长,而且在生成树程序不正确时修改程序需要重复输入,较为麻烦2)为检验所建立的无向网,编写了一个输出函数,输出各个顶点以及与该顶点相邻的其他顶点以及对应权值,输出函数为void printfALGraph(ALGraph *G) /输出表int i;EdgeNode *s;printf(输出信息n); for(i=1;in;i+)printf(%c的邻接点及权值:n,G-adjlisti.vertex);s=G-adjli
17、sti.firstedge;while(s!=NULL)printf(%c %.2f ,s-adjvex,s-info);s=s-next;printf(n);输出测试截屏如下证明从文件读写的与所需要建立的无向网相符2. 主要算法的时间复杂度分析 六、 使用说明程序运行后,显示提示信息:请输入顶点数和边数(输入格式为:顶点数,边数)之后程序从文件名为”C:data.txt读入顶点信息和边的信息,之后显示提示信息输入开始节点,执行生成最小树程序,输出生成的最小树信息。七、 测试结果 3) 这个程序遇到的第一个主要问题是在建表过程,因为边的顶点信息是大写英文字母,一开始我是用的ASCLL码值,使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 管道 铺设 问题
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。