一种有向网络连通性判别方法

文档序号:36704241发布日期:2024-01-16 11:38阅读:27来源:国知局
一种有向网络连通性判别方法

本发明涉及图论,特别涉及一种有向网络连通性判别方法。


背景技术:

1、复杂有向网络在如今被应用到了越来越多的领域,如多智能体系统、基因网络、万维网、交通动态系统和电网等。在多机器人系统等分布式系统中,机器人之间的通信结构通常被建模为一个复杂的有向网络。在该系统中,机器人会根据分散的控制指令来实现一些全局任务,而它们并不是通过一个中央计算单元来进行统一控制。在这种情况下,需要保证系统的强连通性,为了维持机器人系统的高效协作,不同机器人之间需要保证高精度的信息传递。

2、连通性是这些网络高效运作的一个重要标准,连通性分为强连通性、单向连通性和弱连通性。有向网络g=(v,e)中,若对于节点集v中任意两个不同的节点vi和vj,都存在从vi到vj以及从vj到vi的路径,则该有向网络g=(v,e)是强连通网络。g的一个极大连通子图称为g的一个连通分量scc,强连通网络只有一个连通分量连通分量scc,即其自身。有向网络g=(v,e)中,若节点集v中任意两个不同的节点vi和vj,存在从vj到vi或者vi到vj的路径,这两者不需要同时存在,则该有向网络g=(v,e)是单向连通网络。再者,将有向网络g=(v,e)的所有的有向边替换为无向边,所得到的图称为原图的基图如果一个有向网络g=(v,e)的基图是强连通网络,则该有向网络g=(v,e)是弱连通网络。通过以上定义也可得知,一个强连通网络必然是单向连通以及弱连通,而反之不成立。

3、连通性在不同的场景中有着不同的重要性。单向连通性的重要性可以在主从式多智能体系统中得到体现,与分布式系统不同,强连通性在这种网络中并不是必要的,因为并不需要保证主与从之间的双向通信,而需更注意主到从的单向连接,因此,单向连通性在这种系统有更大的需求性。对于弱连通性,其作用大多在于移动计算领域,随着移动通信的发展,移动服务器需要在低带宽、高延迟或高费用的弱连接网络中承担相应的任务,而不是如lan这样的强连通网络,由此,移动文件系统需要更有效地使用弱连接来提供不间断的数据访问以确保移动计算的稳定进行。

4、因此计算有向网络的连通性有助于优化网络设计、路径规划。有向网络的强连通性、单向连通性和弱连通性提供了不同层面和角度的洞察,可以帮助解决各种不同类型的问题:强连通性分析可以帮助识别网络中的强连接组件,即无论从哪个节点出发,都可以到达组件内的任何其他节点,这在网络路由和路径规划中很有用。对于强连通的网络,如果一个节点或连接故障,网络仍然保持连通。这对于通信和系统设计中的可靠性分析非常重要;在社交网络中,强连通组件可能表示紧密的社交圈子,这有助于理解信息传播和社交互动的方式。单向连通性用于分析网络中的信息流动方向。这在信息传输、货物运输和数据流分析中很有用;单向连接可以用于评估网络的安全性,确保敏感信息只能在预定方向上传输。弱连通性表示网络中的相互连接,即使是双向连接也可能是弱的,这对于理解网络结构和潜在的瓶颈非常有用;在社交网络中,弱连通性可能揭示出不太密切但仍然存在联系的社交关系,这有助于理解社交网络的全貌。

5、现有针对有向网络联通性的算法仅考虑网络强联通性和单边联通性,没有考虑弱联通性,这可能限制了对网络全面联通性的理解。此外,现有的有向网络联通性算法通常依赖于矩阵运算,其中最常见的是邻接矩阵和传递闭包矩阵,这些方法的时间计算会随着矩阵维度的增大而增长,并且矩阵运算还需要大量的内存空间,这导致了较大的空间复杂度。


技术实现思路

1、本发明提供一种有向网络连通性判别方法,可以解决现有技术中,网络联通性计算所需的时间复杂度和空间复杂度大以及网络联通性计算不全面的问题。

2、本发明提供一种有向网络连通性判别方法,包括:

3、获取路径有向网络g;计算有向网络g中的所有强连通分量个数k;

4、当k=1时,有向网络g为强连接网络;

