一种确定连通分量、强连通分量的方法及装置制造方法及图纸

技术编号:23604847 阅读:39 留言:0更新日期:2020-03-28 05:54
一种确定连通分量、强连通分量的方法及装置。确定连通分量时,先对网络结构图中的每个节点的属性值进行一次扩散,令节点A的属性值为节点A以及与其连接的所有节点的属性值中最小的属性值;将属性值相同的节点合并;对合并后的网络结构中的每个节点重复执行一次扩散以及合并,直到节点不能再被合并为止;则被合并的节点属于同一连通分量。确定强连通分量时,对具有双向连接关系的节点进行合并;对合并后的每个节点的入向属性和出向属性进行一次扩散;若两个节点的入向属性或出向属性不同,将该两个节点之间的连接断开;若一个节点仅有入向连接节点或仅有出向连接节点,将该节点与其他节点的连接断开;仍存在连接关系的节点属于同一强连通分量。

A method and device for determining connected component and strongly connected component

【技术实现步骤摘要】
一种确定连通分量、强连通分量的方法及装置
本申请涉及计算机
,尤其涉及一种确定连通分量、强连通分量的方法及装置。
技术介绍
在一个无向连接的网络结构图中,如图1(a)所示,可以包含若干连通分量。在一个连通分量中,任意两个节点间至少存在一条路径。例如,在图1(a)中,节点1与节点2、节点3、节点4均直接相连;节点2与节点1、节点3、节点4直接相连;节点3与节点1、节点2直接相连,而节点3与节点4之间存在路径:节点3-节点2-节点4;节点4与节点1、节点2直接相连,而节点4与节点3之间存在路径。因此,节点1、节点2、节点3和节点4能够构成一个连通分量。在一个有向连接的网络结构图中,如图1(b)所示,可以包含若干强连通分量。在一个强联通分量中,任意两个节点(vi和vj)间,有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径。例如,在图1(b)中,对于节点1和节点2来说,存在从节点1→节点2的路径,还存在节点2→节点5→节点1的路径;对于节点2和节点5来说,存在从节点2→节点5的路径,还存在节点5→节点1→节点2的路径;对于节点1和节点5来说,存在从节点1→节点2→节点5的路径,还存在节点5→节点1的路径。因此,节点1、节点2和节点5能够构成一个强连通分量。在日常生活的各个领域、各个场景中都可能蕴藏着巨大的网络关系图,而图1(a)和1(b)所示的可能仅为巨大网络结构图中的一部分。例如,在有线电视网络中,中继器的连接可以如图1(a)所示,中继器的连接通常是双向的,即,中继器1与中继器2的连接边为无向边,中继器1可以向中继器2传输数据,中继器2也可以向中继器1传输数据,则其网络关系图可认为是无向连接的网络结构图;在对有线电视网络进行维护时,往往需要从中继器的连接关系图中获取连通分量,进行故障查找、维修、升级等等。又例如,在社交网络应用中注册的用户也可以构成一个巨大的有向网络结构图,在这个有向网络结构图中,若用户1和用户2相互添加了好友,可以互发消息,则认为用户1和用户2之间存在双向连接;若用户1关注了用户2,但用户2没有关注用户1,则认为用户1与用户2之间的连接为单向连接。在对用户群进行大数据分析,并为用户提供差异化服务时,也可能需要获取该有向网络结构图中存在的强连通分量。然而,传统的确定连通分量或强连通分量的算法复杂、繁琐,尤其是在应对大规模网络结构时,复杂的算法对效率的影响更加明显。
技术实现思路
本申请实施例提供一种确定连通分量、强连通分量的方法及装置,有助于降低确定网络结构图中的连通分量、强连通分量的复杂度、提高系统效率。第一方面,本申请实施例提供一种确定连通分量的方法,包括:获取网络结构图,所述网络结构图中包括多个独立节点,每个独立节点对应一个原始属性值,不同独立节点的原始属性值不同;针对所述网络结构图中的每个独立节点,根据所述独立节点对应的原始属性值、与所述独立节点连接的独立节点分别对应的原始属性值,确定所述独立节点的凝聚属性值;将凝聚属性值相同的独立节点合并为一个凝聚节点,得到所述网络结构图的凝聚图,所述凝聚节点的凝聚属性值为构成该凝聚节点的独立节点的凝聚属性值;根据所述凝聚图,确定所述网络结构图中的连通分量。在一种可能的实现方式中,所述根据所述凝聚图,确定所述网络结构图中的连通分量,包括:重复执行如下处理,直到所述凝聚图中包括的节点不能再被凝聚为止:针对所述凝聚图中的每个节点,根据所述节点的凝聚属性值、与所述节点连接的所有独立节点或凝聚节点的凝聚属性值,更新所述节点的凝聚属性值;将更新后凝聚属性值相同的凝聚节点合并为一个新的凝聚节点,得到新的凝聚图;根据最终得到的凝聚图,确定构成同一凝聚节点的独立节点属于同一连通分量。在一种可能的实现方式中,根据所述独立节点的原始属性值、与所述独立节点连接的独立节点分别的原始属性值,确定所述独立节点的凝聚属性值,包括:确定所述独立节点的原始属性值以及与所述独立节点连接的所有独立节点的原始属性值中最小的原始属性值,将所述最小的原始属性值作为所述独立节点的凝聚属性值。在一种可能的实现方式中,根据所述凝聚节点的凝聚属性值、与所述凝聚节点连接的独立节点或凝聚节点的凝聚属性值,更新所述凝聚节点的凝聚属性值,包括:确定所述凝聚节点的凝聚属性值以及所述凝聚节点连接的所有独立节点或凝聚节点的凝聚属性值中最小的凝聚属性值,将所述凝聚节点的凝聚属性值更新为所述最小的凝聚属性值。在一种可能的实现方式中,独立节点的原始属性值,为所述独立节点的身份标识ID。通过上述方法实施例,实现了确定网络结构图中的连通分量。上述方法与传统的确定连通分量相比,由于对凝聚属性值相同的节点进行合并,减少了冗余操作,有助于提高效率,尤其是在应对大规模网络结构时,上述方法提高效率、缩短确定连通分量时间的效果更加明显。第二方面,本申请实施例提供一种确定强连通分量的方法,包括:获取有向网络结构图,所述网络结构图中包括多个节点,每个节点对应一个第一入向属性值和一个第一出向属性值,不同节点对应的第一入向属性值不同,不同节点对应的第一出向属性值不同;确定所述有向网络结构图中的节点对,将每个所述节点对合并为一个节点,所述节点对包括第一节点和第二节点,所述第一节点和所述第二节点之间存在双向连接关系;针对合并节点对后的有向网络结构图中的每个节点,根据所述节点对应的第一入向属性值、所述节点的入向连接节点的第一入向属性值,确定所述节点的第二入向属性值;针对合并节点对后的有向网络结构图中的每个节点,根据所述节点对应的第一出向属性值、所述节点的出向连接节点的第一出向属性值,确定所述节点的第二出向属性值;针对合并节点对后的有向结构图中的每个节点,若确定所述节点的第二入向属性值和所述节点的相邻节点的第二入向属性值不同,或确定所述节点的第二出向属性值和所述节点的相邻节点的第二出向属性值不同,则将所述节点与所述相邻节点之间的连接关系断开,得到解耦图;针对所述解耦图中的每个节点,若确定所述节点没有入向连接节点或没有出向连接节点,则将所述节点与其他节点之间的连接关系断开;将合并后的节点还原为节点对;确定仍存在连接关系的节点属于同一强连通分量。在一种可能的实现方式中,针对合并节点对后的有向网络结构图中的每个节点,根据所述节点对应的第一入向属性值、所述节点的入向连接节点的第一入向属性值,确定所述节点的第二入向属性值,包括:针对合并节点对后的有向网络结构图中的每个节点,根据所述节点的第一入向属性值、所述节点的所有入向相连节点的第一入向属性值,确定所述节点的第二入向属性值;重复执行以下处理,直到每个节点的第二入向属性值不再变化:针对合并节点对后的有向网络结构图中的每个节点,根据所述节点的第二入向属性值、所述节点的所有入向相连节点的第二入向属性值,更新所述节点的第二入向属性值。在一种可能的实现方式中,针对合并节点对后的有向本文档来自技高网
...

