一种基于代数化的深度优先搜索的环路检测方法技术

技术编号:38238651 阅读:15 留言:0更新日期:2023-07-25 18:02
本发明专利技术公开了一种基于代数化的深度优先搜索的环路检测方法,涉及社区网络有向图技术领域,能够有效地在社交网络中发现并输出所有规定长度内的环路,算法简单效率较高。为达到上述目的,本发明专利技术的技术方案为:构建社交网络的有向图;该方法将社交网络的有向图作为目标图,执行如下步骤:将有向图中的点按照读取顺序从1至n编号。按照编号将所述有向图的点边信息以邻接矩阵A的形式存储到CSR格式压缩矩阵中。在所述有向图的邻接矩阵中,选取起始点,用代数化的语言利用邻接矩阵和可达矩阵的思想进行环路检测,在环路检测过程中根据有向图和环路的数学性质进行路径扩展限定,扩展节点即下一个属于环路的节点;由此获得针对起始点的环路路径。环路路径。环路路径。

【技术实现步骤摘要】
一种基于代数化的深度优先搜索的环路检测方法


[0001]本专利技术涉及社区网络有向图
,具体涉及一种基于代数化的深度优先搜索的环路检测方法。

技术介绍

[0002]社交网络是参与社会活动的成员之间通过各种社会关系结成的网络结构,整个结构可以抽象为图论中的有向图表示。
[0003]社交网络形成的有向图中,个体可以抽象节点,表示组织、个人、网络ID等不同含义的实体或虚拟个体;而个体间的关系可以抽象为带方向的边,是亲友、动作行为、收发消息等多种关系,将各个点联合起来。对社交网络的分析过程中,环路作为发现人际关系、操作关联关系和社交圈等特殊关系的重要结构需要被识别。
[0004]在图论研究中,环路是发现图性质和点之间关系的重要结构,在实践应用中环路可以在社交网络分析的场景中发挥作用。如此看来,如何在一个社交网络形成的有向图图中探测并找出所有的环路在获取图性质和点之间的关系中成为了研究的关键。
[0005]在有向图研究中,一个有向回路是一个非空的有向路径,其第一个与最后一个顶点相同。令有向图一个回路是一条非空路径(e1,e2,

,e
n
),其顶点序列为(v1,v2,

,v
n,
v1)。一个有向环路,或者简单有向回路,是只有第一个与最后一个顶点相同的有向回路。
[0006]在有向图上的环可以被使用深度优先搜索(DFS)的方法,通过寻找一条连接当前顶点与之前顶点的边(它包含了一条后向边),我们可以探测有向图上环的存在。所有DFS跳过的后向边都是某些环的一部分。在一个无向图上,指向父节点的边不能被算作后向边,但是找到已经被经过了的顶点意味着后向边的存在。许多拓扑排序算法也会探测环的存在,因为这些环会成为拓扑排序存在的障碍。另外,如果一个有向图被分成了几个强连通分量,那么环只会在这些分量内部存在,而不会连接这几个分量,因为环本身就是强连接的。对于有向图,还可以使用基于分布式信息的算法。这些算法的思路基于一条从一个顶点发出的信息可以通过环回到这个顶点。分布式环检测算法对于在计算机集群上使用分布式图处理系统来处理大规模的图很有帮助。
[0007]环路检测算法在业界有广泛的实现和研究,但图算法形式的基本数学算法已经停滞(如C++最著名的库boost中使用的是1970年的Tiernan算法),且随着数据规模的发展,在大规模图上进行环路检测成为一个难题。
[0008]因此在面临当前社会如此庞杂多元的社交网络结构形成的大规模图,如何进行高效的环路检测是尚未解决的问题。

技术实现思路

