CN116319517A - 一种最短路径确定方法及装置 - Google Patents

一种最短路径确定方法及装置 Download PDF

Info

Publication number
CN116319517A
CN116319517A CN202210457302.6A CN202210457302A CN116319517A CN 116319517 A CN116319517 A CN 116319517A CN 202210457302 A CN202210457302 A CN 202210457302A CN 116319517 A CN116319517 A CN 116319517A
Authority
CN
China
Prior art keywords
node
processed
weight
adjacent
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN202210457302.6A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wang Jufan
Original Assignee
Wang Jufan
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wang Jufan filed Critical Wang Jufan
Priority to CN202210457302.6A priority Critical patent/CN116319517A/zh
Publication of CN116319517A publication Critical patent/CN116319517A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/122Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/124Shortest path evaluation using a combination of metrics
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本文提供一种最短路径确定方法及装置,方法包括:根据节点关联信息,筛选包括第一节点、第二节点及待处理邻接边的路径寻优控制组;判断是否存在路径寻优控制组,若是执行后续步骤,若否根据已记录的路径信息生成最短路径;根据所有第一节点的累计权重,计算移动步长;将移动步长累加至各第一节点的累计权重中;根据各第一节点更新后的累计权重,确定从第一节点是否已到达第二节点;若否,则保持第一节点及第二节点状态不变;若是,记录第一节点与第二节点间的路径信息,设置第二节点的节点状态为正处理。本文使得每一次迭代都能确定出一个或多个节点的所有最短路径,能稳定地向其它未找到最短路径的节点逼近,具有时间复杂度低及效率高的优势。

Description

