目录
问题描述
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
基本要求
(1) 设计你所在学校的校园平面图,所含景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介 等信息;以边表示路径,存放路径长度等相关信息。
(2) 为来访客人提供图中任意景点相关信息的查询。
(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
测试数据
以江苏科技大学长山校区为例。
实现提示
一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网,顶点和边均含有相关信息.
获取实例
准备一张长山校区地图,并为不同地点进行编号
序号代表地点:
1:1号组团
2:2号组团
3:3号组团
4:4号组团
5:5号组团
6:6号组团
7:7号组团
8:西苑食堂
9:13号楼
10:14号楼
11:文理大楼
12:计算机学院
13:海韵湖
14:16号楼
15:文体中心
解决思路
无向图查找最短路径;
算法:Dijkstra算法
Dijkstra算法:是指定一个源点,Dijkstra算法是求以固定源点到某一个点的路径长度,也就是计算从源点到某一个顶点的最小路径,每次找路径末尾顶点的邻接点中权值最小的,(不像生成树,找整个生成树距离其他顶点权值最小的,Dijkstra是找末尾顶点距离哪个不在路径中顶点的权值最小) 从末尾顶点找到的不在路径中的顶点的最小权值的边,将边连接的顶点P加入路径集合,之后查看加入新的顶点之后源点到非路径中的顶点权值是否会减小,想计算到m顶点的权值,则让从源点经过p的权值, 再加上p到m的权值,就是源点到m的权值,用源点->p->m的权值和dist[m](表示还没加入顶点时候到m的权值)比较,如果这个权值小于dist[]数组中的,那就用这个权值更新dist[m], 并更改path[]数组,让path[m]=p;表示是经过p点到达m点.
逻辑设计
地点数据存储:S{}集合
描述:将是路径顶点集合在S中
路径数据存储:path[]数组
描述:用源点v初始化path数组 ,表示一开始都是从源点v到达各个顶点的距离。
最短路径:一个dist[]数组
描述:存放的是到各个顶点的最小权值,必须从固定源点开始,