[0009]有鉴于此,本专利技术提供了一种基于代数化的深度优先搜索的环路检测方法,能够有效地在社交网络中发现并输出所有规定长度内的环路,算法简单效率较高。
[0010]为达到上述目的,本专利技术的技术方案为:构建社交网络的有向图G(V,E),其中V为社交网络结构中的点组成的集合,E为社交网络结构中边组成的集合;V的大小为n,E的大小为e;该方法将所述有向图G(V,E)作为目标图,执行如下步骤:
[0011]步骤一,将有向图中的点按照读取顺序从1至n编号。
[0012]步骤二,按照编号将所述有向图的点边信息以邻接矩阵A的形式存储到CSR格式压缩矩阵中。
[0013]步骤三,在所述有向图的邻接矩阵中,选取起始点,用代数化的语言利用邻接矩阵和可达矩阵的思想进行环路检测,在环路检测过程中根据有向图和环路的数学性质进行路径扩展限定,扩展节点即下一个属于环路的节点;由此获得针对起始点的环路路径。
[0014]优选地,在环路检测过程中根据有向图和环路的数学性质进行路径扩展限定,具体包括三个限制条件,分别为
[0015]第一限制条件:扩展的下一个节点不能出现在当前路径内。
[0016]第二限制条件:对节点进行编号,扩展下一个节点的编号不能小于起始点的编号。
[0017]第三限制条件:扩展的下一个节点不能在上一个点的已经探索过的邻接点集内。
[0018]优选地,步骤三具体为:
[0019]设置起始点作为当前路径点,执行Step301至Step304获取环路路径,起始点个数至少为1个,起始点数量超过2个时,针对多个起始点同步执行步骤三至六,同步获取对应环路路径。
[0020]Step301:对于当前路径点i,引用可达矩阵的思想,构建第i列为1,其余列为0的维数为1
×
n的行向量P
i
,将P
i
与矩阵A进行向量矩阵乘法,得到1
×
n的行向量P
1i
,判断P
1i
中第k列不为0表示由编号为i的点可以扩展路径到编号为k的节点。
[0021]Step302:根据扩展到的节点的编号k按照三个限制条件进行逐一判断,全部满足之后加入当前路径path。
[0022]Step303:判断当前路径path的长度是否达到预设的最大环路长度maxlen,若当前路径长度小于maxlen则,以k作为当前路径点返回Step301,直接进行下一个节点扩展,若当前路径长度大于maxlen度则直接舍弃并回溯缩短路径,否则进入Step304。
[0023]Step304:判断当前路径path的首尾编号是否相同,若首尾编号相同时,当前路径即为一个基本环路,将环路路径添加到结果集中。
[0024]有益效果:
[0025]本专利技术提出了一个基于代数化的在表示社交网络的有向图中进行环路检测方法,能够有效地在社交网络中中发现并输出所有规定长度内的环路,该方法能够有效地在有向图中发现并输出所有规定长度内的环路,即保证了环路检测的正确性,又有在搜索过程中充分利用了代数化建模带来的并行化便利提升性能。本专利技术的技术方案有较高的计算效率,适用于大规模现实有向图数据集,性能上远远超过著名的C++boost库的环路检测接口。
附图说明
[0026]图1为本专利技术具体流程图。
具体实施方式
[0027]下面结合附图并举实施例,对本专利技术进行详细描述。
[0028]本专利技术提出了一种代数化的深度搜索方法并应用在环路检测中,设计了高效的计算方法,其流程如图1所示。
[0029]构建社交网络的有向图G(V,E),其中V为社交网络结构中的点组成的集合,E为社交网络结构中边组成的集合;V的大小为n,E的大小为e;该方法将所述有向图G(V,E)作为目标图,一个有向环路,或者简单有向回路,是只有第一个与最后一个顶点相同的有向回路。
[0030]为了找出有向图G中所有的环路,本专利技术首先将节点编号重映射为以1为最小编号且编号顺序增大的点集合,然后读取边信息以CSR压缩矩阵格式保存表示为邻接矩阵A(邻接矩阵,n个点,则矩阵为n
×
n为,第i行第j列的数字为1则表示i、j之间有边),用代数化的语言利用邻接矩阵和可达矩阵的思想,减少循环层数并在矩阵本身保存一定信息来进行搜索,然本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于代数化的深度优先搜索的环路检测方法,其特征在于,构建社交网络的有向图G(V,E),其中V为社交网络结构中的点组成的集合,E为社交网络结构中边组成的集合;V的大小为n,E的大小为e;该方法将所述有向图G(V,E)作为目标图,执行如下步骤:步骤一,将有向图中的点按照读取顺序从1至n编号;步骤二,按照编号将所述有向图的点边信息以邻接矩阵A的形式存储到CSR格式压缩矩阵中;步骤三,在所述有向图的邻接矩阵中,选取起始点,用代数化的语言利用邻接矩阵和可达矩阵的思想进行环路检测,在环路检测过程中根据有向图和环路的数学性质进行路径扩展限定,扩展节点即下一个属于环路的节点;由此获得针对起始点的环路路径。2.如权利要求1所述的一种基于代数化的深度优先搜索的环路检测方法,其特征在于,所述在环路检测过程中根据有向图和环路的数学性质进行路径扩展限定,具体包括三个限制条件,分别为第一限制条件:扩展的下一个节点不能出现在当前路径内;第二限制条件:对节点进行编号,扩展下一个节点的编号不能小于起始点的编号;第三限制条件:扩展的下一个节点不能在上一个点的已经探索过的邻接点集内。3.如权利要求2所述的一种基于代数化的深度优先搜索的环路检测方法,其特征在于,所述步骤三具体为:设置起始点...

【专利技术属性】
技术研发人员:邱瑞亨张志威王国仁
申请(专利权)人:北京理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1