一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

高速公路最短费用路径计算方法和装置与流程

2021-11-15 17:18:00 来源:中国专利 TAG:


1.本发明涉及交通技术领域,更具体地涉及一种高速公路最短费用路径计算方法和装置。


背景技术:

2.目前,高速公路的最小费用路径计算都是使用的迪杰斯特拉算法,迪杰斯特拉算法是计算从一个顶点到其余各顶点的最短费用路径算法,解决的是有权图中最短费用路径问题。迪杰斯特拉算法主的要计算过程是采用贪心算法的策略,从起始点开始,每次遍历与起始点距离最近,并且从未访问过的顶点的邻接节点,直到扩展到终点为止。
3.简要的高速公路路网如图1所示,可以用以下方式进行高速公路有向图模型的建模:高速公路的收费门架和收费站入口和收费站出口作为有向图中的点,收费门架之间以及收费门架与收费站入口/出口之间的直接连接关系作为有向图的边,车辆经过收费门架的费用作为所有以该门架为终点的边的权值,终点为收费站出口的边的权值为0。
4.如图1所示,门架0标记为点0,门架1标记为点1,门架2标记为点2,门架3标记为点3,门架4标记为点4,门架5标记为点5,门架6标记为点6,门架7标记为点7,收费站0入口标记为点8,收费站0出口标记为点9,收费站1入口标记为点10,收费站1出口标记为点11,收费站2入口标记为点12,收费站2出口标记为点13,收费站3入口标记为点14,收费站3出口标记为点15。下面,将公路路网和公路有向图中的各个点称为节点。
5.建模后,形成如图2所示的公路有向图模型,在构建的公路有向图中:
6.节点0与节点4直接连接,记为边0

4,值为2;
7.节点1与节点0直接相连,记为边1

0,值为2;
8.节点1与节点9直接相连,记为1

9,值为0;
9.节点2与节点1直接相连,记为边2

1,值为3;
10.节点2与节点11直接相连,记为边2

11,值为0;
11.节点3与节点2直接相连,记为边3

2,值为2;
12.节点3与节点13直接相连,记为边3

13,值为0;
13.节点4与节点5直接相连,记为边4

5,值为3;
14.节点4与节点9直接相连,记为边4

9,值为0;
15.节点5和节点6直接相连,记为边5

6,值为2;
16.节点5和节点11直接相连,记为边5

11,值为0;
17.节点6与节点2直接相连,记为边6

2,值为2;
18.节点6与节点7直接相连,记为边6

7,值为2;
19.节点6与节点13直接相连,记为边6

13,值为0;
20.节点7与节点15直接相连,记为边7

15,值为0;
21.节点8与节点0直接相连,记为边8

0,值为2;
22.节点8与节点5直接相连,记为边8

5,值为3;
23.节点10与节点1直接相连,记为边10

1,值为3;
24.节点10与节点6直接相连,记为边10

6,值为2;
25.节点12与节点2直接相连,记为边12

2,值为2;
26.节点12与节点7直接相连,记为边12

7,值为2;
27.节点14与节点3直接相连,记为边12

3,值为2。
28.图2中所示的有向图通过迪杰斯特拉算法计算之后,能够得到一个最短费用路径二维矩阵,即前序矩阵pre
[n][n]
,其中,n为节点数,即(收费门架 收费站数量*2)的数值。前序矩阵中的元素pre
[i][j]
的值表达的意思是从节点i到节点j的最短费用路径中,节点j的前一个节点的序号,其中,0≤i≤n

1,0≤j≤n

1,即前序矩阵中的元素正常表示的是两节点间的最短路径上目标节点前一节点的序号,此时的元素值为正常标识值。若元素pre
[i][j]
的值为非正常标识值,而为特殊标识值(如

1或其他负数,仅为示例)时,指示节点i无法到达节点j,也即表示两节点i和j之间无路径。
[0029]
为了获取节点i和节点j两节点间的最短费用路径,需要用以下方式从元素pre
[i][j]
开始递归至元素pre
[i][i]

[0030]
获取元素pre
[i][j]
的值k,若k为

1,则节点i与节点j不可连通,不存在最短费用路径;若k不为