一种最短路径确定方法及装置
技术领域
本文涉及路径优化领域,尤其涉及一种最短路径确定方法及装置。
背景技术
最短路径问题是一个经典的组合优化问题,其在路由、导航、视频游戏、机器人、自然语言处理、图数据库和社交网络等众多领域有着广泛的应用,当代对它的研究已取得了非常多的成果,其中比较出色的基础算法有基于松弛操作的Dijkstra算法和Bellman-Ford算法及其众多的改进算法。
设S是已找到最短路径的节点集,Q为还未找到最短路径的节点集。Dijkstra算法对最近加入S中的节点u,以路径的权重值最小化为目标,考察每个与u邻接且不在S中的节点v,即在dist[u]+length(u,v)<dist[v]时,v的权重值dist[v]被dist[u]+length(u,v)替换,v的路径前驱pre[v]指向u。Dijkstra算法用松弛操作,为Q中节点在多个路径之间不断地选择权重值更小的路径,会重复更新Q中某些节点的路径信息,具体表现在:(1)Q中节点的路径信息在多次迭代之间可能被更新;(2)在每次迭代中对dist的扰动程度与u的出度正相关。以上两点使得新生成的u在Q中的维护成本大幅增加。因此,Dijkstra算法的两个主要操作,即u的选择和路径信息的更新,都因为松弛操作变得复杂起来。
在Dijkstra算法中,节点u的邻接边需要使用CPU执行路径信息的计算。松弛操作本质上是串行的,无法高效地利用计算机体系结构的数据级并行提高计算机系统运行最短路径问题解决系统的效率。克服松弛操作引发的寻路效率低的问题,寻求高效的基础最短路径算法,以充分利用最短路径问题内在的数据并行本质,对众多路径规划问题有重大意义。Dijkstra算法应用于链路状态协议(OSPF)时,OSPF算法需要通过链路状态通告(Link-State Advertisement,LSA)洪泛,使得一个区域(Area)内的所有路由器在其链路状态数据库中存储同样的网络拓扑结构。运行OSPF算法的路由器(root),以该路由器的链路状态数据库中存储的完整的网络拓扑结构为输入,利用Dijkstra算法计算以root为根的最短路径树。松弛机制既是OSPF算法成功的基础,也是其需要通过LSA洪泛获得区域完整的网络拓扑结构和低效根本原因。Bellman-Ford算法是距离向量路由选择算法的基础。运行距离向量路由选择算法的路由器,不需要存储所有的可达性信息,在邻居的距离向量发生变化时可根据邻居发送来的距离向量更新自身的距离向量,定期地把整个路由表(距离向量)发送给其所有邻居。距离向量路由选择算法定期地在邻居间分享整个路由表存在如下缺陷:(1)一个链接发送变化,其它节点可能会接到多次更新的距离向量,在多次更新自己的距离向量后,多次向邻居发送自身的距离向量;(2)使用松弛操作,用邻居分享的路由表更新自身的路由表,其中大部分计算都是无法避免的且对最终生成的最短路径树没有实际的作用。使用松弛操作导致的收敛慢且低效,是距离向量路由选择算法无法改变的特性。
发明内容
本文用于解决现有技术中最短路径方法因松弛机制存在时间复杂度高、路径寻优效率低的问题。
为了解决上述技术问题,本文的第一方面提供一种最短路径确定方法,初始化应用场景中节点数据,得到节点关联信息,所述节点关联信息包括节点标识、节点状态、节点累计权重、节点间邻接边和其权重,所述方法包括:
S1,为正处理状态的节点确定路径寻优控制组,其中,所述路径寻优控制组包括第一节点、第二节点及待处理邻接边,所述第一节点的节点状态为正处理,所述第二节点的节点状态为未处理,所述待处理邻接边为所述第一节点与所述第二节点间的邻接边,且为所述第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边;
S2,判断是否存在路径寻优控制组,若是,则继续步骤S3,若否,则根据已记录的路径信息生成最短路径树;
S3,根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长;
S4,将所述移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重;
S5,对每个路径寻优控制组中第一节点、第二节点及待处理邻接边,执行如下判断:
根据该第一节点更新后的累计权重及该待处理邻接边的权重,确定从该第一节点是否已到达该第二节点;
若否,则保持该第一节点及该第二节点的节点状态不变,继续执行步骤S1;
若是,则记录该第一节点与该第二节点间的路径信息,设置该第二节点的节点状态为正处理,继续执行步骤S1。
本文第二方面提供一种最短路径确定装置,初始化应用场景中的节点数据,得到节点关联信息,所述节点关联信息包括:节点标识、节点状态、节点的累计权重、节点间邻接边和其权重,所述装置包括:
筛选单元,用于为正处理状态的节点确定路径寻优控制组,其中,所述路径寻优控制组包括第一节点、第二节点及待处理邻接边,所述第一节点的节点状态为正处理,所述第二节点的节点状态为未处理,所述待处理邻接边为所述第一节点与所述第二节点间的邻接边,且为所述第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边;
路径确定单元,用于判断是否存在路径寻优控制组,若是,则启动步长计算单元,若否,则根据已记录的路径信息生成最短路径树;
步长计算单元,用于根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长;
累计权重更新单元,用于将所述移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重;
状态变更单元,用于对每个路径寻优控制组中第一节点、第二节点及待处理邻接边,执行如下判断:根据该第一节点更新后的累计权重及该待处理邻接边的权重,确定从该第一节点是否已到达该第二节点;若否,则保持该第一节点及该第二节点的节点状态不变;若是,则记录该第一节点与该第二节点间的路径信息,设置该第二节点的节点状态为正处理。
本文的第三方面提供一种分布式系统的最短路径确定方法,所述分布式系统包括起始路由器节点及普通路由器节点,其中,所述起始路由器节点维护正处理节点集、已处理节点集及本节点的邻接边信息;所述普通路由器节点维护正处理和已处理节点并集以及本节点的邻接边信息;所述最短路径确定方法包括:
所述起始路由器节点执行如下处理:S11,接收第一节点发送的待处理邻接边信息,所述待处理邻接边信息包括第一节点、第二节点、待处理邻接边及其权重、第一节点的累计权重,所述第一节点的节点状态为正处理,所述第二节点的节点状态为未处理,所述待处理邻接边为所述第一节点与所述第二节点间的邻接边,且为所述第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边;S12,根据待处理邻接边信息确定最短路径树,根据所有第一节点的累计权重及相关待处理邻接边的权重计算移动步长,根据各待处理邻接边信息更新正处理节点集及已处理节点集;S13,将所述移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重;根据各待处理邻接边信息中第一节点更新后的累计权重及待处理邻接边的权重,确定可达列表,所述可达列表包括第一节点可达到第二节点的待处理邻接边;发送所述起始路由器节点标识、移动步长及可达列表至正处理节点集中各节点;
所述正处理节点集中各节点执行如下处理:S21,接收所述起始路由器节点标识、移动步长及可达列表;S22,根据所述可达列表更新正处理和已处理节点并集,根据所述移动步长更新本节点待处理邻接边信息中第一节点的累计权重;S23,判断所述可达列表中是否存在本节点的待处理邻接边,若否,将本节点更新后待处理邻接边信息作为本节点下一待处理邻接边信息,若存在,则根据所述正处理和已处理节点并集、可达列表及本节点的邻接边信息确定下一待处理邻接边信息,发送正处理和已处理节点并集至可达列表中的第二节点,以由该第二节点生成待处理邻接边信息并发送至所述起始路由器节点;判断所述可达列表中是否存在本节点待处理邻接边邻接的第二节点,若存在,则根据所述正处理和已处理节点并集、可达列表及本节点的邻接边信息确定下一待处理邻接边信息;S24,发送所述下一待处理邻接边信息至所述起始路由器节点。
本文第四方面提供一种路由设备,包括存储器、处理器以及存储在所述存储器上的路径优化程序,所述路径优化程序被所述处理器运行时,执行根据前述任一最短路径确定方法的指令。
本文第五方面提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行根据前述任一最短路径确定方法的指令。
本文提供的最短路径确定方法及装置,通过为节点关联节点状态、节点累计权重及节点间邻接边权重,通过上述步骤S1至步骤S5(S1首次执行为初始化,从S2开始到下次S1执行完毕为一次迭代),根据路径寻优控制组能够算出一个或多个节点的所有最短路径,即本文能够使得每一次迭代精确地确定出一个或多个节点的最短路径,并通过重复执行步骤S1至步骤S5,能够稳定地向其它节点的最短路径逼近,邻接边的数量不会直接影响本文最短路径确定方法的时间复杂度,其时间复杂度与最短路径树的直径及每一层的宽度、第一节点权重值最大的邻接边和问题规模|V|正相关,本文方法的时间复杂度下限为Ω(|V|)、上限O(|V|2),能够降低时间复杂度,提高最短路径计算效率。
具体的,设|V|为偶数,假设每次迭代都增加一个新的正处理节点且原有正处理节点没有需要处理的邻接边,在邻接边线性表有序的情况下,最好时间复杂度为Ω(|V|)。如果每次迭代都增加一个新正处理节点且原有正处理节点一直有需要处理的邻接边,最差时间复杂度为O(|V|2)。设在本文中最短路径确定算法运行的过程中,每次迭代中处于正处理状态节点的数量从0递增到K0后,保持为K0不变,后又从K0递减为0。在这种理想情况下,其时间复杂度为O(K0|V|)。
进一步的,在并行计算环境中,为了提高最短路径查找系统的运行效率,可利用并行计算,如数据级并行,处理多个节点的累计权重及剩余权重。具体地,可把所有正处理状态节点的剩余权重或累计权重存储到对应的数组中,用向量操作计算剩余权重或累计权重,所述路径寻优控制组按照如下结构体进行设置:
{indexOfRemainder、indexOfReduced、from、to、index};
其中,indexOfRemainder为第一节点的剩余权重在数组中的索引,indexOfReduced为第一节点的累计权重在数组中的索引。数组中某些位置的元素可能没有索引指向,当数组的存储密度(数组中实际元素数量/(数组中元素的最大索引值+1))小于某临界值时,把数组中大索引指向的元素移到前面的空闲位置上,以提高数组的存储密度。具体可把数组划分为多个等长互不相交的子数组,每个数组用一个最小堆维护其空闲元素位置,优先使用更靠近数组头部的子数组,优先使用子数组中索引位置更小的存储空间,在存储密度小于某值时,把离数组头部最远的子数组存储的数据移动到其它子数组中。
为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本文实施例最短路径确定方法的一流程图;
图2示出了本文实施例路径寻优控制组确定过程的流程图;
图3示出了本文实施例最短路径确定方法的另一流程图;
图4示出了本文实施例最短路径确定方法的另一流程图;
图5示出了本文实施例非负加权图的示意图;
图6示出了本文实施例最短路径确定装置的结构图;
图7示出了本文实施例分布式系统的最短路径确定方法一流程图;
图8示出了本文实施例分布式系统的最短路径确定方法另一流程图;
图9A至图9F示出了最短路径寻找过程的分解示意图;
图10示出了本文实施例路由设备的结构图。
附图符号说明:
601、筛选单元;
602、路径确定单元;
603、步长计算单元;
604、累计权重更新单元;
605、状态变更单元;
1002、路由设备;
1004、处理器;
1006、存储器;
1008、驱动机构;
1010、输入/输出模块;
1012、输入设备;
1014、输出设备;
1016、呈现设备;
1018、图形用户接口;
1020、网络接口;
1022、通信链路;
1024、通信总线。
具体实施方式
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
需要说明的是,本文最短路径确定方法及装置可用于集中式及分布式的应用场景中,具体的,例如导航路径寻优、路由等,可抽象成为非负带权有向图的应用场景中,本文对最短路径确定方法及装置的应用领域不做限定。对于导航路径寻优,节点例如为从起点到终点中的路口等,确定出最短路径树之后,可按照最短路径树规划导航线路,驾驶设备(例如无人机、自动驾驶车)按照导航线路移动。对于路由寻优,节点为路由器,路由器基于区域(AREA)内Router-LSA所描述的网络拓扑结构确定节点信息,利用本文方法确定出最短路径树之后,在最短路径树的节点上添加存根网络,基于此为起始节点生成路由表,起始节点进一步根据路由表转发网络数据。在获取和处理节点的有序邻接边线性表时,特定应用场景会有某些特殊的限制或加入某些特定的功能与逻辑,以IPv4中的Router-LSA为例,其中的一个限制为如link链接到一个存根网络,则直接跳过该link,不需要加入到邻接边线性表中,其中的一个特殊逻辑为需要在迭代过程中更新TransitCapability。
现有技术中所使用的最短路径算法(例如基于Dijkstra和Bellman-Ford算法的最短路径优化算法)因使用松弛机制存在时间复杂度高、路径寻优效率低的问题。
为了解决上述技术问题,本文一实施例中,提供一种最短路径确定方法,该算法应用于独立于各节点的计算设备中,还可应用于各节点中,还可应用于部分节点中,具体根据应用场景而定,本文对此不作限定。
在应用本文最短路径确定方法之前需初始化应用场景中节点数据,得到节点关联信息,所述节点关联信息包括节点标识、节点状态、节点的累计权重、节点间的邻接边和其权重。节点的累计权重在初始状态下为0,用于表示沿有向边向前移动的距离。节点间的邻接边为节点之间的线路,其权重可根据实际应用场景而定,例如为两节点的距离。
具体的,如图1所示,最短路径确定方法包括:
步骤S1,为正处理状态的节点确定路径寻优控制组。
其中,路径寻优控制组包括第一节点、第二节点及待处理邻接边,待处理邻接边为第一节点与第二节点间的邻接边,且为第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边。
详细的说,初次迭代时,设置起始节点为正处理状态的节点。
步骤S2,判断是否存在路径寻优控制组,若是,则执行步骤S3,若否,则根据已记录的路径信息生成最短路径树,结束路径寻优过程。
步骤S3,根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长。
本步骤实施时,先利用每个路径寻优控制组中待处理邻接边的权重减去该路径寻优控制组中第一节点的累计权重,得到各第一节点对应的剩余权重;然后从各第一节点对应的剩余权重中,筛选出最小值作为移动步长。
步骤S4,将移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重。
假设累计权重用reduced[X1]表示,X1为第一节点标识,移动步长用minstep[X2]表示,则第一节点的累计权重利用如下公式计算:reduced[X1]+=minstep[X2]。
步骤S5,对每个路径寻优控制组中第一节点、第二节点及待处理邻接边,执行如下判断:
根据该第一节点更新后的累计权重及该待处理邻接边的权重,确定从该第一节点是否已到达该第二节点。具体的,比较第一节点更新后的累计权重与待处理邻接边权重的大小,若第一节点更新后的累计权重与待处理邻接边权重的大小相同,则确定从该第一节点已到达第二节点,反之,则从第一节点未到达第二节点。
若从该第一节点未到达第二节点,则保持该第一节点及该第二节点的节点状态不变,继续执行步骤S1。
若从该第一节点已到达第二节点,则记录该第一节点与该第二节点间的路径信息,设置该第二节点的节点状态为正处理,继续执行步骤S1。
详细的说,本实施例中的所有节点指的是应用场景中所包含的所有节点。具体实施时,本实施例中的所有节点还可仅包括用户指定的起始节点至目标节点之间的节点。
本实施例通过为节点关联节点状态、节点累计权重及节点间邻接边权重,通过上述步骤S1至步骤S5,使得每次迭代保证不跨越任何节点且移动相同的路径长度,能够避免引入松弛机制,保证每次迭代精确地确定出一个或多个节点的所有最短路径。
本文一实施例中,节点的状态包括已处理、正处理及未处理。具体实施时,为了便于区分正处理节点连接的未处理节点,可增加待处理的状态,将正处理节点连接的未处理节点的状态设置为待处理。正处理状态的节点指的是当前最短路径的边界节点,即已经找到最短路径信息但还有未处理邻接边的节点,本文中用from表示。待处理状态的节点指的是正处理状态的节点中最小未处理邻接边所指向的未处理节点,本文中用to表示。已处理状态的节点为已经找到最短路径且其邻接边均已处理完的节点。未处理状态的节点指的是除正处理、待处理、已处理状态外的节点。
节点间邻接边的状态包括:待处理、未处理及已处理。待处理邻接边为筛选出的用于确定最短路径的邻接边。已处理邻接边为from节点与to节点之间的邻接边且to节点为正处理和已处理状态的节点。未处理邻接边指的是从未被筛选为待处理邻接边的邻接边且to节点为未处理状态的节点。具体实施时,可通过依权重升序排列的邻接边线性表确定待处理、未处理及已处理邻接边,例如指针指向的邻接边为待处理邻接边,指针之前的邻接边为已处理邻接边,指针之后的邻接边为未处理邻接边。
如图2所示,上述步骤S1为正处理状态的节点确定路径寻优控制组包括:
步骤201,将正处理状态节点作为第一节点。
步骤202,对每一第一节点执行如下处理:
1)根据该第一节点的依权重升序排列的有序邻接边线性表,确定中间节点,若未查找到中间节点,则更改该第一节点的节点状态为已处理。
其中,中间节点为该第一节点邻接的未处理状态的节点。有序邻接边线性表中记录有该第一节点的邻接边、邻接边权重、邻接边所连节点(from节点及to节点),且邻接边线性表中记录的这些信息按照邻接边权重升序排列。本步骤实施时,先根据该第一节点的有序邻接边线性表确定与该第一节点邻接的节点,然后从确定出的节点中筛选出待处理状态或未处理状态的节点,将筛选出的节点作为中间节点。
2)筛选出该第一节点与中间节点间邻接边权重最小的邻接边作为待处理邻接边,将待处理邻接边对应的中间节点作为第二节点。
具体的,第一节点的有序邻接边线性表中设置有指针,且该指针指向最近待处理邻接边,步骤1)及步骤2)实施时,还可直接移动有序邻接边线性表中的指针,将指针指向的邻接边作为第一节点当前待处理邻接边,将当前待处理邻接边邻接的非第一节点作为第二节点。
3)由第一节点、第二节点及待处理邻接边构成路径寻优控制组。
本文一实施例中,存在如下情况,如图5所示,假设当前正处理节点为节点3及节点2,待处理邻接边为<2,5>及<3,4>,邻接边<3,5>为未处理邻接边,路径0->2->5、0->3->5、0->3->4的权重均为10,假设某次迭代后节点2可达到节点5,此时节点5的状态为已处理,按照前文的逻辑,节点3不会筛选出下一待处理邻接边<3,5>,但实际上,路径0->3->5与0->2->5权重相同,也就是说,0->3->5也是一最优路径,因此,在图5所示特殊场景下,前文的方法存在不能找出所有最优路径的问题,为了解决该技术问题,确定路径寻优控制组时,还对每一第一节点执行如下处理:
根据该第一节点的依权重升序排列的邻接边线性表,确定第三节点,其中,第三节点为该第一节点邻接的正处理状态或已处理状态的节点。以图5为例,第一节点为节点5、节点3、节点4,且假设节点5的最短路径权重为10,节点3最短路径权重为2,节点4最短路径权重为10,邻接边<3,5>权重为8,节点4及节点5没有第三节点,节点3的第三节点为节点5。
如果该第一节点的最短路径权重与该第一节点与该第三节点之间邻接边的权重之和等于该第三节点的最短路径权重,则记录该第一节点与该第三节点间的路径信息。以图5为例,节点3的最短路径权重2加上<3,5>的权重8等于节点5的最短路径权重10,则记录路径信息3->5。
本实施例根据节点状态及节点的有序邻接边线性表,能够快速确定路径寻优控制组。
本文一实施例中,为了进一步提高路径寻优控制组的确定效率,步骤S1实施时,对于每一正处理状态的节点可执行如下处理:
判断该正处理状态的节点在上一次迭代时是否为第一节点;
若是,则确定该正处理状态节点上一次迭代时的路径寻优控制组中第二节点的节点状态是否已变更为正处理或已处理;
若否,则利用上一次迭代时的路径寻优控制组更新本次迭代的路径寻优控制组;
若是,则为该正处理状态的节点确定路径寻优控制组。
若否,则为该正处理状态的节点确定路径寻优控制组。
为正处理状态节点确定路径寻优控制组时,先确定正处理节点是否具有待处理邻接边,若否,则设置正处理节点状态为已处理。
本文一实施例中,如图3所示,为了避免最小路径寻找过程中出现无效迭代进而影响最小路径的寻找速度,确定路径寻优控制组之后,还包括:
步骤S2’,判断是否至少两个当前路径寻优控制组中存在相同的第二节点。
若存在至少两个当前路径寻优控制组中存在相同的第二节点,则根据该第二节点所在路径中节点邻接边的权重计算该第二节点所在路径的权重。
若该第二节点所在路径的权重不同,则仅保留最小权重路径的当前路径寻优控制组,为其它当前路径寻优控制组中第一节点重新确定路径寻优控制组。若该第二节点所在路径的权重相同,则无需特殊处理。
本文所述其它当前路径寻优控制组指的是除去最小权重路径外的当前路径寻优控制组。
本实施例能够保证最短路径寻找过程中,去掉不必要的干扰线路,避免无效的迭代。
本文一实施例中,为了便于数据调用以及最短路径的寻找速度,所述节点关联信息还包括节点的剩余权重,所述第一节点的剩余权重为第一节点的待处理邻接边的权重与第一节点的累计权重之差。本文所述节点的剩余权重反映每次移动后第一节点到第二节点之间的剩余权重。假设剩余权重用remainder[X1]表示,累计权重用reduced[X1]表示,X1为第一节点标识,则第一节点的剩余权重利用如下公式计算:remainder[X1]-=minstep。
进一步的,步骤所述S4中,还在各第一节点的剩余权重中减去移动步长,以得到各第一节点更新后的剩余权重;所述路径寻优控制组按照如下结构体进行设置:
{remainder、reduced、from、to、index};
其中,remainder为第一节点的剩余权重,reduced为第一节点的累计权重,from为第一节点,to为第二节点,index为待处理邻接边<from,to>在依权重升序排列的邻接边线性表中的索引号。
进一步的,步骤所述S5根据该第一节点更新后的累计权重及待处理邻接边的权重,确定从该第一节点是否已到达该第二节点进一步为:根据该第一节点的剩余权重,确定从该第一节点是否已到达该第二节点。具体的,判断该第一节点的剩余权重是否为0,若该第一节点的剩余权重为0,则确定从该第一节点已到达该第二节点,若该第一节点的剩余权重为非0,则确定从该第一节点未到达该第二节点。
进一步的,如图4所示,确定出存在路径寻优控制组之后,还包括:
步骤S2”,判断是否至少两个当前路径寻优控制组中存在相同的第二节点;
若是,则比较具有相同第二节点的当前路径寻优控制组中第一节点的剩余权重;
若第一节点的剩余权重不同,则仅保留最小剩余权重的当前路径寻优控制组,为其它当前路径寻优控制组中第一节点重新确定路径寻优控制组。
本实施例相较于图2所示实施例,能够便捷快速去除冗余路径寻优控制组。使得根据历史路径寻优控制组能够快速准确地的确定最短路径树。
基于同一发明构思,本文还提供一种最短路径确定装置,如下面的实施例所述。由于最短路径确定装置解决问题的原理与最短路径确定方法相似,因此最短路径确定装置的实施可以参见最短路径确定方法,重复之处不再赘述。
具体的,如图6所示,最短路径确定装置包括:
筛选单元601,用于为正处理状态的节点确定路径寻优控制组,其中,所述路径寻优控制组包括:第一节点、第二节点、待处理邻接边,所述第一节点的节点状态为正处理,所述第二节点的节点状态为未处理,所述待处理邻接边为所述第一节点与所述第二节点间的邻接边,且为所述第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边;
路径确定单元602,用于判断是否存在路径寻优控制组,若是,则启动步长计算单元603,若否,则根据已记录的路径信息生成最短路径树。
步长计算单元603,用于根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长;
累计权重更新单元604,用于将所述移动步长累加至各第一节点的累计权重中,以得到各第一节点更新后的累计权重;
状态变更单元605,用于对每组路径寻优控制组,执行如下判断:
判断该路径寻优控制组中第一节点更新后的累计权重是否等于该组中待处理邻接边权重;
若否,则保持该路径寻优控制组中第一节点及第二节点状态不变;
若是,则记录该第一节点与该第二节点间的路径信息,设置该路径寻优控制组中第二节点的节点状态为正处理。
本实施例适用于集中式计算和分布式计算等应用场景中,具有稳定、收敛速度快的特点,可替IGP中的基于Dijkstra算法和Bellman-Ford算法等的路由算法,成为计算最佳路由的基础算法。
本文一实施例中,还提供一种应用于分布式系统的最短路径确定方法。具体的,分布式系统包括起始路由器节点、普通路由器节点及目标路由器节点。起始路由器节点通过普通路由器节点,把数据传递给目标路由器节点。
为了避免增加各起始路由器节点的存储负担以及降低起始路由器节点与其它节点之间的通信次数,具体实施时,起始路由器节点维护(即存储)正处理状态的节点集、已处理状态的节点集及本节点的邻接边信息(即邻接链路)。普通路由器节点维护正处理和已处理状态的节点并集以及本节点的邻接边信息。
具体的,如图7及图8所示,分布式系统的最短路径确定方法包括:
所述起始路由器节点执行如下处理:
步骤S11,接收第一节点发送的待处理邻接边信息。待处理邻接边信息包括正处理状态的第一节点、第二节点、待处理邻接边及其权重、第一节点的累计权重,第一节点的节点状态为正处理,第二节点的节点状态为未处理,待处理邻接边为第一节点与第二节点间的邻接边且第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边。
第一次迭代时,起始路由器节点的节点状态为正处理状态,即起始路由器节点为第一节点,本步骤实施时,接收第一节点发送的待处理邻接边信息指的是起始路由节点根据自身存储的邻接边信息确定的待处理邻接边信息。最短路径寻找之前,各节点的累计权重为0。
步骤S12,根据待处理邻接边信息确定最短路径树,根据所有第一节点的累计权重及相关待处理邻接边的权重计算移动步长,根据各待处理邻接边信息更新正处理节点集及已处理节点集。
本步骤实施时,根据待处理邻接边信息确定最短路径树为在已有最短路径树中新增待处理邻接边信息中第一节点与第二节点间的路径信息。
根据所有第一节点的累计权重及相关待处理邻接边的权重计算移动步长:对于每一第一节点,先利用该第一节点相关待处理邻接边的权重减去该第一节点的累计权重,得到该第一节点的剩余权重;然后从所有第一节点的剩余权重中筛选出最小值作为移动步长。
本步骤实施时,根据增量的待处理邻接边信息更新正处理节点集及已处理节点集包括:从增量的待处理邻接边信息中筛选出第一节点,将筛选出的第一节点的状态设置为正处理状态;将当前正处理状态的第一节点(假设为第n最短路径确定的迭代过程,n为正整数)与历史正处理状态的第一节点(即前n-1次最短路径确定的迭代过程)进行比较,从历史正处理状态的第一节点中筛选出不在当前正处理状态的第一节点,设置这些节点的状态为已处理状态。
实际应用时步骤S11接收待处理邻接边信息时因网络拥塞、链路断开等因素存在部分待处理邻接边信息延迟接收的问题,为了避免影响步骤S12的实施,可设置某种机制(如时长)来规避。例如,最快的返回时间为t0,如果某些第一路由器返回时长大于k*t0时,则在不再等待未返回的待处理邻接边信息,而直接进行下一次的迭代,把返回慢的待处理邻接边信息视为下一次迭代的返回数据。
步骤S13,将移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重;根据各待处理邻接边信息中第一节点更新后的累计权重及待处理邻接边的权,确定可达列表,所述可达列表包括第一节点可达到第二节点的待处理邻接边。
一些实施方式中,根据各待处理邻接边信息中第一节点更新后的累计权重及待处理邻接边的权重确定可达列表包括:根据各待处理邻接边信息中待处理邻接边的权重减去第一节点更新后的累计权重,得到第一节点的剩余权重;判断第一节点的剩余权重是否为0,若为0,则确定待处理邻接边信息中第一节点可达到第二节点,将待处理邻接边信息中待处理邻接边新增至可达列表中。
其它实施方式中,根据各待处理邻接边信息中第一节点更新后的累计权重及待处理邻接边的权重确定可达列表包括:判断各待处理邻接边信息中第一节点更新后的累计权重是否等于待处理邻接边的权重,若是,则确定待处理邻接边信息中第一节点可达到第二节点。
步骤S14,发送起始路由器节点标识、移动步长及可达列表至正处理节点集中各节点。
起始路由器节点得到最终的最短路径树后,在最短路径树的节点上添加存根网络,基于最短路径树和加入的存根网络,为起始节点生成路由表,起始节点根据路由表转发数据至目的节点。
所述正处理节点集中各节点执行如下处理:
步骤S21,接收起始路由器节点标识、移动步长及可达列表。
步骤S22,根据可达列表更新正处理和已处理节点并集,根据移动步长更新待处理邻接边信息中本节点的累计权重。
本步骤实施时,将可达列表中待处理邻接边的第二节点更新至正处理和已处理节点并集中。
步骤S23,判断可达列表中是否存在本节点待处理邻接边信息中的待处理邻接边。
若否,则说明从第一节点未到达第二节点,判断可达列表中是否存在本节点待处理邻接边信息中的第二节点。
若是,则说明其它节点已经可以达到第二节点,根据正处理和已处理节点并集、可达列表及本节点的邻接边信息确定本节点的下一待处理邻接边信息。
若否,则说明从其它节点也未到达第二节点,将本节点更新后待处理邻接边信息作为本节点的下一待处理邻接边信息。
若是,则说明第一节点能达到第二节点,根据正处理和已处理节点并集、可达列表及本节点的邻接边信息确定本节点的下一待处理邻接边信息,发送正处理和已处理节点并集至可达列表中的第二节点,以由该第二节点生成待处理邻接边信息并发送至起始路由器节点。
S24,发送下一待处理邻接边信息至起始路由器节点。
进一步的,当第一节点没有下一待处理邻接边时,发送一串特殊信息(如第一节点,-1,-1)给起始路由器节点。由起始路由器节点根据特殊信息删除第一节点对应的路径寻优控制组。
进一步的,起始路由器节点确定出最短路径树后,还包括:在最短路径树的各节点中添加存根网络,得到路由信息;根据路由信息转发网络数据。
进一步的可根据路径寻优控制组是否变更第二节点决定是否发送下一待处理邻接边信息至起始路由器节点,即在路径寻优控制组变更第二节点时其第一节点发送下一待处理邻接边信息至起始路由器节点。
本步骤实施时,根据正处理和已处理节点并集、可达列表及本节点的邻接边信息确定本节点的下一待处理邻接边信息包括:将可达列表中本节点的待处理邻接边设置为已处理,从邻接边信息中筛选出已处理邻接边之外的权重最小的邻接边为下一待处理邻接边,根据待处理邻接边信息的数据格式构建待处理邻接边信息。
本实施例中的起始路由器节点中不需要存储整个网络的拓扑结构,能够大幅度降低对起始路由器节点的资源消耗,提高最短路径确定效率。
本文一实施例中,为了获得全量最短路径树,正处理节点集中各节点还执行如下处理:根据正处理和已处理节点并集及本节点的邻接边信息确定第三节点;如果本节点的最短路径权重与本节点与该第三节点之间邻接边的权重之和等于该第三节点的最短路径权重,则记录本节点与该第三节点间的新增路径信息,发送新增路径信息至起始路由器节点;
起始路由器节点根据待处理邻接边信息确定最短路径树进一步为根据新增路径信息及待处理邻接边信息确定最短路径树。
本文一实施例中,为了进一步节省起始路由器节点的算力,步骤S23还包括:根据本第一节点更新后的累计权重及第一节点对应的待处理邻接边,计算本第一节点的剩余权重;利用第一节点的剩余权重替代待处理邻接边信息中的第一节点的累计权重。
步骤S21根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长进一步为:从所有第一节点的剩余权重中筛选出最小值作为移动步长。
本文一实施例中,当分布式系统中始发节点链路状态发生变化时,由该始发节点生成链路状态变化信息。具体的,根据该始发节点新的链路状态数据(例如链路状态通告Router-LSA)与该始发节点原链路状态数据之间的区别生成该始发节点的链路状态变化信息。通过该始发节点生成的最短路径树将链路状态变化信息发送至其它节点,以由其它节点根据自身的最短路径树和路由更新策略,确定是否需要重新计算路由信息。
本实施例能够在节点链路状态发送变化时,通过捕获链路状态变化的路由器节点在构建最短路径树的过程中,把链路状态变化信息以新建立的最佳路径传输给其它节点。其它路由器节点根据自身的最短路径树和路由更新策略,确定是否需要重新计算路最短路径树,进而修正路由信息。
为了更清楚说明本文技术方案,下面以一具体实施例进行详细说明。具体的,如图9A至图9F所示,其中,图9A为初始化应用场景中节点数据得到的非负加权图,图中圆圈为节点,圆圈中的数字为节点标识,箭头线为邻接边,箭头线上的数字为邻接边权重,假设起始节点为0,则节点0至其它节点(终点)的最短路径为:
节点0到节点1的最短路径为0->1,最短路径的权重为1;
节点0到节点2的最短路径为0->3->5->2和0->1->4->5->2,权重为6;
节点0到节点3的最短路径为0->3,路径权重为2;
节点0到节点4的最短路径为0->1->4,路径权重为3;
节点0到节点5的最短路径为0->3->5和0->1->4->5,路径权重为5;
节点0到节点6的最短路径为0->3->6,路径权重为6。
下面详细说明利用本文所述的最短路径确定方法生成上述最短路径过程:
(1)初始化迭代,得到step=0:reduced[0]=0;nextedge(0)=<0,1>。
具体的,设定节点0为正处理节点,节点0的累计权重记为reduced[0]=0。本文所述正处理节点指的是节点的状态为正处理。
节点0的未处理邻接边为<0,1>、<0,3>、<0,2>,从中筛选出权重最小的邻接边为待处理邻接边,即nextedge(0)=<0,1>。
(2)step=1:
minstep(1)=min(wedge(0,1)-reduced[0])=1;
reduced[0]=reduced[0]+minstep(1)=0+1=1;nextedge(0)=<0,3>;
reduced[1]=0;nextedge(1)=<1,4>。
具体的,根据待处理邻接边<0,1>的权重及节点0的累计权重计算本次迭代的移动步长:minstep(1)=min(wedge(0,1)-reduced[0])=1。
将移动步长累加至节点0的累计权重上,得到节点0更新后的累计权重:reduced[0]=reduced[0]+minstep(1)=0+1=1。
通过比较更新后累计权重与节点0的待处理邻接边<0,1>的权重可知,从节点0已到达节点1,则从节点0的剩余未处理邻接边中筛选出权重最小的邻接边作为待处理邻接边,即nextedge(0)=<0,3>。
因从节点0已到达节点1,因此,节点1也为正处理节点,初始化节点1的累计权重得到reduced[1]=0,从节点1的未处理邻接边中筛选出待处理邻接边为nextedge(1)=<1,4>。
(3)step=2:
minstep(2)=min(wedge(0,3)-reduced[0],wedge(1,4)-reduced[1])=min(2-1,2-0)=1;
reduced[0]=reduced[0]+minstep(2)=1+1=2;nextedge(0)=<0,2>;
reduced[1]=reduced[1]+minstep(2)=0+1=1;nextedge(1)=<1,4>;
reduced[3]=0;nextedge(3)=<3,5>。
具体的,根据待处理邻接边<0,3>及<1,4>的权重,节点0和节点1的累计权重计算本次迭代的移动步长:
minstep(2)=min(wedge(0,3)-reduced[0],wedge(1,4)-reduced[1])=min(2-1,2-0)=1。
将移动步长累加至正处理节点0及节点1中,得到节点0及节点1更新后的累计权重:reduced[0]=reduced[0]+minstep(2)=1+1=2;reduced[1]=reduced[1]+minstep(2)=0+1=1。
通过比较节点0更新后累计权重与节点0待处理邻接边<0,3>的权重可知,从节点0已到达节点3,则从节点0的剩余未处理邻接边中筛选出权重最小的邻接边作为待处理邻接边,即nextedge(0)=<0,2>。
通过比较节点1更新后累计权重与节点1待处理邻接边<1,4>的权重可知,从节点1未到达节点4,则节点1的待处理邻接边不变,仍为nextedge(1)=<1,4>。
因从节点0已到达节点3,所以节点3也为正处理节点,初始化节点3的累计权重得到reduced[3]=0。从节点3的未处理邻接边<3,1>、<3,6>、<3,5>中筛选出待处理邻接边为nextedge(3)=<3,5>。
(4)step=3:
minstep(3)=min(wedge(3,5)-reduced[3]),wedge(1,4)-reduced[1],wedge(0,2)-reduced[0])=min(3-0,2-1,8-2)=1;
reduced[0]=reduced[0]+minstep(3)=2+1=3;nextedge(0)=<0,2>;
reduced[1]=reduced[1]+minstep(3)=1+1=2;nextedge(1)不存在;
reduced[3]=reduced[3]+minstep(3)=0+1=1;nextedge(3)=<3,5>;
reduced[4]=0;nextedge(4)=(4,5)。
具体的,根据待处理邻接边<0,2>、<1,4>及<3,5>的权重,节点0、节点1及节点3的累计权重计算本次迭代的移动步长:
minstep(3)=min(wedge(3,5)-reduced[3]),wedge(1,4)-reduced[1],wedge(0,2)-reduced[0])=min(3-0,2-1,8-2)=1。
将移动步长累加至正处理节点0、节点1及节点3中,得到节点0、节点1及节点3更新后的累计权重:reduced[0]=reduced[0]+minstep(3)=2+1=3;reduced[1]=reduced[1]+minstep(3)=1+1=2;reduced[3]=reduced[3]+minstep(3)=0+1=1。
通过比较节点0更新后累计权重与节点0待处理邻接边<0,3>的权重可知,从节点0未到达节点2,则节点0的待处理邻接边保持不变,仍为nextedge(0)=<0,2>。
通过比较节点1更新后累计权重与节点1待处理邻接边<1,4>的权重可知,从节点1已到达节点4,则通过图9A可知,节点1具有未处理邻接边<1,3>,但此时节点3为正处理状态,由此可知节点1不存在待处理邻接边,节点1的状态为已完成。
通过比较节点3更新后累计权重与节点3待处理邻接边<3,5>的权重可知,从节点3未到达节点5,则节点3的待处理邻接边不变,仍为nextedge(3)=<3,5>。
因从节点1已到达节点4,所以节点4也为正处理节点,初始化节点4的累计权重得到reduced[4]=0。从节点4的未处理邻接边<4,5>为待处理邻接边为nextedge(4)=<4,5>。此处通过分析可知有两个待处理邻接边的to节点相同,两个路径的权重相等,则两个路径均为最短路径。
(5)step=4:
minstep(4)=min(wedge(0,2)-reduced[0]),wedge(3,5)-reduced[3]),wedge(4,5)-reduced[4])=min(8-3,3-1,2-0)=2;
reduced[0]=reduced[0]+minstep(4)=3+2=5;nextedge(0)不存在;
reduced[3]=reduced[3]+minstep(4)=1+2=3;nextedge(3)=<3,6>;
reduced[4]=reduced[4]+minstep(4)=2;nextedge(4)不存在;
reduced[5]=0;nextedge(5)=<5,2>。
wedge(5,2)-reduced[5]==1,wedge(0,2)-reduced[0]==3,<5,2>替换<0,2>。
具体的,根据待处理邻接边<0,2>、<3,5>及<4,5>的权重,节点0、节点3及节点4的累计权重,计算本次迭代的移动步长:
minstep(4)=min(wedge(0,2)-reduced[0]),wedge(3,5)-reduced[3]),wedge(4,5)-reduced[4])=min(8-3,3-1,2-0)=2。
将移动步长累加至节点0、节点3及节点4中,得到节点0、节点3及节点4更新后的累计权重:reduced[0]=reduced[0]+minstep(4)=3+2=5;reduced[3]=reduced[3]+minstep(4)=1+2=3;reduced[4]=reduced[4]+minstep(4)=2。
通过比较节点0更新后累计权重与节点0待处理邻接边<0,2>的权重可知,节点0不能达到节点2,则节点0的待处理邻接边不变,仍为nextedge(0)=<0,2>。
通过比较节点3更新后累计权重与节点3待处理邻接边<3,5>权重可知,从节点3已到达节点5,则从节点3的剩余未处理邻接边中筛选出权重最小的邻接边作为待处理邻接边,即nextedge(3)=<3,6>。
通过比较节点4更新后累计权重与节点4待处理邻接边<4,5>权重可知,从节点4已到达节点5,则通过图9A可知,节点4具有未处理邻接边<4,1>,但此时节点1已完成,因此可知节点4不存在待处理邻接边,节点4的状态为已完成。
因从节点4已到达节点5,所以节点5也为正处理节点,初始化节点5的累计权重reduced[5]=0,nextedge(5)=<5,2>。
此时,通过分析可知有两个待处理邻接边的to节点相同,均为2,这两个路径的权重不等,因此,仅保留权重最小路径的待处理邻接边,本实施例中用<5,2>替换<0,2>。
(6)step=5:
minstep(5)=min(wedge(5,2)-reduced[5],wedge(3,6)-reduced[3])=min(1-0,4-3)=1;
reduced[3]=reduced[3]+minstep(5)=3+1=4;nextedge(3)不存在;
reduced[5]=reduced[5]+minstep(5)=0+1=1;nextedge(5)不存在;
reduced[2]=0;nextedge(2)不存在;
reduced[6]=0;nextedge(6)不存在。
具体的,根据待处理邻接边<3,6>及<5,2>、节点3及节点5的累计权重计算本次迭代的移动步长:minstep(5)=min(wedge(5,2)-reduced[5],wedge(3,6)-reduced[3])=min(1-0,4-3)=1。
将移动步长累加至节点3及节点5中,得到节点3及节点5更新后累计权重:reduced[3]=reduced[3]+minstep(5)=3+1=4;reduced[5]=reduced[5]+minstep(5)=0+1=1。
通过比较节点3更新后累计权重与节点3待处理邻接边<3,6>的权重可知,从节点3已到达节点6,且通过图9A可知,节点3没有未处理的邻接边,则此时节点3的状态为已完成。
通过比较节点5更新后累计权重与节点2待处理邻接边<5,2>的权重可知,从节点5已到达节点2,且通过图9A可知,节点5没有未处理的邻接边,则此时节点5的状态为已完成。
节点2及节点6也不存在未处理邻接边,则图9F即为最终生成的最短路径树,由该最短路径树可确定任意两个节点间的最短路径。
本文一实施例中,还提供一种路由设备,如图10所示,路由设备1002可以包括一个或多个处理器1004,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。路由设备1002还可以包括任何存储器1006,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器1006可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示路由设备1002的固定或可移除部件。在一种情况下,当处理器1004执行被存储在任何存储器或存储器的组合中的相关联的指令时,路由设备1002可以执行相关联指令的任一操作。路由设备1002还包括用于与任何存储器交互的一个或多个驱动机构1008,诸如硬盘驱动机构、光盘驱动机构等。
路由设备1002还可以包括输入/输出模块1010(I/O),其用于接收各种输入(经由输入设备1012)和用于提供各种输出(经由输出设备1014))。一个具体输出机构可以包括呈现设备1016和相关联的图形用户接口1018(GUI)。在其他实施例中,还可以不包括输入/输出模块1010(I/O)、输入设备1012以及输出设备1014,仅作为网络中的一台计算机设备。路由设备1002还可以包括一个或多个网络接口1020,其用于经由一个或多个通信链路1022与其他设备交换数据。一个或多个通信总线1024将上文所描述的部件耦合在一起。
通信链路1022可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路1022可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
对应于图1-图4、图8中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图1-图4、图8所示的方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。

