Bipartite graphs are a prevalent modeling tool for real-world networks, capturing interactions between vertices of two different types. Within this framework, bicliques emerge as crucial structures when studying dense subgraphs: they are sets of vertices such that all vertices of the first type interact with all vertices of the second type. Therefore, they allow identifying groups of closely related vertices of the network, such as individuals with similar interests or webpages with similar contents. This article introduces a new algorithm designed for the exhaustive enumeration of maximal bicliques within a bipartite graph. This algorithm, called BBK for Bipartite Bron-Kerbosch, is a new extension to the bipartite case of the Bron-Kerbosch algorithm, which enumerates the maximal cliques in standard (non-bipartite) graphs. It is faster than the state-of-the-art algorithms and allows the enumeration on massive bipartite graphs that are not manageable with existing implementations. We analyze it theoretically to establish two complexity formulas: one as a function of the input and one as a function of the output characteristics of the algorithm. We also provide an open-access implementation of BBK in C++, which we use to experiment and validate its efficiency on massive real-world datasets and show that its execution time is shorter in practice than state-of-the art algorithms. These experiments also show that the order in which the vertices are processed, as well as the choice of one of the two types of vertices on which to initiate the enumeration have an impact on the computation time.
翻译:二分图是现实世界网络的一种常用建模工具,用于捕捉两种不同类型顶点之间的交互。在此框架下,双团在研究稠密子图时成为关键结构:它们是这样的顶点集合,使得第一类所有顶点均与第二类所有顶点交互。因此,双团可用于识别网络中紧密关联的顶点群组,例如具有相似兴趣的个体或具有相似内容的网页。本文提出了一种新算法,旨在对二分图中的极大双团进行穷举枚举。该算法称为BBK(Bipartite Bron-Kerbosch),是Bron-Kerbosch算法(用于枚举标准非二分图中极大团)在二分图情形下的新扩展。它比现有最先进算法更快,并能对现有实现无法处理的大规模二分图进行枚举。我们从理论上对其进行分析,建立了两个复杂度公式:一个基于输入特征,另一个基于算法的输出特征。我们还提供了BBK的C++开源实现,并利用其在大型真实数据集上进行实验以验证其效率,结果表明其实际运行时间短于最先进算法。这些实验还表明,顶点处理的顺序以及选择两种顶点类型中的哪一种来启动枚举,均会对计算时间产生影响。