1,则将k的值当做纵坐标(或称列坐标,列值,即列号),获取pre
[i][k]
的值。以此类推,直到k=i,则获取到了最短费用路径。下面矩阵1所示为基于对图2所示的有向图通过迪杰斯特拉算法计算出的前序矩阵的示意。
[0031]
矩阵1.前序矩阵:
[0032][0033]
由于高速公路有向图模型的特殊性,即费用包含在收费门架的属性中,所以在获取路径的同时,通过车辆类型能够同时获取到最小费用。
[0034]
例如,如要获取从节点8(收费站0入)至节点13(收费站2出)的最短费用路径,则获取逻辑如下:
[0035]
(1)获取元素pre
[8][13]
的值,为6;
[0036]
(2)以6作为列值,获取pre
[8][6]
的值,为5;
[0037]
(3)以5作为列值,获取pre
[8][5]
的值,为8;
[0038]
(4)8等于元素pre
[8][13]
的行值,此时已经获取了最短费用路径,为节点8,5,6,13。
[0039]
由于矩阵的空间为n*n,当前技术方案的空间复杂度为o(n2),主要内存占用空间
为前序数组pre
[n][n]
,n为高速路网建模中节点的数量,而全国的收费门架总数 收费站总数*2的数值为50000左右,该技术方案要求的最低内存空间为10gb(50000*50000*4byte),这个内存空间大小远远大于收费门架系统所能提供的内存大小,因此该技术方案无法满足将最小费用计算放至收费门架系统上的需求。


技术实现要素:

[0040]
为了解决现有技术中存在的问题,本发明提供了一种高速公路最短费用路径计算方法和装置,以降低获取高速公路的最小费用路径时占用的内存空间,从而可以提高计算性能,并能够满足将最小费用计算放至收费门架系统上的需求。
[0041]
本发明的目的在于提供一种用于高速公路最短费用路径计算的矩阵压缩算法,该方法包括以下步骤:
[0042]
二维矩阵获取步骤,基于高速公路有向图计算高速公路短费用路径二维矩阵,所述二维矩阵中的元素的值包括标识公路两节点间无路径的特殊标识值和标识两节点间的最短路径上目标节点前一节点的序号的正常标识值;
[0043]
矩阵压缩步骤,该步骤包括矩阵行压缩步骤和/或矩阵列压缩步骤,其中,所述矩阵行压缩步骤包括:将二维矩阵中值为特殊标识值的元素数超过第一阈值的行进行压缩,忽略掉要压缩的行中值为特殊标识值的元素,针对每一被压缩行形成包括剩余元素的列值和对应元素值的二元组的二元组集合;所述矩阵列压缩步骤包括:基于每一列中重复的正常标识值对二维矩阵中的每一列压缩,形成三元组集合,所述三元组集合中的三元组包括相同连续元素值的起始列值、终止列值和对应的元素值;
[0044]
检索步骤:基于获得的二元组集合和三元组集合,通过查找对应的矩阵元素,获得高速公路节点间最短费用路径。
[0045]
在本发明一些实施方式中,所述二维矩阵利用迪杰斯特拉算法得到;所述特殊标识为

1;所述第一阈值为9n/10,其中n为高速公路有向图中的节点数。
[0046]
在本发明一些实施方式中,所述矩阵行压缩步骤包括:建立行标记数组,所述行标记数组中各元素的初始标记为第一标记;逐行遍历所述二维矩阵,若第i行值不为

1的元素数小于或等于n/10,则将行标记数组中该行对应的元素的初始标记更新为第二标记;将第二标记对应的行压缩成二元组集合,所述二元组集合中的二元组包括当前行中值不为

1的元素的列值和对应元素值。
[0047]
在本发明一些实施方式中,所述矩阵行压缩步骤还包括:如果将第二标记对应的行压缩成二元组集合的过程中,则基于当前行得到的二元组集合为空,该行元素的值均为

1。
[0048]
在本发明一些实施方式中,所述矩阵列压缩步骤中,如果收费站入口节点对应的列的值均为