【技术保护点】
1.一种确定连通分量的方法,其特征在于,包括:/n获取网络结构图,所述网络结构图中包括多个独立节点,每个独立节点对应一个原始属性值,不同独立节点的原始属性值不同;/n针对所述网络结构图中的每个独立节点,根据所述独立节点对应的原始属性值、与所述独立节点连接的独立节点分别对应的原始属性值,确定所述独立节点的凝聚属性值;/n将凝聚属性值相同的独立节点合并为一个凝聚节点,得到所述网络结构图的凝聚图,所述凝聚节点的凝聚属性值为构成该凝聚节点的独立节点的凝聚属性值;/n根据所述凝聚图,确定所述网络结构图中的连通分量。/n

【技术特征摘要】
1.一种确定连通分量的方法,其特征在于,包括:
获取网络结构图,所述网络结构图中包括多个独立节点,每个独立节点对应一个原始属性值,不同独立节点的原始属性值不同;
针对所述网络结构图中的每个独立节点,根据所述独立节点对应的原始属性值、与所述独立节点连接的独立节点分别对应的原始属性值,确定所述独立节点的凝聚属性值;
将凝聚属性值相同的独立节点合并为一个凝聚节点,得到所述网络结构图的凝聚图,所述凝聚节点的凝聚属性值为构成该凝聚节点的独立节点的凝聚属性值;
根据所述凝聚图,确定所述网络结构图中的连通分量。