Claims (14)

1.一种最短路径确定方法,其特征在于,初始化应用场景中节点数据,得到节点关联信息,所述节点关联信息包括节点标识、节点状态、节点累计权重、节点间邻接边和其权重,所述方法包括:
S1,为正处理状态的节点确定路径寻优控制组,其中,所述路径寻优控制组包括第一节点、第二节点及待处理邻接边,所述第一节点的节点状态为正处理,所述第二节点的节点状态为未处理,所述待处理邻接边为所述第一节点与所述第二节点间的邻接边,且为所述第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边;
S2,判断是否存在路径寻优控制组,若是,则执行步骤S3,若否,则根据已记录的路径信息生成最短路径树;
S3,根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长;
S4,将所述移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重;
S5,对每个路径寻优控制组中第一节点、第二节点及待处理邻接边,执行如下判断:
根据该第一节点更新后的累计权重及该待处理邻接边的权重,确定从该第一节点是否已到达该第二节点;
若否,则保持该第一节点及该第二节点的节点状态不变,继续执行步骤S1;
若是,则记录该第一节点与该第二节点间的路径信息,设置该第二节点的节点状态为正处理,继续执行步骤S1。
2.如权利要求1所述的方法,其特征在于,根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长包括:
利用每个路径寻优控制组中待处理邻接边的权重减去该路径寻优控制组中第一节点的累计权重,得到各第一节点的剩余权重;
从各第一节点的剩余权重中,筛选出最小值作为移动步长。
3.如权利要求1所述的方法,其特征在于,所述节点状态包括已处理、正处理及未处理;
为正处理状态的节点确定路径寻优控制组包括:
将正处理状态的节点作为第一节点;
对每一第一节点执行如下处理:
根据该第一节点的依权重升序排列的邻接边线性表,确定中间节点,其中,所述中间节点为该第一节点邻接的未处理状态的节点,若未查找到中间节点,则更改该第一节点的节点状态为已处理;
筛选出该第一节点与中间节点间邻接边权重最小的邻接边作为待处理邻接边,将待处理邻接边对应的中间节点作为第二节点。
4.如权利要求3所述的方法,其特征在于,对每一第一节点执行如下处理还包括:
根据该第一节点的依权重升序排列的邻接边线性表,确定第三节点,其中,所述第三节点为该第一节点邻接的正处理状态或已处理状态的节点;
如果该第一节点的最短路径权重与该第一节点与该第三节点之间邻接边的权重之和等于该第三节点的最短路径权重,则记录该第一节点与该第三节点间的路径信息。
5.如权利要求1所述的方法,其特征在于,确定路径寻优控制组之后,还包括:
判断是否至少两个当前路径寻优控制组中存在相同的第二节点;
若是,则根据该第二节点所在路径中节点邻接边的权重计算该第二节点所在路径的权重;
若该第二节点所在路径的权重不同,则仅保留最小权重路径的当前路径寻优控制组,为其它当前路径寻优控制组中第一节点重新确定路径寻优控制组。
6.如权利要求1所述的方法,其特征在于,所述节点关联信息还包括节点的剩余权重,所述第一节点的剩余权重为第一节点对应的待处理邻接边的权重与所述第一节点的累计权重之差;
所述S4中还在各第一节点的剩余权重中减去移动步长,得到各第一节点更新后的剩余权重;所述路径寻优控制组按照如下结构体进行设置:
{remainder、reduced、from、to、index};
其中,remainder为第一节点的剩余权重,reduced为第一节点的累计权重,from为第一节点,to为第二节点,index为待处理邻接边<from,to>在依权重升序排列的邻接边线性表中的索引号;
所述S5根据该第一节点更新后的累计权重及待处理邻接边的权重,确定从该第一节点是否已到达该第二节点进一步为:根据该第一节点的剩余权重,确定从该第一节点是否已到达该第二节点。
7.如权利要求6所述的方法,其特征在于,确定路径寻优控制组之后,还包括:
判断是否至少两个当前路径寻优控制组中存在相同的第二节点;
若是,则比较具有相同第二节点的当前路径寻优控制组中第一节点的剩余权重;
若第一节点的剩余权重不同,则仅保留最小剩余权重的当前路径寻优控制组,为其它当前路径寻优控制组中第一节点重新确定路径寻优控制组。
8.一种最短路径确定装置,其特征在于,初始化应用场景中的节点数据,得到节点关联信息,所述节点关联信息包括:节点标识、节点状态、节点的累计权重、节点间邻接边和其权重,所述装置包括:
筛选单元,用于为正处理状态的节点确定路径寻优控制组,其中,所述路径寻优控制组包括第一节点、第二节点及待处理邻接边,所述第一节点的节点状态为正处理,所述第二节点的节点状态为未处理,所述待处理邻接边为所述第一节点与所述第二节点间的邻接边,且为所述第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边;
路径确定单元,用于判断是否存在路径寻优控制组,若是,则启动步长计算单元,若否,则根据已记录的路径信息生成最短路径树;
步长计算单元,用于根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长;
累计权重更新单元,用于将所述移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重;
状态变更单元,用于对每个路径寻优控制组中第一节点、第二节点及待处理邻接边,执行如下判断:根据该第一节点更新后的累计权重及该待处理邻接边的权重,确定从该第一节点是否已到达该第二节点;若否,则保持该第一节点及该第二节点的节点状态不变;若是,则记录该第一节点与该第二节点间的路径信息,设置该第二节点的节点状态为正处理。
9.一种分布式系统的最短路径确定方法,其特征在于,所述分布式系统包括起始路由器节点及普通路由器节点,其中,所述起始路由器节点维护正处理节点集、已处理节点集及本节点的邻接边信息;所述普通路由器节点维护正处理和已处理节点并集以及本节点的邻接边信息;所述最短路径确定方法包括:
所述起始路由器节点执行如下处理:S11,接收第一节点发送的待处理邻接边信息,所述待处理邻接边信息包括第一节点、第二节点、待处理邻接边及其权重、第一节点的累计权重,所述第一节点的节点状态为正处理,所述第二节点的节点状态为未处理,所述待处理邻接边为所述第一节点与所述第二节点间的邻接边,且为所述第一节点与其邻接的所有未处理状态的节点间权重最小的邻接边;S12,根据待处理邻接边信息确定最短路径树,根据所有第一节点的累计权重及相关待处理邻接边的权重计算移动步长,根据各待处理邻接边信息更新正处理节点集及已处理节点集;S13,将所述移动步长累加至各第一节点的累计权重中,得到各第一节点更新后的累计权重;根据各待处理邻接边信息中第一节点更新后的累计权重及待处理邻接边的权重,确定可达列表,所述可达列表包括第一节点可达到第二节点的待处理邻接边;发送所述起始路由器节点标识、移动步长及可达列表至正处理节点集中各节点;
所述正处理节点集中各节点执行如下处理:S21,接收所述起始路由器节点标识、移动步长及可达列表;S22,根据所述可达列表更新正处理和已处理节点并集,根据所述移动步长更新本节点待处理邻接边信息中第一节点的累计权重;S23,判断所述可达列表中是否存在本节点的待处理邻接边,若否,将本节点更新后待处理邻接边信息作为本节点下一待处理邻接边信息,若存在,则根据所述正处理和已处理节点并集、可达列表及本节点的邻接边信息确定下一待处理邻接边信息,发送正处理和已处理节点并集至可达列表中的第二节点,以由该第二节点生成待处理邻接边信息并发送至所述起始路由器节点;判断所述可达列表中是否存在本节点待处理邻接边连接的第二节点,若存在,则根据所述正处理和已处理节点并集、可达列表及本节点的邻接边信息确定下一待处理邻接边信息;S24,发送所述下一待处理邻接边信息至所述起始路由器节点。
10.如权利要求9所述的方法,其特征在于,所述正处理节点集中各节点还执行如下处理:根据所述正处理和已处理节点并集及本节点的邻接边信息确定第三节点;如果本节点的最短路径权重与本节点与该第三节点之间邻接边的权重之和等于该第三节点的最短路径权重,则记录本节点与该第三节点间的新增路径信息,发送所述新增路径信息至所述起始路由器节点;
所述起始路由器节点根据待处理邻接边信息确定最短路径树进一步为根据所述新增路径信息及待处理邻接边信息确定最短路径树。
11.如权利要求9所述的方法,其特征在于,所述S22还包括:根据本节点更新后的累计权重及本节点的待处理邻接边,计算本节点的剩余权重;利用本节点的剩余权重替代所述待处理邻接边信息中本节点的累计权重;
所述S12根据所有第一节点的累计权重及相关待处理邻接边的权重,计算移动步长进一步为:从所有第一节点的剩余权重中筛选出最小值作为移动步长。
12.如权利要求9所述的方法,其特征在于,还包括:
所述分布式系统中始发节点链路状态发生变化时,由该始发节点生成链路状态变化信息,通过该始发节点生成的最短路径树将链路状态变化信息发送至其它节点,以由其它节点根据自身的最短路径树和路由更新策略,确定是否需要重新计算路由信息。
13.一种路由设备,其特征在于,包括存储器、处理器以及存储在所述存储器上的路径优化程序,所述路径优化程序被所述处理器运行时,执行根据权利要求1-7任意一项所述方法的指令。
14.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机设备的处理器运行时,执行根据权利要求1-7任意一项所述方法的指令。
CN202210457302.6A 2022-04-28 2022-04-28 一种最短路径确定方法及装置 Withdrawn CN116319517A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210457302.6A CN116319517A (zh) 2022-04-28 2022-04-28 一种最短路径确定方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210457302.6A CN116319517A (zh) 2022-04-28 2022-04-28 一种最短路径确定方法及装置

