发明内容
为了解决上述技术问题,本发明实施例提出了一种航路数据处理方法、航路搜索方法、装置及设备,能够对若干航路所组成的航路网络图进行预处理,以使处理后的改进航路网络图上的节点及其连接关系预先满足限制条件,从而在寻路搜索时无需进行规则检查,提高效率。
为了实现上述目的,本发明实施例提供了一种航路数据处理方法,包括:
获取航路数据;
基于所述航路数据生成航路网络图;其中,所述航路网络图包括节点集合以及与所述节点集合对应的边集合;所述航路网络图为有向无环图;
对所述航路网络图进行路径组合限制预处理,得到改进航路网络图。
进一步的,所述节点集合包括多个节点,所述边集合包括若干条边;所述若干条边用于根据所述航路数据连接节点,以形成所述若干条边中的每一条的方向。
进一步的,所述对所述航路网络图进行路径组合限制预处理,得到改进航路网络图,具体包括:
基于预先配置的第一类路径组合限制集合和第二类路径组合限制集合,对所述航路网络图进行路径组合限制预处理,得到改进航路网络图;
其中,所述第一类路径组合限制集合包括多组被限制为经过前节点后必须经过后节点的第一节点对,所述第二类路径组合限制集合包括多组被限制为经过前节点后不能经过后节点的第二节点对,节点的出边为连接这一节点且这一节点为起点的边。
进一步的,基于所述第一类路径组合限制集合,对所述航路网络图进行路径组合限制预处理,具体包括:
在所述航路网络图中确定多组所述第一节点对;
基于多组所述第一节点对中的每一组依次执行如下步骤:
在上一轮步骤执行完后的航路网络图中枚举以前节点为起点、后节点为终点的所有第一航路,将所述所有第一航路对应的所有边构成第一原有边集合;
复制所述第一原有边集合对应的除前节点以外的所有节点,以生成第一复制节点集合;其中,所述第一复制节点集合中的节点为复制节点;
复制上一轮步骤执行完后的航路网络图;其中,复制得到的航路网络图中的节点集合为原有节点集合;
基于所述第一复制节点集合,对复制得到的航路网络图进行路径组合限制预处理。
进一步的,所述基于所述第一复制节点集合,对复制得到的航路网络图进行路径组合限制预处理,具体包括:
在复制得到的航路网络图上执行如下操作:
加入所述第一复制节点集合中的所有复制节点;
若在所述原有节点集合中第一复制节点集合中复制节点所对应的各节点之间,在复制前的航路网络图上连接有边,则在加入的第一复制节点集合中对应的复制节点之间生成边;
删除前节点的所有出边,并为前节点对应生成新的出边,以分别连接到加入的第一复制节点集合中与所有删除的出边的终点对应的复制节点;
若所述原有节点集合中的后节点,在复制前的航路网络图上存在出边,则为加入的第一复制节点集合中的复制后节点对应生成出边,以分别连接至所述原有节点集合中后节点所有出边的终点。
进一步的,基于所述第二类路径组合限制集合,对所述航路网络图进行路径组合限制预处理,具体包括:
在所述航路网络图中确定多组所述第二节点对;
基于多组所述第二节点对中的每一组依次执行如下步骤:
在上一轮步骤执行完后的航路网络图中枚举以前节点为起点、后节点为终点的所有第二航路,将所述所有第二航路对应的所有边构成第二原有边集合;
将第二原有边集合对应的除前节点以外的所有节点加入第二节点集合,复制所述第二节点集合的所有节点,以生成第二复制节点集合;其中,所述第二复制节点集合中的节点为复制节点;
复制上一轮步骤执行完后的航路网络图;其中,复制得到的航路网络图中的节点集合为原有节点集合;
基于所述第二复制节点集合,对复制得到的航路网络图进行路径组合限制预处理。
进一步的,所述基于所述第二复制节点集合,对复制得到的航路网络图进行路径组合限制预处理,具体包括:
在复制得到的航路网络图上执行如下操作:
加入所述第二复制节点集合中的所有节点;
若在所述原有节点集合中第二复制节点集合中复制节点所对应的各节点之间,在复制前的航路网络图上连接有边,则在加入的第二复制节点集合中对应的复制节点之间生成边;
若所述第二节点集合中除后节点以外的节点在复制前的航路网络图上,存在连接至所述第二节点集合以外的节点的出边,则为加入的第二复制节点集合中对应的复制节点生成出边,以连接至所述原有节点集合中对应的出边终点;其中,加入的第二复制节点集合中的复制后节点出度为0,即没有出边;
删除前节点的所有出边;并为前节点对应生成新的出边,以分别连接到加入的第二复制节点集合中与所有删除的出边的终点对应的复制节点;
删除加入的第二复制节点集合中的复制后节点的所有入边及复制后节点;其中,后节点的入边为连接后节点且后节点为终点的边。
本发明实施例还提供了一种航路搜索方法,包括:
响应于输入的起点和终点,采用预先配置的最短路径算法在改进航路网络图上搜索得到与输入的起点和终点对应的最短路径;
其中,所述改进航路网络图是根据上述任一项所述的航路数据处理方法获取到的;输入的起点和终点分别对应于所述改进航路网络图上的节点。
本发明实施例还提供了一种航路数据处理装置,包括:
数据获取模块,用于获取航路数据;
航路网络图生成模块,用于基于所述航路数据生成航路网络图;其中,所述航路网络图包括节点集合以及与所述节点集合对应的边集合;所述航路网络图为有向无环图;
路径组合限制预处理模块,用于对所述航路网络图进行路径组合限制预处理,得到改进航路网络图。
本发明实施例还提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的航路数据处理方法的步骤或者上述所述的航路搜索方法的步骤。
综上,本发明具有以下有益效果:
采用本发明实施例,通过获取航路数据;基于所述航路数据生成航路网络图;其中,所述航路网络图包括原有节点集合以及与所述原有节点集合对应的边集合;所述航路网络图为有向无环图;对所述航路网络图进行路径组合限制预处理,得到改进航路网络图,本发明实施例通过与预处理相关的数据处理保证解的合法性,避免在寻优过程中进行限制检查,极大地提高了寻优速度;当路径组合限制更新后,只需重新进行一次预处理,算法容易扩展;将与预处理相关的数据处理方法与不同的路径寻优算法结合,方便推广到其他问题的求解上。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请描述中,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
在本申请的描述中,需要说明的是,除非另有定义,本发明所使用的所有的技术和科学术语与属于本的技术领域的技术人员通常理解的含义相同。本发明中说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明,对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
参见图1,是本发明提供的航路数据处理方法的一个实施例的流程示意图,该方法包括步骤S1至S3,具体如下:
S1,获取航路数据;
S2,基于所述航路数据生成航路网络图;其中,所述航路网络图包括节点集合以及与所述节点集合对应的边集合;所述航路网络图为有向无环图;
S3,对所述航路网络图进行路径组合限制预处理,得到改进航路网络图。
示例性的,在上述步骤S2中生成的航路网络图可以参见图3。
作为上述方案的改进,所述节点集合包括多个节点,所述边集合包括若干条边;所述若干条边用于根据所述航路数据连接节点,以形成所述若干条边中的每一条的方向。
作为上述方案的改进,所述对所述航路网络图进行路径组合限制预处理,得到改进航路网络图,具体包括:
基于预先配置的第一类路径组合限制集合和第二类路径组合限制集合,对所述航路网络图进行路径组合限制预处理,得到改进航路网络图;
其中,所述第一类路径组合限制集合包括多组被限制为经过前节点后必须经过后节点的第一节点对,所述第二类路径组合限制集合包括多组被限制为经过前节点后不能经过后节点的第二节点对,节点的出边为连接这一节点且这一节点为起点的边。
需要说明的是,为便于理解,在下文中以G=(N,A)表示航路网络图,其中N为节点集合,A为边集合,s为起点,t为终点,s至t的路径需要满足的限制集合为R1和R2,分别对应第一类路径组合限制集合和第二类路径组合限制集合。将未完成预处理或预处理完成后的改进航路网络图记为G’=(N’,A’)。
作为上述方案的改进,基于所述第一类路径组合限制集合,对所述航路网络图进行路径组合限制预处理,具体包括:
在所述航路网络图中确定多组所述第一节点对;
基于多组所述第一节点对中的每一组依次执行如下步骤:
在上一轮步骤执行完后的航路网络图中枚举以前节点为起点、后节点为终点的所有第一航路,将所述所有第一航路对应的所有边构成第一原有边集合;
复制所述第一原有边集合对应的除前节点以外的所有节点,以生成第一复制节点集合;其中,所述第一复制节点集合中的节点为复制节点;
复制上一轮步骤执行完后的航路网络图;其中,复制得到的航路网络图中的节点集合为原有节点集合;
基于所述第一复制节点集合,对复制得到的航路网络图进行路径组合限制预处理。
示例性的,针对R1中的每条“过X点后必须过Y点”类型的限制,将X点与Y点看作一组第一节点对,此时的X点为前节点,Y点为后节点,进行如下处理:枚举前节点X至后节点Y的所有第一航路,并将这些第一航路上所对应的所有边构成第一原有边集合AXY,对于AXY中的每条边,将这些边上除X外所有节点加入集合PXY,并为PXY中的节点生成对应的复制节点,加入第一复制节点集合PXY’。复制节点与对应的原有节点等价,在处理限制时,针对原有的节点的限制对复制节点也有效。需要说明的是,在第一轮步骤中,所述上一轮步骤执行完后的航路网络图,应理解为尚未基于R1进行路径组合限制预处理的航路网络图。在本实施例中,在对航路网络图进行路径组合限制预处理之前,参见图3,a点为前节点X,d点为后节点Y,此时过a点后必须过d点;在基于R1完成对航路网络图的路径组合限制预处理之后,参见图4,d1即d点的复制后节点。图4中实线边在图3的航路网络图中有相同的边,虚线边在图3的航路网络图中有对应的边。
作为上述方案的改进,所述基于所述第一复制节点集合,对复制得到的航路网络图进行路径组合限制预处理,具体包括:
在复制得到的航路网络图上执行如下操作:
加入所述第一复制节点集合中的所有节点;
若在所述原有节点集合中第一复制节点集合所中复制节点所对应的各节点之间,在复制前的航路网络图上连接有边,则在加入的第一复制节点集合中对应的复制节点之间生成边;
删除前节点的所有出边,并为前节点对应生成新的出边,以分别连接到加入的第一复制节点集合中与所有删除的出边的终点对应的复制节点;
若所述原有节点集合中的后节点,在复制前的航路网络图上存在出边,则为加入的第一复制节点集合中的复制后节点对应生成出边,以分别连接至所述原有节点集合中后节点所有出边的终点。
示例性的,经过本实施例处理得到的航路网络图可以参见图4。
示例性的,将第一复制节点集合PXY’中的复制节点加入复制得到的航路网络图G’,并为它们生成边,方法如下:若PXY’中复制节点在G中对应的原有节点之间有边,则在G’中为对应的复制节点之间生成边。
修改G’中前节点X点的出边,方法如下:删掉X点所有出边并连接X点至原有出边终点对应的复制节点。
连接G’中复制后节点Y’至G’中的原有节点,方法如下:若G中有Y点至该原有节点的出边,在G’中生成对应的Y’至该原有节点的出边。
可以理解的是,对经过第一类路径组合限制处理后得到的改进航路网络图的有效性的证明如下:为证明对第一类路径组合限制的上述处理有效,需要证明以下三点:(1)G'中不含违反“过X点后必须过Y点”限制的路径;(2)G’中包含G中所有满足“过X点后必须过Y点”限制的路径;(3)G'中没有G中不存在的路径。
对于第(1)点:
用反证法证明:假设G’中存在一条由s点至t点的路径Ra过X点且不经过Y点或Y’点。设路径Ra上X的出边上的点为i,由上述处理步骤可知,G’中X所有出边上的点均属于第一复制节点集合PXY’,有i∈PXY’。由上述处理步骤可知,PXY’中所有复制节点均通过Y’连接至原有节点,因此i至t的路径必然经过Y’,与假设矛盾。可知G’中所有过X点的路径必过Y’点,不含违反“过X点必过Y点”限制的路径。
对于第(2)点:
对于G中的任意一条s点至t点的合法路径Rb,若路径Rb不过X点,则路径Rb上的节点在G’中对应的节点均属于原有节点集合,由上述处理步骤可知,Rb上的边在G’中有相同的边,Rb在G’中有相同路径。若路径Rb过X点,则G中Rb必过Y点。将路径Rb分为三部分,其中Rb1为s点至X点的路径,Rb2为X点至Y点的路径,Rb3为Y点至t点的路径。其中s点至X点的路径Rb1上所有节点在G’中对应的节点均属于原有节点集合,因此Rb1上的边在G’中均有相同的边。根据上述处理步骤,X点至Y点的路径Rb2上除X外的节点在G’中均属于第一复制节点集合,因此Rb2上的边均在G’中有对应的边。根据上述处理步骤,Y’点复制了Y点所有出边且Y点至t点的路径Rb3上的其他节点均属于原有节点,因此Y点至t点的路径Rb3上的边在G’中也有对应或者相同的边。综上,Rb上的边均在G’中有对应的边,Rb在G’中有对应的路径,因此G’中包含G中所有满足“过X点后必须过Y点”限制的路径。
对于第(3)点:
由以上处理步骤可知,对于G’中起止点是i、j的边Rc,若i,j∈PXY’,则Rc在G中有对应的边。若则i、j均为原有节点,Rc在G中相同的边。若i∈PXY’且/>则只可能i为Y,Rc在G中有对应的边。若/>且j∈PXY’,则只可能i为X,Rc在G中有对应的边。因此G’中没有G中不存在的边,G’中没有G中不存在的路径。
作为上述方案的改进,基于所述第二类路径组合限制集合,对所述航路网络图进行路径组合限制预处理,具体包括:
在所述航路网络图中确定多组所述第二节点对;
基于多组所述第二节点对中的每一组依次执行如下步骤:
在上一轮步骤执行完后的航路网络图中枚举以前节点为起点、后节点为终点的所有第二航路,将所述所有第二航路对应的所有边构成第二原有边集合;
将第二原有边集合对应的除前节点以外的所有节点加入第二节点集合,复制所述第二节点集合的所有节点,以生成第二复制节点集合;其中,所述第二复制节点集合中的节点为复制节点;
复制上一轮步骤执行完后的航路网络图;其中,复制得到的航路网络图中的节点集合为原有节点集合;
基于所述第二复制节点集合,对复制得到的航路网络图进行路径组合限制预处理。
示例性的,针对R2中的每条“过X点后不能过Y点”类型航路组合限制,将X点与Y点看作一组第二节点对,此时的X点为前节点,Y点为后节点,对网络进行如下处理:枚举以前节点X为起点,后节点Y为终点的所有第二路径,并将这些第二路径上所对应的所有边构成第二原有边集合AXY,对于AXY中的每条边,将这些边上除X外所有节点加入第二节点集合PXY,并为PXY中的节点生成对应的复制节点并加入第二复制节点集合PXY’。复制节点与对应的原有节点等价,在处理限制时,针对原有的节点的限制对复制节点也有效。需要说明的是,在第一轮步骤中,所述上一轮步骤执行完后的航路网络图,应理解为尚未基于R2进行路径组合限制预处理的航路网络图。在本实施例中,参见图5或图6,b点为前节点X,e点为后节点Y,此时过b点后不能过e点。图5和图6中实线边在图3的航路网络图中有相同的边,虚线边在图3的航路网络图中有对应的边。
作为上述方案的改进,所述基于所述第二复制节点集合,对复制得到的航路网络图进行路径组合限制预处理,具体包括:
在复制得到的航路网络图上执行如下操作:
加入所述第二复制节点集合中的所有节点;
若在所述原有节点集合中第二复制节点集合中复制节点所对应的各节点之间,在复制前的航路网络图上连接有边,则在加入的第二复制节点集合中对应的复制节点之间生成边;
若所述第二节点集合中的除后节点外的节点在复制前的航路网络图上,存在连接至所述第二节点集合以外的节点的出边,则为加入的第二复制节点集合中对应的复制节点生成出边,以连接至所述原有节点集合中对应的出边终点;其中,加入的第二复制节点集合中的复制后节点出度为0,即没有出边;
删除前节点的所有出边,并为前节点对应生成新的出边,以分别连接到加入的第二复制节点集合中与所有删除的出边的终点对应的复制节点;
删除加入的第二复制节点集合中的复制后节点的所有入边及复制后节点;其中,后节点的入边为连接后节点且后节点为终点的边。
可以理解的是,如图5所示,其中b为第二节点对中的前节点,e为第二节点对中的后节点,e1为加入的第二复制节点集合中的复制后节点。
应理解,本实施例处理后得到如图6所示的改进航路网络图,其中b为第二节点对中的前节点,e为第二节点对中的后节点,相比图5,复制后节点e1被删除。
示例性的,将第二复制节点集合PXY’中的复制节点加入复制得到的航路网络图G’,并为复制节点生成边。方法如下:若PXY’中的复制节点在G中对应的原有的节点之间有边,则在G’中为对应的复制节点之间生成边。
在G’中删掉第二节点对的前节点X的出边,并为前节点X对应生成新的出边,以分别连接到加入的第二复制节点集合中与所有删除的出边的终点对应的复制节点。
如PXY中除Y以外的节点在G中存在连接至PXY以外的节点的出边,则在G’中为该节点对应的复制节点生成出边,以连接至原有节点集合中对应的出边终点。对于Y’,其出度为0,即没有出边。
删掉复制后节点Y’的所有入边及复制后节点Y’。
可以理解的是,对经过第二类路径组合限制处理后得到的改进航路网络图的有效性的证明如下:为证明对第二类路径组合限制的上述处理有效,需要证明以下三点:(1)G'中不含违反“过X点后不能过Y点”类型限制的路径;(2)G’中包含G中所有的合法路径;(3)G’中没有G中不存在的路径。
对于第(1)点:
假设改进航路网络图G’中存在由s点至t点的一条路径Ra经过X点后经过Y点,设路径上Ra上X的出边上的点为i,因为X点所有出边上的节点均属于集合PXY’,则有i∈PXY’。根据上述处理步骤,PXY’中的节点不与Y连通,只与Y’连通,但Y’无出边,因此i无法通过Y’至t点,与假设矛盾。可知G’中所有过X点的路径必不过Y点或Y'点。G’中不含违反“过X点后不能过Y点”类型限制的路径。
对于第(2)点:
对于G中任意一条s点至t点的合法路径Rb,若路径Rb不过X点,可知路径Rb上所有的节点在G’中对应的节点均属于原有节点集合,因此路径Rb上所有的边在G’中均有相同的边。若路径Rb过X点,将路径Rb分为两部分,即s点至X点的路径Rb1,X点至t点的路径Rb2。其中s点至X点的路径Rb1上所有节点均属于原有节点集合,因此G’中均有相同的边。根据上述处理步骤,X点至t点的路径Rb2上的边在G’中均有对应的边,因此Rb在G’中有对应路径,G’中包含G中所有满足“过X点后不能过Y点”限制的路径。
对于第(3)点:
由以上处理步骤可知,对于G’中起止点是i、j的边Rc,若i,j∈PXY’,则Rc在G中有对应的边。若则i、j均为原有节点,Rc在G中相同的边。若i∈PXY’且/>则i为PXY’中不为Y’的节点,j为原有节点,Rc在G中有对应的边。若/>且j∈PXY’,则只可能i为X,Rc在G中有对应的边。因此G’中没有G中不存在的边,G’中没有G中不存在的路径。
本发明实施例还提供了一种航路搜索方法,包括:
响应于输入的起点和终点,采用预先配置的最短路径算法在改进航路网络图上搜索得到与输入的起点和终点对应的最短路径;
其中,所述改进航路网络图是根据上述任一项所述的航路数据处理方法获取到的;输入的起点和终点分别对应于所述改进航路网络图上的节点。
示例性的,所述最短路径算法包括Dijkstra算法,则所述采用预先配置的最短路径算法在所述改进航路网络图上搜索得到与所述起点和终点对应的最短路径,具体包括如下步骤:
步骤a:建立一个open list,一个close list,均始化为空,所有节点状态初始化为open;其中,节点状态为open表示相应节点可用,节点状态为close表示相应节点不可用。
步骤b:将起点S放入open list,成本设为0,若open list为空,则程序终止;
步骤c:若open list不为空,则从open list中找到成本最小的节点n;
步骤d:将节点n从open list中删除,若close list中已经包含节点n,则跳过,选取下一个节点,否则将节点n加入close list。若节点n为终点T,则找到一条路径。
步骤e:遍历节点n有出边的节点m,若节点m的状态不为close,则将其加入openlist并计算其成本;
步骤f:返回步骤c。
参见图2,是本发明提供的航路数据处理装置的一个实施例的结构示意图,包括:
数据获取模块101,用于获取航路数据;
航路网络图生成模块102,用于基于所述航路数据生成航路网络图;其中,所述航路网络图包括节点集合以及与所述节点集合对应的边集合;所述航路网络图为有向无环图。
路径组合限制预处理模块103,用于对所述航路网络图进行路径组合限制预处理,得到改进航路网络图。
示例性的,在上述航路网络图生成模块102中生成的航路网络图可以参见图3。
作为上述方案的改进,所述节点集合包括多个节点,所述边集合包括若干条边;所述若干条边用于根据所述航路数据连接节点,以形成所述若干条边中的每一条的方向。
作为上述方案的改进,所述路径组合限制预处理模块103,具体用于:
基于预先配置的第一类路径组合限制集合和第二类路径组合限制集合,对所述航路网络图进行路径组合限制预处理,得到改进航路网络图;
其中,所述第一类路径组合限制集合包括多组被限制为经过前节点后必须经过后节点的第一节点对,所述第二类路径组合限制集合包括多组被限制为经过前节点后不能经过后节点的第二节点对,节点的出边为连接这一节点且这一节点为起点的边。
需要说明的是,为便于理解,在下文中以G=(N,A)表示航路网络图,其中N为节点集合,A为边集合,s为起点,t为终点,s至t的路径需要满足的限制集合为R1和R2,分别对应第一类路径组合限制集合和第二类路径组合限制集合。将未完成预处理或预处理完成后的改进航路网络图记为G’=(N’,A’)。
作为上述方案的改进,所述路径组合限制预处理模块103包括第一类限制处理单元301,所述第一类限制处理单元301用于:
在所述航路网络图中确定多组所述第一节点对;
基于多组所述第一节点对中的每一组依次执行如下步骤:
在上一轮步骤执行完后的航路网络图中枚举以前节点为起点、后节点为终点的所有第一航路,将所述所有第一航路对应的所有边构成第一原有边集合;
复制所述第一原有边集合对应的除前节点以外的所有节点,以生成第一复制节点集合;其中,所述第一复制节点集合中的节点为复制节点;
复制上一轮步骤执行完后的航路网络图;其中,复制得到的航路网络图中的节点集合为原有节点集合;
基于所述第一复制节点集合,对复制得到的航路网络图进行路径组合限制预处理。
示例性的,针对R1中的每条“过X点后必须过Y点”类型的限制,将X点与Y点看作一组第一节点对,此时的X点为前节点,Y点为后节点,进行如下处理:枚举前节点X至后节点Y的所有第一航路,并将这些第一航路上所对应的所有边构成第一原有边集合AXY,对于AXY中的每条边,将这些边上除X外所有节点加入集合PXY,并为PXY中的节点生成对应的复制节点,加入第一复制节点集合PXY’。复制节点与对应的原有节点等价,在处理限制时,针对原有的节点的限制对复制节点也有效。需要说明的是,在第一轮步骤中,所述上一轮步骤执行完后的航路网络图,应理解为尚未基于R1进行路径组合限制预处理的航路网络图。在本实施例中,在对航路网络图进行路径组合限制预处理之前,参见图3,a点为前节点X,d点为后节点Y,此时过a点后必须过d点;在基于R1完成对航路网络图的路径组合限制预处理之后,参见图4,d1即d点的复制后节点。图4中实线边在图3的航路网络图中有相同的边,虚线边在图3的航路网络图中有对应的边。
作为上述方案的改进,基于所述第一复制节点集合,对复制得到的航路网络图进行路径组合限制预处理,具体包括:
在复制得到的航路网络图上执行如下操作:
加入所述第一复制节点集合中的所有节点;
若在所述原有节点集合中第一复制节点集合中复制节点所对应的各节点之间,在复制前的航路网络图上连接有边,则在加入的第一复制节点集合中对应的复制节点之间生成边;
删除前节点的所有出边,并为前节点对应生成新的出边,以分别连接到加入的第一复制节点集合中与所有删除的出边的终点对应的复制节点;
若所述原有节点集合中的后节点,在复制前的航路网络图上存在出边,则为加入的第一复制节点集合中的复制后节点对应生成出边,以分别连接至所述原有节点集合中后节点所有出边的终点。
示例性的,经过本实施例处理得到的航路网络图可以参见图4。
示例性的,将第一复制节点集合PXY’中的复制节点加入复制得到的航路网络图G’,并为它们生成边,方法如下:若PXY’中复制节点在G中对应的原有节点之间有边,则在G’中为对应的复制节点生成边。
修改G’中前节点X点的出边,方法如下:删掉X点所有出边并连接X点至原有出边终点对应的复制节点。
连接G’中后节点Y点的复制节点Y’至G’中的原有节点,方法如下:若G中有Y点至该原有节点的出边,在G’中生成对应的Y’至该原有节点的出边。
可以理解的是,对经过第一类路径组合限制处理后得到的改进航路网络图的有效性的证明如下:为证明对第一类路径组合限制的上述处理有效,需要证明以下三点:(1)G'中不含违反“过X点后必须过Y点”限制的路径;(2)G’中包含G中所有满足“过X点后必须过Y点”限制的路径;(3)G'中没有G中不存在的路径。
对于第(1)点:
用反证法证明:假设G’中存在一条由s点至t点的路径Ra过X点且不经过Y点或Y’点。设路径Ra上X的出边上的点为i,由上述处理步骤可知,G’中X所有出边上的点均属于第一复制节点集合PXY’,有i∈PXY’。由上述处理步骤可知,PXY’中所有复制节点均通过Y’连接至原有节点,因此i至t的路径必然经过Y’,与假设矛盾。可知G’中所有过X点的路径必过Y’,不含违反“过X点必过Y点”限制的路径。
对于第(2)点:
对于G中的任意一条s点至t点的合法路径Rb,若路径Rb不过X点,则路径Rb上的节点在G’中对应的节点均属于原有节点集合,由上述处理步骤可知,Rb上的边在G’中有相同的边,Rb在G’中有相同路径。若路径Rb过X点,则G中Rb必过Y点。将路径Rb分为三部分,其中Rb1为s点至X点的路径,Rb2为X点至Y点的路径,Rb3为Y点至t点的路径。其中s点至X点的路径Rb1上所有节点在G’中对应的节点均属于原有节点集合,因此Rb1上的边在G’中均有相同的边。根据上述处理步骤,X点至Y点的路径Rb2上除X外的节点在G’中均属于第一复制节点集合,因此Rb2上的边均在G’中有对应的边。根据上述处理步骤,Y’点复制了Y点所有出边且Y点至t点的路径Rb3上的其他节点均属于原有节点,因此Y点至t点的路径Rb3上的边在G’中也有对应或者相同的边。综上,Rb上的边均在G’中有对应的边,Rb在G’中有对应的路径,因此G’中包含G中所有满足“过X点后必须过Y点”限制的路径。
对于第(3)点:
由以上处理步骤可知,对于G’中起止点是i、j的边Rc,若i,j∈PXY’,则Rc在G中有对应的边。若则i、j均为原有节点,Rc在G中相同的边。若i∈PXY’且/>则只可能i为Y,Rc在G中有对应的边。若/>且j∈PXY’,则只可能i为X,Rc在G中有对应的边。因此G’中没有G中不存在的边,G’中没有G中不存在的路径。
作为上述方案的改进,所述路径组合限制预处理模块103包括第二类限制处理单元302,所述第二类限制处理单元302用于:
在所述航路网络图中确定多组所述第二节点对;
基于多组所述第二节点对中的每一组依次执行如下步骤:
在上一轮步骤执行完后的航路网络图中枚举以前节点为起点、后节点为终点的所有第二航路,将所述所有第二航路对应的所有边构成第二原有边集合;
将第二原有边集合对应的除前节点以外的所有节点加入第二节点集合,复制所述第二节点集合的所有节点,以生成第二复制节点集合;其中,所述第二复制节点集合中的节点为复制节点;
复制上一轮步骤执行完后的航路网络图;其中,复制得到的航路网络图中的节点集合为原有节点集合;
基于所述第二复制节点集合,对复制得到的航路网络图进行路径组合限制预处理。
示例性的,针对R2中的每条“过X点后不能过Y点”类型航路组合限制,,将X点与Y点看作一组第二节点对,此时的X点为前节点,Y点为后节点,对网络进行如下处理:枚举以前节点X为起点,后节点Y为终点的所有第二路径,并将这些第二路径上所对应的所有边构成第二原有边集合AXY,对于AXY中的每条边,将这些边上除X外所有节点加入第二节点集合PXY,并为PXY中的节点生成对应的复制节点并加入第二复制节点集合PXY’。复制节点与对应的原有节点等价,在处理限制时,针对原有的节点的限制对复制节点也有效。需要说明的是,在第一轮步骤中,所述上一轮步骤执行完后的航路网络图,应理解为尚未基于R2进行路径组合限制预处理的航路网络图。在本实施例中,参见图5或图6,b点为前节点X,e点为后节点Y,此时过b点就不能过e点。图5和图6中实线边在图3的航路网络图中有相同的边,虚线边在图3的航路网络图中有对应的边。
作为上述方案的改进,所述基于所述第二复制节点集合,对复制得到的航路网络图进行路径组合限制预处理,具体包括:
在复制得到的航路网络图上执行如下操作:
加入所述第二复制节点集合中的所有复制节点;
若在所述原有节点集合中第二复制节点集合中复制节点所对应的各节点之间,在复制前的航路网络图上连接有边,则在加入的第二复制节点集合中对应的复制节点之间生成边;
若所述第二节点集合中除后节点外的的节点在复制前的航路网络图上,存在连接至所述第二节点集合以外的节点的出边,则为加入的第二复制节点集合中对应的复制节点生成出边,以连接至所述原有节点集合中对应的出边终点;其中,加入的第二复制节点集合中的复制后节点出度为0,即没有出边;
删除前节点的所有出边,并为前节点对应生成新的出边,以分别连接到加入的第二复制节点集合中与所有删除的出边的终点对应的复制节点;
删除加入的第二复制节点集合中的复制后节点的所有入边及复制后节点;其中,后节点的入边为连接后节点且后节点为终点的边。
可以理解的是,如图5所示,其中b为第二节点对中的前节点,e为原有节点集合中的后节点,e1为加入的第二复制节点集合中的复制后节点。
应理解,本实施例处理后得到如图6所示的改进航路网络图,其中b为第二节点对中的前节点,e为原有节点集合中的后节点,相比图5,e1被删除。
示例性的,将第二复制节点集合PXY’中的复制节点加入复制得到的航路网络图G’,并为其中除Y’以外的复制节点生成边。方法如下:若PXY’中的除Y’以外的复制节点在G中对应的原有的节点之间有边,则在G’中为对应的复制节点之间生成边。
对于上述路径在G’中删掉路径上的第一条边,即上述路径上第二节点对的前节点X的出边,并为前节点对应生成新的出边,以分别连接到加入的第二复制节点集合中与所有删除的出边的终点对应的复制节点。
如PXY中除Y以外的节点在G中存在连接至PXY以外的节点的出边,则在G’中为该节点对应的复制节点生成出边,以连接至原有节点集合中对应的出边终点。对于Y’,其出度为0,即没有出边。
删掉复制后节点Y’的所有出边及复制后节点Y’。
可以理解的是,对经过第二类路径组合限制处理后得到的改进航路网络图的有效性的证明如下:为证明对第二类路径组合限制的上述处理有效,需要证明以下三点:(1)G'中不含违反“过X点后不能过Y点”类型限制的路径;(2)G’中包含G中所有的合法路径;(3)G'中没有G中不存在的路径。
对于第(1)点:
假设改进航路网络图G’中存在由s点至t点的一条路径Ra经过X点后经过Y点,设路径上Ra上X的出边上的点为i,因为X点所有出边上的节点均属于集合PXY’,则有i∈PXY’。根据上述处理步骤,PXY’中的节点不与Y连通,只与Y’连通,但Y’无出边,因此i无法通过Y’至t点,与假设矛盾。可知G’中所有过X点的路径必不过Y点或Y'点。G'中不含违反“过X点后不能过Y点”类型限制的路径。
对于第(2)点:
对于G中任意一条s点至t点的合法路径Rb,若路径Rb不过X点,可知路径Rb上所有的节点在G’中对应的节点均属于原有节点集合,因此路径Rb上所有的边在G’中均有相同的边。若路径Rb过X点,将路径Rb分为两部分,即s点至X点的路径Rb1,X点至t点的路径Rb2。其中s点至X点的路径Rb1上所有节点均属于原有节点集合,因此G’中均有相同的边。根据上述处理步骤,X点至t点的路径Rb2上的边在G’中均有对应的边,因此Rb在G’中有对应路径,G’中包含G中所有满足“过X点后不能过Y点”限制的路径。
对于第(3)点:
由以上处理步骤可知,对于G’中起止点是i、j的边Rc,若i,j∈PXY’,则Rc在G中有对应的边。若则i、j均为原有节点,Rc在G中相同的边。若i∈PXY’且/>则i为PXY’中不为Y’的节点,j为原有节点,Rc在G中有对应的边。若/>且j∈PXY’,则只可能i为X,Rc在G中有对应的边。因此G’中没有G中不存在的边,G’中没有G中不存在的路径。
本发明实施例还提供了一种航路搜索装置,用于:
响应于输入的起点和终点,采用预先配置的最短路径算法在改进航路网络图上搜索得到与输入的起点和终点对应的最短路径;
其中,所述改进航路网络图是根据上述任一项所述的航路数据处理方法获取到的;输入的起点和终点分别对应于所述改进航路网络图上的节点。
示例性的,所述最短路径算法包括Dijkstra算法,则所述采用预先配置的最短路径算法在所述改进航路网络图上搜索得到与所述起点和终点对应的最短路径,具体包括如下步骤:
步骤a:建立一个open list,一个close list,均始化为空,所有节点状态初始化为open;其中,节点状态为open表示相应节点可用,节点状态为close表示相应节点不可用。
步骤b:将起点S放入open list,成本设为0,若open list为空,则程序终止;
步骤c:若open list不为空,则从open list中找到成本最小的节点n;
步骤d:将节点n从open list中删除,若close list中已经包含节点n,则跳过,选取下一个节点,否则将节点n加入close list。若节点n为终点T,则找到一条路径。
步骤e:遍历节点n有出边的节点m,若节点m的状态不为close,则将其加入openlist并计算其成本;
步骤f:返回步骤c。
本发明实施例还提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的航路数据处理方法的步骤或者上述所述的航路搜索方法的步骤。
综上,本发明具有以下有益效果:
采用本发明实施例,通过获取航路数据;基于所述航路数据生成航路网络图,所述航路网络图为有向无环图;其中,所述航路网络图包括原有节点集合以及与所述原有节点集合对应的边集合;对所述航路网络图进行路径组合限制预处理,得到改进航路网络图,本发明实施例通过与预处理相关的数据处理保证解的合法性,避免在寻优过程中进行限制检查,极大地提高了寻优速度;当路径组合限制更新后,只需重新进行一次预处理,算法容易扩展;将与预处理相关的数据处理方法与不同的路径寻优算法结合,方便推广到其他问题的求解上。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。