2.如权利要求1所述的方法,其特征在于,所述根据所述凝聚图,确定所述网络结构图中的连通分量,包括:
重复执行如下处理,直到所述凝聚图中包括的节点不能再被凝聚为止:针对所述凝聚图中的每个节点,根据所述节点的凝聚属性值、与所述节点连接的所有独立节点或凝聚节点的凝聚属性值,更新所述节点的凝聚属性值;将更新后凝聚属性值相同的凝聚节点合并为一个新的凝聚节点,得到新的凝聚图;
根据最终得到的凝聚图,确定构成同一凝聚节点的独立节点属于同一连通分量。


3.如权利要求2所述的方法,其特征在于,根据所述凝聚节点的凝聚属性值、与所述凝聚节点连接的独立节点或凝聚节点的凝聚属性值,更新所述凝聚节点的凝聚属性值,包括:
确定所述凝聚节点的凝聚属性值以及所述凝聚节点连接的所有独立节点或凝聚节点的凝聚属性值中最小的凝聚属性值,将所述凝聚节点的凝聚属性值更新为所述最小的凝聚属性值。


4.如权利要求1所述的方法,其特征在于,根据所述独立节点的原始属性值、与所述独立节点连接的独立节点的原始属性值,确定所述独立节点的凝聚属性值,包括:
确定所述独立节点的原始属性值以及与所述独立节点连接的所有独立节点的原始属性值中最小的原始属性值,将所述最小的原始属性值作为所述独立节点的凝聚属性值。


5.如权利要求1至4中任一项所述的方法,其特征在于,独立节点的原始属性值,为所述独立节点的身份标识ID。


6.一种确定强连通分量的方法,其特征在于,包括:
获取有向网络结构图,所述网络结构图中包括多个节点,每个节点对应一个第一入向属性值和一个第一出向属性值,不同节点对应的第一入向属性值不同,不同节点对应的第一出向属性值不同;
确定所述有向网络结构图中的节点对,将每个所述节点对合并为一个节点,所述节点对包括第一节点和第二节点,所述第一节点和所述第二节点之间存在双向连接关系;
针对合并节点对后的有向网络结构图中的每个节点,根据所述节点对应的第一入向属性值、所述节点的入向连接节点的第一入向属性值,确定所述节点的第二入向属性值;
针对合并节点对后的有向网络结构图中的每个节点,根据所述节点对应的第一出向属性值、所述节点的出向连接节点的第一出向属性值,确定所述节点的第二出向属性值;
针对合并节点对后的有向结构图中的每个节点,若确定所述节点的第二入向属性值和所述节点的相邻节点的第二入向属性值不同,或确定所述节点的第二出向属性值和所述节点的相邻节点的第二出向属性值不同,则将所述节点与所述相邻节点之间的连接关系断开,得到解耦图;
针对所述解耦图中的每个节点,若确定所述节点没有入向连接节点或没有出向连接节点,则将所述节点与其他节点之间的连接关系断开;
将合并后的节点还原为节点对;
确定仍存在连接关系的节点属于同一强连通分量。


7.如权利要求6所述的方法,其特征在于,针对合并节点对后的有向网络结构图中的每个节点,根据所述节点对应的第一入向属性值、所述节点的入向连接节点的第一入向属性值,确定所述节点的第二...

【专利技术属性】
技术研发人员:李晓森吕倩楠怀宝兴
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1