1,则压缩后该列对应的三元组集合为空;所述矩阵列压缩步骤中,忽略掉二维矩阵二维矩阵的对角线上的值。
[0049]
在本发明一些实施方式中,针对各行,若存在二元组集合,则读取对应的二元组集合,在所述对应的二元组集合中使用折半查找法查找各行中指定元素的值;如果不存在二元组集合,则通过列坐标读取对应的三元组集合,在所述对应的三元组集合中使用折半查找法查找指定元素的值。
[0050]
在本发明一些实施方式中,所述检索步骤包括:获取要搜索的指定元素的行对应的行标记数组,若数组的标记为第二标记,则读取当前行的二元组集合,在二元组集合中使用折半查找法递归比较中间二元组的列值和要搜索的指定元素的列坐标,如果所述列值大于所述列坐标,则从所述中间二元组向前半部分查找所述指定元素的值;如果所述列值等于所述列坐标,则当前二元组中的元素值为指定元素的值;如果所述列值小于所述列坐标,则从所述中间二元组向后半部分查找所述指定元素的值;若数组的标记为第一标记,则通过所述指定元素所在列的列坐标读取所述三元组集合,在三元组集合中使用折半查找法递归比较中间三元组的起始列值和指定元素的行坐标;如果所述起始列值大于所述行坐标,则从所述中间三元组向前半部分查找所述指定元素的值;如果所述起始列值等于所述行坐标,则当前三元组中的元素值为指定元素的值;如果所述起始列值小于所述行坐标,则从所述中间三元组向后半部分查找所述指定元素的值。
[0051]
在本发明一些实施方式中,所述第一标记为false,所述第二标记为true。
[0052]
本发明的另一方面,还提供一种高速公路最短费用路径计算装置,该装置包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述方法的步骤。
[0053]
本发明的另一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如前所述方法的步骤。
[0054]
本发明实施例的高速公路最短费用路径计算方法和装置,通过矩阵压缩算法,将前序矩阵进行压缩,使最短费用路径计算所需要的内存大大减小,且检索效率不会降低太多,大大提高了系统性能,并且能够满足将最小费用计算放至收费门架系统上的需求。
[0055]
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
[0056]
此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,并不构成对本发明的限定。在附图中:
[0057]
图1为简要的高速公路路网示意图。
[0058]
图2为高速公路有向图模型示意图。
[0059]
图3为本发明一实施例中高速公路最短费用路径计算方法的流程示意图。
[0060]
图4为本发明另一实施例中高速公路最短费用路径计算方法的流程示意图。
具体实施方式
[0061]
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
[0062]
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
[0063]
应该强调,术语“包括/包含/具有”在本文使用时指特征、要素、步骤或组件的存
在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
[0064]
图3为本发明一实施例中高速公路最短费用路径计算方法的流程示意图。如图3所示,该方法包括以下步骤:
[0065]
步骤s110,二维矩阵获取步骤,基于高速公路有向图计算高速公路最短费用路径二维矩阵。
[0066]
优选地,利用迪杰斯特拉算法基于高速公路有向图计算高速公路最短费用路径二维矩阵。
[0067]
计算得到的该二维矩阵中的元素的值可包括特殊标识值和正常标识值,特殊标识值标识公路两节点间无路径,正常标识值标识的是两节点间的最短路径上目标节点前一节点的序号。在本发明一实施例中,为了区别于正常标识值,特殊标识值可被设置为固定的负数,例如,在两节点i和j之间无路径时,二维矩阵的对应元素pre
[i][j]


1,在两节点i和j之间有路径时,pre
[i][j]
为两节点最短路径上j节点的上一节点的序号。
[0068]
本步骤中,可以采用现有的迪杰斯特拉算法计算高速公路最短费用路径二维矩阵,在此不再赘述。
[0069]
步骤s120,矩阵压缩步骤。
[0070]
该步骤可包括矩阵行压缩步骤和/或矩阵列压缩步骤。其中:
[0071]
矩阵行压缩步骤包括:将二维矩阵中值为特殊标识值的元素数超过第一阈值的行进行压缩,忽略掉要压缩的行中值为特殊标识值的元素,针对每一被压缩行形成包括剩余元素的列值和对应元素值的二元组的二元组集合。
[0072]
矩阵列压缩步骤包括:基于每一列中重复的正常标识值对二维矩阵中的每一列压缩,形成三元组集合,所述三元组集合中的三元组包括相同连续元素值的起始列值、终止列值和对应的元素值。
[0073]
二维矩阵中特殊标识值为固定值,且表示的是节点间不存在最短路径,二维矩阵的行或列中可能会存在重复的这些特殊标识值,即重复的数据。为了降低二维矩阵数据对内存的过多占用,本发明实施例中,通过矩阵压缩对二维矩阵中至少部分重复的特殊标识值进行了过滤(即忽略掉了至少部分特殊标识值),并对列中连续重复的正常标识值以更小的数据量进行表示。
[0074]
更具体地,在矩阵行压缩步骤中,仅对值为特殊标识值的元素数超过一定数量(第一阈值)的行进行压缩,或者说仅对值不为特殊标识值的元素数超过一定数量(第二阈值)的行进行压缩,忽略掉要压缩的行中值为特殊标识值的元素。压缩后针对每一被压缩行形成包括剩余元素的列值和对应元素值的二元组的二元组集合。在本发明一实施例中,第一阈值可以取9n/10,第二阈值可以为n/10,即第一阈值和第二阈值之和为n,其中n为高速公路有向图中的节点数。该9n/10和n/10为经验值,本发明并不限于此,还可以是其他数值,设置第一阈值或第二阈值可以平衡压缩的数据量和压缩效率。
[0075]
在本发明一些实施例中,矩阵行压缩步骤包括:
[0076]
(1)建立行标记数组,该行标记数组中各元素的初始标记为第一标记,该第一标记例如为false。
[0077]
(2)逐行遍历二维矩阵,若第i行值为

