- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
欧洲旅行实验报告-东北大学
实 验 报 告
课程名称:数据结构 班级:会计1203 实验成绩: 实验名称:欧洲旅行 学号批阅教师签字: 实验编号:实验二 姓名:柳思杨 实验日期:2014 年 6 月29 日 指导教师:张明卫 组号: 实验时间:21时 00 分-21 时50 分
一、实验目的
1)加深对图的表示法和图的基本操作的理解,并可初步使用及操作;
2)掌握用图对实际问题进行抽象方法,可以解决基本的问题;
3)掌握利用邻接表求解非负权值、单源最短路径的方法,即利用迪杰斯特拉算法求最短路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题。
4)学会使用STL中的map抽象实际问题,掌握map,List的应用。
实验内容与实验步骤
这个评估程序模拟欧洲铁路系统计算两个城市之间最便宜的路线。代表了铁路系统的图形如下图所示。
在这个程序中,构造一个加权图代表铁路服务与欧洲城市。每个服务从一个城市都有一个关联的目的地城市,费用(欧元),和一个距离(公里)。该程序处理用户输入的源和目的地城市。程序然后显示最便宜的路线从源到目的地城市。此外,对于每一个路线,总成本和总显示距离。文件services.txt包含的数据可用的服务。
简短描述你在实验中使用的数据结构及算法的基本原理。
这个程序利用三个主要类:City类、Service类和RailSystem类。City类和Service类的实现已经给出。City类保存一个城市的信息。Sevice类模拟铁路系统的铁路服务。这类包含的公共数据成员有目的地城市,费用,和距离。这两个类是RailSystem所使用的类。
RailSystem类模拟铁路系统使用一个邻接表表示。这些邻接列表用STL模板中map数据结构表示。具体地说,一个由string类型和ListService* 构成的map类型代表了铁路系统。即mapstring,ListService*。下图是如何代表铁路系统的一部分。注意,机票费用和距离在简化画面中省略。
本质上,如上表示,一个对外服务的链表使用了一个包含城市名称的字符串作为下标。例如,在上面的照片中,马德里有三个外向服务:里斯本,伯尔尼,和巴黎。它与给出的铁路系统图的顶端匹配。
除了这种类型的map对象,另一种map类型的映射是用于城市名称映射到各城市的对象指针。即mapstring,City*。此map对象用于搜索算法。
这个程序的示例输出如下图所示。
使用的算法是一个djkstra最短路径算法。每个City是图中的一个节点,每个Service相关联的边缘,边缘的权:机票费用。我们的目标是找到最便宜的路线从源到目的地城市。 当要执行一个新的搜索,一个指向Service的指针代表最初开始城市应该添加到一个空候选队列。算法继续探索候选城市的Service,同时可能添加新的候选人名单。该算法用数字对每个City对象从原点到目前为止最便宜路线成本做标记。并存储在成员total_fee中。这个值可能在找到新路线后减少,变得更便宜,但不可能增加。 当复原实际的搜索路径,每个City对象包含一个字符串from_city,from_city代表最便宜路径上一个通过的城市名称,将在搜索算法被不断更新。比如说,如果检查出通过布鲁塞尔到巴黎是一个更便宜的路径,则更新对应于巴黎城市的City的变量total_fee,并设置其from_city等于“布鲁塞尔”。搜索完成后,算法得出最便宜的路线,并且通过from_city字符串可以遍历从目的地到原点的所有结点,以重建这条道路。
描述你采用STL中的什么容器或者类实现图的存储,在算法应用过程中使用什么数据结构或算法提高算法的效率。
图的存储结构:
Map类mapstring, ListService* outgoing_services存储 铁路系统图。其中ListService*存储名称为string的城市其邻接 点的信息。
Map类mapstring, City* cities存储搜索算法中的路径图。 City*指向名称为string的城市的最小路径信息。
其他数据结构:
优先队列priority_queueCity*, vectorCity*, Cheapest:搜索算法中,用优先队列存储候选城市结点,顶点直接得到最小费用城市的指针,可以提高算法效率。
栈stackstring :恢复最小费用的路径。
算法:
最小路径算法,即djkstra算法。
迭代。在遍历ListService*和mapstring, listService* 这些复杂数据结 构时,使用迭代器能提高算法效率。
三、实验环境
操作系统:Win7旗舰版;
调试软件名称:Visual
您可能关注的文档
最近下载
- 《防范遏制矿山领域重特大生产安全事故的硬措施》解读.pptx VIP
- [运行]-污水处理运营费用明细.docx VIP
- 《中华人民共和国标准化法》专业解读课件.pptx VIP
- 高中数学精品讲义:三角函数的概念(五大题型).pdf VIP
- 2025无创正压通气临床研究年度进展.pdf VIP
- 20240320可用性工程(人因设计)研究报告 空白模版.docx VIP
- GB_T 32151.14-2023 碳排放核算与报告要求 第14部分:其他有色金属冶炼和压延加工企业.pdf VIP
- 医务人员职业安全防护措施.pdf VIP
- 12J6 外装修标准图集.pdf VIP
- 兽医内科病 兽医学教材.ppt VIP
文档评论(0)