Publications (1)

Publication Number Publication Date
CN116319517A true CN116319517A (zh) 2023-06-23

Family

ID=86834616

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210457302.6A Withdrawn CN116319517A (zh) 2022-04-28 2022-04-28 一种最短路径确定方法及装置

Country Status (1)

Country Link
CN (1) CN116319517A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116760761A (zh) * 2023-08-16 2023-09-15 摩尔线程智能科技(北京)有限责任公司 路径创建方法、数据处理系统、控制器、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010127527A1 (zh) * 2009-05-06 2010-11-11 中兴通讯股份有限公司 在邻接节点间多边条件下实现k优路径算法的方法及装置
CN104581817A (zh) * 2014-12-19 2015-04-29 中国科学院上海微系统与信息技术研究所 一种移动自组织网络中动态最短路径加权路由方法
CN105740964A (zh) * 2014-12-08 2016-07-06 吉林大学 一种城市路网数据组织与最短路径快速计算方法
RU2700547C1 (ru) * 2019-01-09 2019-09-17 Общество с ограниченной ответственностью "СЕТЕВОЙ ИНТЕЛЛЕКТ" Способ нахождения надежных кратчайших путей в сети связи

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010127527A1 (zh) * 2009-05-06 2010-11-11 中兴通讯股份有限公司 在邻接节点间多边条件下实现k优路径算法的方法及装置
CN105740964A (zh) * 2014-12-08 2016-07-06 吉林大学 一种城市路网数据组织与最短路径快速计算方法
CN104581817A (zh) * 2014-12-19 2015-04-29 中国科学院上海微系统与信息技术研究所 一种移动自组织网络中动态最短路径加权路由方法
RU2700547C1 (ru) * 2019-01-09 2019-09-17 Общество с ограниченной ответственностью "СЕТЕВОЙ ИНТЕЛЛЕКТ" Способ нахождения надежных кратчайших путей в сети связи

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A. V. SHVEDOV; D. V. GADASIN; O. G. KLYGINA: "Determining Shortest Paths between Two Arbitrary Nodes in a Composite Transport Network Using Segment Routing", 《2021 SYSTEMS OF SIGNALS GENERATING AND PROCESSING IN THE FIELD OF ON BOARD COMMUNICATIONS》, 31 December 2021 (2021-12-31) *
蔡俊;李钦富;王金泉;: "一种Dijkstra优化算法的研究与实现", 信息技术, no. 04, 25 April 2011 (2011-04-25) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116760761A (zh) * 2023-08-16 2023-09-15 摩尔线程智能科技(北京)有限责任公司 路径创建方法、数据处理系统、控制器、存储介质
CN116760761B (zh) * 2023-08-16 2023-10-13 摩尔线程智能科技(北京)有限责任公司 路径创建方法、数据处理系统、控制器、存储介质