1的元素数大于9n/10,则将行标记数组中该行对应的元素的初始标记更新为第二标记,如true。n为高速公路有向图中的节点数。在9n/
10难以整除的情况下,可取最接近9n/10的整数,或者大于9n/10的最接近的整数,或者小于9n/10的最接近的整数。
[0078]
(3)将第二标记对应的行压缩成二元组集合,该二元组集合中的二元组包括当前行中值不为

1的元素的列值和对应元素值。
[0079]
在本发明一些实施例中,矩阵行压缩步骤还包括:如果将第二标记对应的行压缩成二元组集合的过程中,该行中不存在值不为

1的元素,则基于当前行得到的二元组集合为空,该行元素的值均为

1。
[0080]
在矩阵列压缩步骤中,是基于每一列中重复的正常标识值进行压缩,压缩后形成三元组集合,每一列的三元组集合中的三元组包括相同连续元素值的起始列值、终止列值和对应的元素值。
[0081]
在本发明实施例中,如果收费站入口节点对应的列的值均为

1,则压缩后该列对应的三元组集合为空。
[0082]
本发明实施方式中,可以仅进行行压缩或列压缩,也可以既进行行压缩,有进行列压缩。
[0083]
步骤s130,检索步骤:基于获得的二元组集合和/或三元组集合,通过查找对应的矩阵元素,获得高速公路节点间最短费用路径。
[0084]
在本发明一些实施例中,如果收费站入口节点对应的列的值均为特殊标识值,如

1,则压缩后该列对应的三元组集合为空。
[0085]
作为示例,在本步骤s130中,针对各行,若存在二元组集合,则读取对应的二元组集合,在对应的二元组集合中使用折半查找法查找各行中指定元素的值;如果不存在二元组集合,则通过列坐标读取对应的三元组集合,在对应的三元组集合中使用折半查找法查找指定元素的值。
[0086]
在本发明一些实施例中,检索步骤包括:获取要搜索的指定元素的行对应的行标记数组,若数组的标记为第二标记,则读取当前行的二元组集合,在二元组集合中使用折半查找法递归比较中间二元组的列值和要搜索的指定元素的列坐标,如果所述列值大于所述列坐标,则从所述中间二元组向前半部分查找所述指定元素的值;如果所述列值等于所述列坐标,则当前二元组中的元素值为指定元素的值;如果所述列值小于所述列坐标,则从所述中间二元组向后半部分查找所述指定元素的值;
[0087]
若数组的标记为第一标记,则通过所述指定元素所在列的列坐标读取所述三元组集合,在三元组集合中使用折半查找法递归比较中间三元组的起始列值和指定元素的行坐标;如果所述起始列值大于所述行坐标,则从所述中间三元组向前半部分查找所述指定元素的值;如果所述起始列值等于所述行坐标,则当前三元组中的元素值为指定元素的值;如果所述起始列值小于所述行坐标,则从所述中间三元组向后半部分查找所述指定元素的值。
[0088]
基于上述步骤,通过对高速公路路网模型在应用时占用的内存进行压缩,使其所需要的内存大大减小,从而可以满足门架系统内存的要求。并且,在做矩阵压缩时,通过优化查找算法可尽可能地提高矩阵检索的速度,使得检索效率不会降低太多。
[0089]
由于高速公路路网模型结构相对简单,大部分节点只与1

