1、校园导游程序分析,1,设计校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。要求: 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径; 为来访客人提供图中景点间的推荐路线(遍历各节点的最短路线)和各景点之间的介绍。,2,1.问题描述,华科校园景点图信息,50,32,30,40,20,40,40,40,26,25,20,39,100,10,10,20,30,1. 南大门广场,2. 光谷体育馆,3. 眼镜湖,4.紫松,8.东九,9.瑜园,10.珞珈山,11.韵苑,12.爱因斯,7.光电,
2、5.青年园,6.集贸市场,3,输出格式要求,顺序打印景点和介绍,格式要求: STEP1: 景点名景点介绍 两个景点间打印两景点距离和已走距离: DISTANCE:XXX and TRAVELLED:XXX 最后打印总的路程长度: TOTAL:XXX,4,节点组成无向图,则可用最短路径求解: Dijkstra 算法( 时间复杂度0(n2) )采用Dijkstra算法,每次对路径的查询都需要进行相应的计算。2. Floyd 算法 ( 时间复杂度为0(n3) 但若采用Floyd算法,在第一次进行路径查询前进行相应的计算后,在图信息不变的前提下,不需要再次进行计算。,5,2. 解 析,void flo
3、yed() int i,j,k;for(i=1;i(shortestik+shortestkj)shortestij=shortestik+shortestkj;pathij=k; ,6,Floyd 算法,7,通过中转矩阵来得到最短路径,void ppath(int i, int j)/得到i到j最短路径的中间节点号 int k = pathij;if(k =0)return;/表示i和j之间没有可以中转的结点ppath( i, k);/递归调用pathArraycount=k;/pathArray用来顺序存放中间节点count+;ppath( k, j); ,8,Floyd算法的中转矩阵图,9,谢谢观赏,