没有合适的资源?快使用搜索试试~ 我知道了~
数据结构大作业 导航系统报告
5星 · 超过95%的资源 需积分: 23 8 下载量 145 浏览量
2023-03-04
10:36:48
上传
评论 3
收藏 1.22MB DOC 举报
温馨提示
试读
12页
一、系统概述 1.开发环境:windows 10,Clion2022 2.开发语言:C++ 3.设计内容:设计学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所最短路径,以及从任意场所到达所有场所的最短路径 4.用户需求: 5.设计思想: a)图的存储:将校园地图通过邻接矩阵进行存储; b)两地点间最短路径:在初始化时,通过Dijkstra算法计算出任意两点间的最短距离、路径,用户使用该功能时只需查表并输出即可; c)校园导航:本 六、总结与展望
资源推荐
资源详情
资源评论
1
一、系统概述
1.开发环境:windows 10,Clion2022
2.开发语言:C++
3.设计内容:设计学校的平面图,至少包括 10 个以上的场所,每两个场所间可以有不同的
路,且路长也可能不同,找出从任意场所到达另一场所最短路径,以及从任意场所到达所有
场所的最短路径。
图 1-1 学校平面图设计
(1)地点设置介绍:如图 1-1 所示,设计图共计 16 个场所,并进行了编号(从 0 开始);
(2)顶点间的距离值:各顶点间距离值如图 1-1 所示,单位为米。
4.用户需求:
图 1-2 菜单
图 1-2 展示了本程序初步设计的菜单,通过命令行实现用户交互,基本功能如下:
a) 显示校园平面图:打印校园平面图;
b) 两地点间最短路径:由用户输入起点、终点,并输出最短距离值与最短路径;
c) 校园导航:由用户选择当前位置,输出“从当前位置开始,到达所有场所,最终返回当
前位置”的最短距离、路径;
d) 留下评论:读取用户输入评论,写入文件;
e) 查看评论:从文件中读取评论并打印。
5.设计思想:
a) 图的存储:将校园地图通过邻接矩阵进行存储;
b) 两地点间最短路径:在初始化时,通过 Dijkstra 算法计算出任意两点间的最短距离、
2
路径,用户使用该功能时只需查表并输出即可;
c) 校园导航:本质是非完全图,允许重复访问的旅行商问题。通常的旅行商问题是 NPC 问
题,并且要求完全图,非完全图的求解较难。本次系统设计通过将非完全图转化为完全
图,然后使用状态压缩动态规划解决旅行商问题,达到本功能的近似求解。经过学习了
解,此种方法不一定能得到最优解,但本人在网上尚未找到权威资料以解决本问题。
二、系统总体设计
2.1 用户交互设计
开始
获取用户输入
解析用户输入
执行操作
结束
图 2-1 用户交互
图 2-1 为用户交互流程图,其设计了一个简单循环,循环中获取用户输入、解析并执行,
执行操作后进行下一次循环(或退出程序)。
2.2 图操作模块设计
图操作模块主要针对“两地点间最短路径”、“校园导航”两大功能进行设计。
由于程序功能相对简单,因此图操作模块直接用结构化设计思想进行实现,即使用全局
变量、函数的形式实现即可。
三、详细设计思路及算法
3.1 两地点间最短路径(Dijkstra 算法)
3
Dijkstra 算法的核心流程如下:
对于图 G,顶点为 V(v0-vn),边为 E,假设求点 v0 到所有顶点的最短距离(路
径),
1. 初始化:建立两个集合 S,T。S 表示已求得最短距离的点集合,T 表示未求得最短距离
的点集合,初始时 S={v0},T=V-S;
2. 从 T 中取出距离起点 v0 最近的点,假设为 vi,将其放入 S;
3. 以 vi 为桥梁,更新 T 中到达起点 v0 的距离;
4. 重复 2、3 直到没有 T 为空或无可达点(距离为无穷)。
图 3-1 例图(来源:网络)
以图 3-1 为例,假设起点为 A,
1. 初始时,S={A(0)},T={B(2), C(∞), D(6)};
2. 从 T 中选出最近点 B,加入 S,则 S={A(0), B(2)},T={C(∞), D(6)};
3. 以 B 为桥梁,更新 T 中的距离,例如对于 T 中 D,AD=6 < 4 =AB+BD,因此更新
T={C(5), D(4)};
4. 以此类推,运行至 T 为空或无可达点即可。
如此即可求得 A 点到各点的最短距离,而求路径时,只需额外使用一个数组 pre,在更
新 T 时记录结点前驱即可,例如上面更新 D 时,记录 pre[D]=B,然后从 pre 倒推即可得到
最短路径。
3.2 校园导航(TSP 动态规划)
前面提到非完全图的 TSP 问题并未找到权威解法,因此本程序设计将非完全图转化为
完全图,然后使用状态压缩动态规划求解 TSP 问题:
1. 非完全图转化为完全图:转化方式为若两点之间无边,则使用 Dijkstra 算法求出最短路
径作为替代边;
2. 动态规划求解 TSP 问题。
TSP 问题的定义是从某点出发,经过所有点仅一次,最终回到起点,暴力求解的复杂度
为 n!,使用动态规划可将复杂度变换为 2
n
×n
2
。
剩余11页未读,继续阅读
资源评论
- 章满莫2023-07-24这份导航系统报告详实,对数据结构的应用举例生动,值得一读。
- 小明斗2023-07-24对于导航系统的优化方案,作者进行了合理性分析,提出了可行的改进措施。
- 城北伯庸2023-07-24导航系统报告中的代码实现简洁高效,体现了作者的编程功底。
- 曹多鱼2023-07-24导航系统报告对用户需求的综合考虑周全,为实际使用提供了可靠的参考。
- 代码深渊漫步者2023-07-24作者在导航系统报告中提出了一些新颖的解决方法,对问题的分析深入透彻。
彩铅@
- 粉丝: 75
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功