2个节点直接连接,少部分节点会与3个或更多的节点直接连接。如前述矩阵1为例,在迪杰斯特拉算法运行之后,前
序矩阵中的每一列会有大量的重复数值,因此可以针对矩阵中每一列进行压缩;为了提高列压缩效率,减少列中特殊标识值

1的干扰,可以先做行压缩,再做列压缩,但本发明并不限于此。
[0090]
下面结合图4描述本发明另一实施例中高速公路最短费用路径计算方法的流程示例。如图4所示,该方法包括:
[0091]
步骤s1,利用迪杰斯特拉算法计算出高速公路最小费用路径的二维矩阵(前序矩阵,或称pre数组)。例如,得到前述矩阵1所示的二维矩阵。
[0092]
前序矩阵1:
[0093][0094]
步骤s2,在矩阵行压缩之前,先建立行标记数组flag
[n]
(初始化为全false)。
[0095]
步骤s3,进行矩阵行压缩,从i=1开始逐行遍历矩阵,若第i行不为

1的值数量小于或等于(n/10),即第i行为

1的值数量超过(9n/10),则将行标记数组中的第i行flag
[i]
从false置为true(步骤s4),并将第i行压缩成由(列号c,该列元素值v)表示的二元组的集合rowlist
i
。例如,前序矩阵的某一行[

1,

1,

1,

1,

1,

1,

1,

1,

1,

1,

1,3,4,

1,

1,

1,

1,

1,

1,

1],可压缩为集合[(11,3),(12,4)],其中,(11,3),(12,4)为由(列号c,该列元素值v)表示的二元组。如果后面检索时若发现的当前行二元组集合中没有对应的列号,则基于当前行得到的二元组集合为空,该行元素的值均为

1。
[0096]
步骤s5,如果遍历完矩阵的所有行,则进入步骤s6,进行矩阵列压缩。逐列遍历二维矩阵,对矩阵中的每一列都压缩成一个(起始值s,终止值e,对应行的元素值w)的三元组集合collist
k
,如列[1,1,1,1,1,2,2,2]可以压缩为集合[(0,4,1),(5,7,2)]。对于任意一行i,若flag
[i]
为true,在矩阵列压缩时,将忽略行i。
[0097]
若节点k为收费站入口,则其他任意节点都无法到达该节点,列k所有的值均为

1,压缩后的三元组集合list
k
中没有任何元素。pre数组中,对于任意节点i,pre
[i][i]
的值均为