Similar Documents

Publication Publication Date Title
CN111770019B (zh) 基于Dijkstra算法的Q-learning光片上网络自适应路由规划方法
US10574567B2 (en) Modeling a border gateway protocol network
Pandurangan et al. A time-and message-optimal distributed algorithm for minimum spanning trees
JP5551253B2 (ja) 複数の等コストパスから選択するための方法および装置
EP3809646A1 (en) Routing tables for forwarding packets between switches in a data center network
JP5915545B2 (ja) 経路選択方法および制御サーバ
US10404576B2 (en) Constrained shortest path determination in a network
US20170331694A1 (en) Optimizing a network topology to satisfy predicted growth
EP3228050A1 (en) Network topology optimization
CN113194034A (zh) 基于图神经网络和深度强化学习的路由优化方法及系统
Sharma et al. Comparison of Dijkstra’s shortest path algorithm with genetic algorithm for static and dynamic routing network
CN113671987B (zh) 基于非死锁合同网算法的多机分布式时序任务分配方法
CN103986661B (zh) 一种支持网络编码的组播路由方法
CN111641557A (zh) 一种时延容忍网络最小代价备份路径方法
CN104396198A (zh) 在最短路径确定中打破平局
CN116170327B (zh) 基于图神经网络和强化学习的分段路由网络增量部署方法
CN116319518B (zh) 一种基于知识图谱最短路径的信息获取方法及装置
CN111861018B (zh) 一种基于路由信息协议的仓库拣选路径优化方法、存储介质及设备
CN112015518B (zh) 增量式部署sdn环境下实现多虚拟机实时迁移方法及系统
CN104718729A (zh) 控制装置及其控制方法和程序
CN116319517A (zh) 一种最短路径确定方法及装置
KR20130087535A (ko) 라우팅 정보의 룩헤드 계산
CN101155119A (zh) 一种确定自治系统边界节点的方法、装置及路径计算方法
CN104967562B (zh) 一种物联网设备节点间的路由方法
Garg et al. Adaptive optimized open shortest path first algorithm using enhanced moth flame algorithm

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20230623

WW01 Invention patent application withdrawn after publication