三月十三日
第一次结对作业————地铁查询系统
第一阶段————web地铁查询系统
在地铁查询系统中我认为最难的还是数据库的建表,按照ppt中所说没数据库需要存储线路号,车站唯一标识ID,线路的各个站点名称,车站的换乘信息等信息。
我的思路是,一个路线间一个表,表中有id,nameid,name,和change,其中id标识线路号,nameid标识车站的标识id,name表示线路中各个站点的名称,change表示可以换乘的路线。
将地铁线路中的每一个站点路线都存储到数据库中,当查询某一地点到另一地点的时候,分为两种情况,第一种便是两个地点在同一条地铁线路上,这时候只要查询到两个地点在哪一条线路上即可。两一种可能性便是两个地点不在同一条线路上,已在两条线路上为例(当然也有可能在三个及以上线路上)首先要找到两个地点分别在哪一条线路上,然后找到两个线路的相交地点(即两条线相会的地点)然后输出在哪转乘那一线路就可。
当计算两个地点之间最短的换乘路线的时候,借鉴网上:
DFS/BFS算法
:适合解决解决单源最短路径,从起始结点开始访问所有的深度遍历路径或广度优先路径,则到达终点结点的路径有多条,取其中路径权值最短的一条则为最短路径。DFS比较适合判断图中是否有环,寻找两个节点之间的路径,有向无环图(DAG)的拓扑排序,寻找所有强连通片(SCC),无向图中寻找割点和桥等;而BFS则比较适合判断二分图,以及用于实现寻找最小生成树(MST),如在BFS基础上的Kruskal算法。还有寻找最短路径问题(如Dijkstra算法)。Floyd算法
:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。而我们这里每站之间的权值是一样的,显然我们可以选择用更简单的算法,所以不考虑使用该算法。Dijksta算法
:Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
通过上述分析,再加之地铁地图属于稀疏图,而且该图中每条边的权值恒定,所以我决定用最为简单也较为适合该项目的BFS
算法来实现。
(目前代码还未实现,只有思路)