1,即任何节点都无法到达自身,则在矩阵压缩时,将忽略这些节点。
[0098]
通过这个压缩算法,对矩阵2压缩完成后,可以得到以下行标记数组:
[0099]
flag
[16]
:[false,false,false,false,false,false,false,true,false,true,false,true,false,true];
[0100]
得到以下16个行集合表(flag
[i]
为false对应的行集合表为空):
[0101]
rowlist0:[];
[0102]
rowlist1:[];
[0103]
rowlist2:[];
[0104]
rowlist3:[];
[0105]
rowlist4:[];
[0106]
rowlist5:[];
[0107]
rowlist6:[];
[0108]
rowlist7:[(15,7)];
[0109]
rowlist8:[];
[0110]
rowlist9:[];
[0111]
rowlist
10
:[];
[0112]
rowlist
11
:[];
[0113]
rowlist
12
:[];
[0114]
rowlist
13
:[];
[0115]
rowlist
14
:[];
[0116]
rowlist
15
:[];
[0117]
以下16个列集合表:
[0118]
collist0:[(0,6,1),(8,8,8),(10,14,1)];
[0119]
collist1:[(0,8,2),(10,10,10),(12,14,2)];
[0120]
collist2:[(0,1,6),(3,3,3),(4,10,6),(12,12,12),(14,14,3)];
[0121]
collist3:[(0,12,

1),(14,14,14)];
[0122]
collist4:[(0,14,0)];
[0123]
collist5:[(0,6,4),(8,8,8),(10,14,4)];
[0124]
collist6:[(0,8,5),(10,10,10),(12,14,5)];
[0125]
collist7:[(0,10,6),(12,12,12),(14,14,6)];
[0126]
collist8:[];
[0127]
collist9:[(0,0,4),(1,3,1),(4,4,4),(5,6,1),(8,8,4),(10,14,1)];
[0128]
collist
10
:[];
[0129]
collist
11
:[(0,1,5),(2,3,2),(4,5,5),(6,6,2),(8,10,5),(12,14,2)];
[0130]
collist
12
:[];
[0131]
collist
13
:[(0,2,6),(3,3,3),(4,12,6),(14,14,3)];
[0132]
collist
14
:[];
[0133]
collist
15
:[(0,14,7)]。
[0134]
在矩阵压缩完成后,进一步进入步骤s7,进行矩阵检索。
[0135]
检索矩阵的方式由现有技术中的通过i,j两节点直接取pre
[i][j]
的值的方式修改为本发明中的以下检索方式:
[0136]
1.获取行标记flag
[i]
的值,若值为true,即该行存在二元组集合,则读取行二元组集合rowlist
i
,进入第2步在对应的二元组集合中使用折半查找法查找各行中指定元素的值;若值为false,即该行不存在二元组集合,通过列坐标j读取三元组集合collist
j
,进入第3步在对应的三元组集合中使用折半查找法查找指定元素的值;
[0137]
2.在rowlist
i
中使用折半查找方法查找元素值pre
[i][j]
,每次递归比较中间二元组rowlist
i[mid]
(列号c,该列元素值v)的列号c和列坐标j,若c>j,则向rowlist
i
前半部分查找;若c=j,则pre
[i][j]
的值为v;若c<j,则向rowlist
i
后半部分查找,直至找到对应值;
[0138]
3.在collist
j
中使用折半查找方法查找元素值pre
[i][j]
,每次递归比较中间三元组collist
j[mid]
(起始节点s,终止节点e,对应行的元素值w)的起始节点s与行坐标(横坐标)i,若s>i,则向collist
j
前半部分查找;若s<=i且e>=i,则pre
[i][j]
的值为w;若s<i且e<i,则向collist
j
后半部分查找,直至找到对应值。
[0139]
例1,如果要在上面的压缩结果中查找pre
[3][1]
的值,按以下步骤查找:
[0140]
1.确定行标记flag
[3]
的值为false,则按照列坐标确定列集合表collist1。
[0141]
2.collist1的长度为3,按折半原则获得三元组collist
1[1]
,即(10,10,10),比较起始值10与目标行坐标3,发现10>3,则向列表前半部分继续查找,直到找到对应值。
[0142]
3.对列表前半部分折半获得三元组collist
1[0]
,即(0,8,2),发现起始值0<目标行坐标3,且终止值5>目标横坐标3,确认pre
[3][1]
的值为该三元组的值2。
[0143]
由此,便可获得pre[3][1]对应的最短收费路径。
[0144]
例2,如果要在上面的压缩结果中查找pre
[7][15]
[0145]
1.确定行标记flag
[7]
为true,则按行坐标确定行结合表rowlist7。
[0146]
2.rowlist7的长度为1,按折半查找直接确定结果值为rowlist7[0],即二元组(15,7)。
[0147]
3.确认pre
[7][15]
的值为7。
[0148]
由此,便可获得pre[7][15]对应的最短收费路径。
[0149]
本发明实施例通过对高速公路路网模型在应用时占用的内存按照算法进行压缩,使其所需要的内存大大减小,从而可以满足门架系统内存的要求;此外,在做矩阵压缩的同时,通过优化查找算法可尽可能地提高矩阵检索的速度,使得检索效率不会降低太多。
[0150]
与前述方法相应地,本发明还提供了一种高速公路最短费用路径计算装置,该装置包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述方法的步骤。
[0151]
此外,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前所述方法的步骤。
[0152]
本发明针对某省高速路网进行了测试,该省高速路网具有530个收费门架,199个收费站,1267个直接连接关系,体现到高速模型中,有向图模型中具有530 199*2=928个节点,1267条边。
[0153]
针对该有向图进行两节点间的最短费用路径查询测试,得到以下结果:
[0154][0155]
上述数据可以看出,该算法能够有效压缩高速公路路网模型中的前序数组,压缩
比例为95.8%,平均耗时由0.011毫秒增长至0.023毫秒,高速公路门架收费计算时间上限为250毫秒,压缩算法能够完全满足高速公路通行的时限需求。
[0156]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0157]
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd

rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
[0158]
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
[0159]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献