5、当k>1时,将有向网络g中的所有强连通分量作为新的节点构成一个新有向网络计算新有向网络的单向连通的节点对数c,如果有向网络g为单向连通网络;

6、将有向网络g转换成无向网络获得无向网路的所有强连通分量个数w,若w=1,有向网络g为弱连通网络。

7、进一步的,所述获取有向网络g,包括:

8、获得有向网络g的定点集v={v1,v2,…,vn},对于一个节点v,它的入度和出度分别是id(v)和or(v),id(v)是节点v指向的节点数,若id(v)=0,则该节点v是根节点;or(v)是节点v被指向的节点数;

9、获得有向网络g的有向边集e={(vi,vj)|vi,v∈v},对于一条有向边(vi,vj)∈e,节点vi是节点vj的父节点,节点vj是节点vi的子节点;

10、根据定点集v和有向边集e获得有向网络g=(v,e)。

11、进一步的,所述强连通分量个数k,是使用基于深度优先搜索算法dfs的tarjan算法查找有向网络g中的所有强连通分量,所述基于深度优先搜索算法dfs的tarjan算法,包括:

12、创建计数器dfn来记录进行深度优先搜索算法dfs期间的深度优先数,创建计数器low来记录节点所能达到的最低dfn值,创建计数器k来记录有向网络g中强连通分量的个数,创建数组scc[·]来存储每个强连通分量中的节点组;

13、对于每个未曾访问的节点vi,将dfn[vi]设为当前的dfn计数器的值,同时将初始的low[vi]设为dfn[vi],并将节点vi压入堆栈;

14、对于节点vi的每一个子节点vj,如果vj已经被访问并且仍然在堆栈中,这代表(vi,vj)是一条回边,将low[vi]更新为dfn[vj];

15、在遍历节点vi的所有子节点后,如果dfn[vi]=low[vi],这代表出现了一个强连通分量,堆栈的顶部的节点将被弹出并按顺序添加到数组scc[k]中,直到顶部元素是节点vi本身;

16、强连通分量的所有顶点都被储存到scc[k]中,获得最终k的值。

17、进一步的,所述新有向网络包括:

18、将强连通分量作为新的节点,获得新节点集合

19、获得新有向线集合

20、根据新节点集合和新有向线集合获得新有向网络

21、

22、进一步的,所述计算新有向网络的单向连通的节点对数c,包括:

23、创建计数器可达数组创建计数器c;

24、通过深度优先搜索算法dfs遍历新有向网络的每个节点,对于每个入度为0的节点将其设为深度优先搜索算法dfs的根节点;

25、对于的每个子节点如果仍未被访问过,则dfs遍历至如果已被访问过,则把加入到的可达数组中;

26、对于中的每一个判断是否已经被记录为一个单向连通组,若没有,则更新计数器c,获得最终c的值。

27、进一步的,所述获得无向网路的所有强连通分量个数w,包括:

28、将有向网络每一条有向边(vi,vj),都再加入另一条有向边(vj,vi)使其变为无向,获得无向网路

29、使用基于深度优先搜索算法dfs的tarjan算法查找无向网路中的所有强连通分量,并用新的计数器w记录强连通分量的个数。

30、本发明实施例提供一种有向网络连通性判别方法,与现有技术相比,其有益效果如下:

31、本发明首先计算有向网络中的强连通分量k,如果k大于1,表示有多个强连通分量,那么将这些分量作为新的节点构建一个新的有向网络;在新的有向网络中计算单向连通节点对数时,只需对新的有向网络进行计算,而不是原始网络,由于新网络通常比原始网络小得多,所需的空间、计算时间复杂度将更低;在计算网络弱连通性时将原始有向网络转换为无向网络,通常只需考虑节点之间的连接关系,而无需考虑方向,这种转换通常是线性的,仅涉及到边的复制,进一步降低计算的复杂度。本发明将网络连通性计算所需的时间复杂度和空间复杂度降低到更低的水平,从而提高了计算效率,这意味着在相同的时间内,能够处理更大规模和更复杂的网络,或者在相同规模的网络上实现更快的计算。

32、并且本发明提出的网络连通性计算方法不仅提高了效率,还能够完整覆盖复杂有向网络的所有连通性特性,全面的连通性特性覆盖使得本发明的方法在分析和解决各种不同类型的网络问题时更加强大和灵活。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1