基于时间价值和经济价值的公交线路选择研究在对公交乘客出行心理特征进行分析的基础上,考虑了乘客选择公交线路决策的因素,建立了基于时间价值和经济价值的公交线路选择合理的模型。
运用C 语言或方法,把数据库导入内存,基于Dijkstra算法的思想,利用邻接点算法对Dijkstra算法进行了优化,并得到了实现,有较强的实际应用价值。
标签:时间价值;经济价值;内存Dijkstra算法0 引言在此我所设计的公交车查询系统就是为了方便人员在数据查询方面的操作,使得他们在日常生活中都会达到事半功倍的效果,减轻了人力的负担,方便了数据的存储,增加了安全性。
它在不考虑换乘地铁、步行以及其他因素的影响下,可以给乘客提供在起始站与终点站之间,能否直达或者换乘一站、换乘两站及三站的详细信息,最后能准确的显示最优化直达或者换乘路线。
1 系统设计关键技术1.1 图图是一种重要且复杂的数据结构。
在线形表中,数据元素之间仅有着线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树性结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素(即其孩子结点)相关,但只能和上一层中一个元素(即其双亲结点)相关;而在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。
一个图由两部分组成,一部分是结点,图的术语中也称之为顶点(vertex);另一部分是顶点的偶对,称之为边(edge)。
通常,图的任意一对顶点间都允许有一条边。
在本文中,我主要用图来表示地图上一组坐标以及坐标之间的距离,以求得最短路径从而对交通网中的公共交通信息进行查询。
1.2 数组数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
1.3 线性链表线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
因此,为了表示每个数据元素于其直接后继数据元素之间的逻辑关系,对于数据元素来说,除了存储其本身的信息之外,还需要存储一个指示其直接后继的信息(及直接后继的存储位置)。
这两部分信息组成数据元素的存储映像,称为结点。
他包括两个域:其中存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指针域。
指针域中存储的信息称作指针或链。
n个结点(a(1≤i≤n)的存储映像)链接成一个链表,即为线性表(a1,a2,a3,……,an )的链式存储结构。
又由于此链表的每个结点中只包含一个指针域,故又称线性链表或单链表。
2 系统的程序算法实现2.1 数据库的标准化当我们开始设计程序时,首先我们要做的就是把手中不甚规则的数据库变成具有统一字段的标准数据库,这样做可方便以后的编程和查询的方便。
2.2 将标准的数据库导入电脑内存做完上述工作后,接下来要把标准的数据库导入电脑内存,同样,我们要用C语言编写一个程序,把数据导入电脑内存,在这里,我们所需要用到的主要是C语言及C++语言。
以下有硬盘的参数和内存的参数,对比可知,为何要把数据库数据直接导入硬盘中。
当我们把标准的数据库导入内存后,如何才能提高电脑对这些数据查询的速率呢,这时,我们需要把这些大量的数据以数组的形式表示出来,然后再以双链表的特点来进行读取查询,这样,我们就能达到提高电脑对数据库访问速率的目的了。
2.3 最短路径问题网络分析的理论基础是图论,其典型应用是求最短路径问题。
最短路径分析是根据网络的拓扑性质,求图中从一个顶点出发到其他各顶点之间的最短路径或求每对顶点之间的最短路径。
2.3.1 优化Dijkstra最短路径算法迪杰斯特拉最短路径算法的数据组织基础是构造N*N的邻接矩阵,N是网络的结点数。
当网络的结点数很大时,而各结点的邻接结点数又不多的情况下,有大量的元素存在,尤其是对于以真实的地图为对象的GIS实际应用问题,这样将占用大量的存储空间,并且运算也很浪费时间。
作者在Dijkstra算法的基础上,采用邻接点算法,以提高运算速度。
2.3.2 邻接点算法基本思想一个网络中,各结点的邻接结点的最大值称为该网络的最大邻接结点数。
取网络的最大邻接结点数作为矩阵的列,网络的结点总数作为矩阵的行,构造邻接结点矩阵来描述网络结构。
邻接结点矩阵的行按结点号从小到大顺序排列,与结点i邻接的结点号写在矩阵的第i行,如果结点i的邻接结点数小于最大邻接结点数,则以0填充.直到填满矩阵。
对照邻接结点矩阵,把邻接结点矩阵中各元素邻接关系对应的边的权值填在同一位置上(对应0元素),构造相应的初始判断矩阵,邻接结点矩阵节省了存储空间,为在计算机实现过程中进一步提高运算速度,提供了更加有效的网络结构组织方式。
2.3.3 邻接点算法的实现(1)从数据文件中装载网络数据。
(2)求网络的最大邻接结点数m。
(3)构造邻接结点矩阵,矩阵的行按结点序号由小到大顺序排列成m行,与结点i邻接的结点号写在第i行,如果结点i的邻接结点数小于最大邻接结点数,则以0填充,各行中的结点序号可以前后随意放置。
对应邻接结点矩阵各元素,把各元素对应的边的权值填在同一位置,构造初始判断矩阵。
(4)有邻接结点矩阵和初始判断矩阵,就可以求网络中任意两点间的最短路径。
若起点S,终点为T。
第一步,初始化标记向量P ,Pi=-1,i=1,2,…,m_iNodesNum,(m_iNodesNum为网络结点总数)。
第二步根据起点S,标记初始判断矩阵的第S行,ps=0 ,记最短距离m_ fDistanceMin=0。
第三步,根据终点T,判断初始判断矩阵的第T行是否标记,是则转第五步,否则继续。
第四步,在初始判断矩阵己标记的行中,求所有元素的最小值dmin。
若dmin= ∞ ,说明不存在最短路径,则退出。
否则m _ fDistanceMin= dmin,记录最小值元素的行di 列di然后在邻接结点矩阵中取(di ,di )元素,记为wo。
若第w行还未标记,则将初始判断矩阵的第w行标记,pw=di;并在邻接结点矩阵的第w行寻找值为di 的元素,记录该元素的行ri 列ri 。
初始判断矩阵中刚获得标记的行中各元素值均加上mf _DistanceMin,并使初始判断矩阵中的(di ,di )和ri ,ri 元素为∞。
转第三步。
第五步,从终点T开始,由标记向量P的分量循前点,直到起点s,查得最短路径m_pWays。
m_fDistanceMin,即为最短路径距离。
以上便是邻接点算法的实现思想。
公共交通和人们日常生活息息相关,出门购物,探亲访友,出差旅游等都离不开公共交通。
在电子地图的查询中,公共交通信息查询备受用户关注。
如果我们要查询从甲地到乙地的公交路线,对于从甲地经过若干站到达乙地究竟该乘那一路车,中间是否需要转车,在哪转车,转车次数是几次等则是我们关注的。
所以,现在的问题是如何获得最佳的乘车方案。
2.4 最佳乘车方案的递归算法其递归判断过程如下:(1)直达:对m-pRoutestation2的第n行进行判断,如果m-pRoutestation2[n][j]=n,(j=1…..m)那么第j次车可以从起点站直达终点站。
(2)换车次数=1:从m-pRoutestation2的第n-1(i=1….n-1)行开始判断,如果m-pRoutestation2[n-1][j]=n-i(j=1…..m),计算矩阵的第n-i+1行到第n 行,如果m-pRoutestation2[n][j]- m-pRoutestation2[n-i+1][j]=n,即满足[j]+ m-pRoutestation2[n-i+1]从站点n-i+1直达站点n。
那么m-pRoutestation2[n-i][j]=n,就可表明车次j从起点发出在n-1站点换车,然后到达终点。
(3)换车次数=2:从m-pRoutestation2的第n-i(i=1….n=2)开始判断,如果m-pRoutestation2[n-i][j]=n-i(j=1….m),调用第二种情况的函数,如果矩阵的第n-i+1行到第n行满足换车1次,则就可以计算出两次换车的地点及相应的车次。
在讨论换车次数=3时,必须计算从某行到某行的换车次数为2的情况,以此类推。
显然,这是一个递归问题。
要求换车次数为n的情况,必须先求换车次数为n-1的情况,要求n-1次换车,必须先知道n-2次换车……。
递归求解的过程可以分为两个阶段:第一阶段是“回推”,即将第n次换车表示为第n-1次换车的函数,而第n-1次换车的情况仍然不知道,还要“回推”到第n-2次换车……,知道直达的情况。
此时,直达的情况已知,不比再向前推了。
然后开始第二个阶段,采用递推的方法,从直达情况推出换一次车,从换一次车推出换两次车……一直推算出换n次车为止。
3 总结本文从空间分析的角度出发,较详细的研究了网络分析中最短路径问题,以及在最短路径基础上的公共交通信息查询。
其特点如下:(1)采用图的结点—弧段联合结构表示公共交通线路网络中的相互关系,建立了网络要素之间的拓扑结构,从而较方便的查询交通信息及最短路径。
(2)在Dijkstra算法的基础上,采用邻接点算法来优化最短路径问题,在一定程度上节省了存贮空间和提高了运算速度。
(3)用较好的数式组织公共汽车车次和站点数据,在算法上上能实现n次转车情况,并比较出最佳乘车方案。
4 不足和建议本文的研究后续还可以再做以下工作:(1)建立拓扑关系时,同时考虑距离搜索半径。
(2)在计算最佳路径时,本文只考虑了距离。
还可以考虑道路宽度、行车速度、时间等因素。
(3)在查询最佳乘车方案时,可考虑公共汽车的发车频率和开班、收班时间因素。
(4)在空间查询的可视化方面可多做一些工作,采用直观、形象的表现方式,增强电子地图的表现力。
(5)电子地图与交通导航系统相结合,考虑道路的单双向、交叉路口的转向以及道路的现时路况等问题。
注:“本文中所涉及到的图表、公式、注解等请以PDF格式阅读”。