1.本公开内容中讨论的实施方式涉及网络中的节点的聚类。
背景技术:2.网络可以由节点以及节点之间的边表示。节点可以被聚类。聚类节点可以用于许多领域的数据分析。例如,可以使用聚类节点研究生物和社会模式、万维网、代谢网络、食物网、神经网络和病理网络等。
3.本公开内容中要求保护的主题不限于解决任何缺点或者仅在诸如如上描述的环境中操作的实施方式。确切地说,提供该背景技术仅用于示出可以实践本公开内容中描述的一些实施方式的一个示例技术领域。
技术实现要素:4.示例实施方式中,一种方法可以包括:将网络的每个节点分配到不同的节点集群,使得节点的数目等于节点集群的数目,并且选择网络的多个节点作为节点集合。该方法还可以包括:通过将该节点集合中的一个或更多个节点重新分配到不同的节点集群,同时保持不属于节点集合的节点的已分配的节点集群,来求解第一优化问题,以及在求解第一优化问题之后,选择多个节点集群作为节点集群集合。该方法还可以包括:通过合并节点集群集合中的两个或更多个节点集群,同时保持不属于该节点集群集合的节点集群,来求解第二优化问题,以及使用节点集群中的节点分布来识别网络中的一个或更多个子结构。
5.实施方式的目的和优点至少通过权利要求中特别指出的元素、特征和组合来实现和完成。
6.前面的总体描述和下面的详细描述二者均作为示例给出,并且是说明性的,并且不限制所要求保护的本发明。
附图说明
7.将通过使用附图更具体和详细地描述和说明示例实施方式,在附图中:
8.图1示出了用于对网络的节点进行分组的示例操作流程;
9.图2示出了示例网络;
10.图3示出了用于对网络的节点进行分组的示例方法的流程图;
11.图4示出了用于对网络的节点进行分组的另一示例方法的流程图;
12.图5示出了可以用于数据集群的示例系统。
具体实施方式
13.随着技术和理解的增长,在分析更复杂的系统。例如,可以分析诸如社交网络、神经网络、病理网络和生物网络以及其他类型的网络的复杂系统。示例生物网络可以包括化学网络,例如生物体的化学结构。对网络的分析可以涉及将网络表示为具有节点和连接节
点的边的图。在将网络表示为图之后,可以对图进行分析。对图的分析可以包括社区发现(community detection)。社区发现可以涉及对节点集群中的节点进行分组。可以被分组在节点集群中的节点可以是其之间具有比其他节点更高的边密度的节点。图内的社区发现可以揭示图中的隐藏结构,从而揭示由图所表示的网络。例如,在社交网络中,社区发现可以揭示朋友组。作为另一示例,在生物网络中,社区发现可以揭示相似的蛋白质。
14.将节点集群中的节点分组以进行社区发现可以是一种类型的组合优化问题。在一些情况下,对节点集群中的节点进行分组可能涉及用户指定节点应该被分组成的社区或集群的数目。然而,在一些情况下,指定社区的数目可能是次优的,因为可能无法发现原本可以在图中发现的一些社区。
15.本公开内容中的一些实施方式可以涉及可以被配置成将节点分组成节点集群的系统和/或方法。节点集群可以用于社区发现。在这些和其他实施方式中,不管图的大小以及执行计算以将节点分组成节点集群的求解器的硬件能力如何,系统和/或方法可以被配置成将节点分组成节点集群。替选地或附加地,系统和/或方法可以被配置成在不获得图的用户指定数目的节点集群的情况下,将节点分组成节点集群。在这些和其他实施方式中,系统和/或方法可以被配置成使用图的节点之间的关系来确定节点可以被分组成的节点集群的数目。
16.在一些实施方式中,系统和/或方法可以被配置成:通过将第一网络的每个节点分配到不同的节点集群,使得节点的数目等于节点集群的数目,来将图的节点分组成节点集群。在将每个节点分配到不同的节点集群之后,可以选择多个节点作为节点集合,并且可以选择多个节点集群作为节点集群集合。可以基于由本公开内容中的系统和/或方法使用的求解器的硬件能力来选择节点集合中的节点数目。
17.在获得节点集合和节点集群集合之后,可以通过将节点集合中的一个或更多个节点重新分配到节点集群集合中的不同的节点集群,同时保持不属于该节点集合的节点的已分配的节点集群,来求解第一优化问题。可以对分配节点集合和节点集群集合以及求解第一优化问题的过程进行迭代,直到在后续迭代之间图的模块度的变化满足阈值。
18.响应于满足阈值,可以选择多个节点集群作为第二节点集群集合。可以通过将第二节点集群集合中的节点集群之一的节点重新分配到第二节点集群集合中的不同的一个节点集群,同时保持不属于第二节点集群集合的节点集群中的节点来求解第二优化问题。可以对选择第二节点集群集合和求解第二优化问题的过程进行迭代,直到在后续迭代之间图的模块度的变化满足阈值。在一些实施方式中,第一优化问题和第二优化问题可以是相同类型的优化问题。
19.因此,本公开内容中描述的系统和/或方法提供了在没有用户定义数目的社区的情况下在大型网络中使用专用硬件(例如ising处理单元)进行社区发现的方式。因此,本公开内容中描述的系统和/或方法向大型网络中社区发现的技术问题提供了新颖的技术解决方案。因此,本公开内容中描述的系统和/或方法提供了关于社区发现的实际应用,这在分析网络的技术中提供了意义上的进步。
20.图1示出了根据本公开内容的至少一个实施方式的示例操作流程100。操作流程100可以示出用于将网络的节点分组成节点集群的操作流程。例如,操作流程100可以包括多个操作,这些操作可以被配置成将来自网络102的节点分组成节点集群。
21.在一些实施方式中,在操作110处,可以基于网络102定义图112。网络102可以是包括连接元素的任何类型的网络。例如,网络102可以是社交网络、神经网络、病理网络或生物网络以及其他类型的网络。
22.在操作110处,可以定义对网络102建模的图112。例如,可以将网络102的元素定义为图112的节点。可以将网络102的元素之间的连接定义为图112的边。图112的每个节点可以通过图112的边连接至图112的至少一个其他节点。
23.在一些实施方式中,图112的边可以与网络102中的元素之间的连接所对应的值相关联。例如,图112中的两个节点之间的边可以与零到一之间的值相关联。替选地或附加地,该值可以是任何数字。在一些实施方式中,所有边可以具有相似的值。替选地或附加地,所有的边可以具有不同的值,或者一些边可以具有相同的值而一些边可以具有不同的值。
24.在一些实施方式中,该值可以指示图112中的两个节点之间的关系。例如,如果网络102是社交网络,则社交网络的元素可以是社交网络中的个体。因此,图112中的节点可以表示个体。图112中的节点与另一节点之间的边可以表示该个体与社交网络中的另一个体之间的关系。由于该个体可能与社交网络中的不同个体具有不同的关系,因此不同的节点之间的边可能具有不同的权重。
25.通过图200在图2中示出了图112的示例。图200包括通过节点202至节点211之间的线表示的边进行耦接的节点202至节点211。节点202至节点211中的每一个通过边耦接至节点202至节点211中的至少另一个。节点202至节点211中的一些节点耦接至节点202至节点211中的多个节点。
26.返回到对图1的讨论,在操作110处,还可以定义图112的节点集群。在这些和其他实施方式中,对于最初基于网络102定义的图112,可以将图112中的每个节点定义为节点集群。因此,图112的节点集群的数目可以等于图112的节点的数目。
27.在操作120处,可以基于提供给操作120的图来选择节点集合122和节点集群集合124。在操作流程100的初始操作期间,操作120可以使用图112。在本公开内容中稍后讨论的操作流程100的后续操作期间,操作120可以使用由操作流程100生成的基于图112的重新定义的图162。
28.在一些实施方式中,在操作流程100期间可以基于操作140期间使用的硬件能力来选择节点集合122的大小,即包括在节点集合122中的节点的数目。例如,硬件可以是用于求解优化问题(例如,二次无约束二进制优化问题)的专用硬件。专用硬件的示例是富士通(fujitsu)的数字退火单元。
29.在一些实施方式中,硬件可以包括在求解优化问题时可以考虑的有限数目的变量。因此,网络102和图112可能是这样的大小,该大小使得节点的数目以及同样地优化中的变量数目对于专用硬件来说可能太大。例如,为了解决节点集群问题(例如社区发现问题),专用硬件可能无法容纳大型网络,或者大型网络可能会使运行时间可能不实际。在这些和其他实施方式中,可以选择节点集合122的大小,使得优化问题中的变量数目能够由专用硬件解决并且/或者可以在特定时间范围内获得解。
30.在一些实施方式中,节点集合122的大小可以使得节点集合122包括图112的所有节点。替选地或附加地,节点集合122的大小可以使得节点集合122仅包括图112的节点的一部分。
31.在一些实施方式中,可以随机选择图112中要包括在节点集合122中的节点。替选地或附加地,可以通过滑动窗口策略来选择被选择成包括在节点集合122中的节点,在滑动窗口策略中,选择在节点的排序列表中连续布置的节点的子集。基于随机或伪随机地移动列表内的位置以用于节点选择来选择节点的子集以进行包括。
32.替选地或附加地,可以基于图112的广度优先搜索来选择被选择成包括在节点集合122中的节点。在这些和其他实施方式中,可以从节点列表中选择节点以包括在节点集合122中。连接至基于广度优先搜索的所选节点的这些节点也可以包括在节点集合122中。还可以基于所选节点的广度优先搜索将连接至所选节点所连接的节点的附加节点添加到节点集合122。
33.在一些实施方式中,可以基于节点集合122中的节点来选择要包括在节点集群集合124中的节点集群。在一些实施方式中,节点集合122中的每个节点的节点集群可以包括在节点集群集合124中。替选地或附加地,还可以包括附加的节点集群,例如基于图112的广度优先搜索在节点集群集合124中的节点集群的特定数目的边内的节点集群。因此,节点集群集合124中的节点集群的数目可能大于节点集合122中的节点的数目。
34.替选地或附加地,可以基于节点集合122中的节点和图112中节点集合122中的节点相对于节点集群的布置来选择要包括在节点集群集合124中的节点集群。在这些和其他实施方式中,对于节点集合122中的每个节点,可以选择图112的模块度增加最高的特定数目的节点集群以包括在节点集群集合124中。例如,对于第一节点,多达三个相邻的节点集群可以包括在节点集群集合124中。可以基于三个节点集群是第一节点的邻居以及通过将第一节点与三个节点集群分组与将第一节点与其他相邻节点分组相比图112的模块度增加更多来选择三个节点集群。
35.图112的模块度可以指示图112的结构的度量。具有高模块度的图可以包括被分组在一起的节点之间的密集连接和未被分组在一起的节点之间的稀疏连接。可以在操作流程100期间使用模块度度量作为要求解的优化问题,以将节点分组在一起来确定图112中的社区并因此确定网络102中的社区。
36.作为示例实现方式,对于节点集合122中的第一节点,可以确定相邻的节点集群。对于每个相邻的节点集群,可以响应于将第一节点与每个相邻的节点集群分组来确定图112的模块度。具有最高模块度增加的特定数目的相邻的节点集群可以包括在节点集群集合124中。因此,节点集群集合124中的节点集群的数目可能大于节点集合122中的节点的数目。
37.在一些实施方式中,响应于在针对节点集群集合124选择节点集群时针对节点集合122的节点选择仅一个节点集群,该节点可以从节点集合122中被移除并被分配到该一个节点集群。因此,当优化问题被求解时,在操作140期间可以不将节点重新分配到不同的节点集群。
38.在操作130处,可以使用节点集合122和节点集群集合124来定义第一优化问题132。在一些实施方式中,第一优化问题132可以是模块度的最大化问题。替选地或附加地,第一优化问题132可以是欧几里得(euclidian)距离最小化问题。替选地或附加地,第一优化问题132可以是可以用于确定图中的社区的另一种类型的优化问题。
39.例如,为了求解模块度的最大化问题,节点集合122中的节点可以被分配到节点集
群集合124中的不同的节点集群以使图112的模块度最大化。该解可以使得将节点集合122的一个或更多个节点重新分配到节点集群集合124的不同的节点集群。例如,可以将第一节点分配到如操作120中定义的第一节点集群。模块度的最大化问题的解可以将第一节点重新分配到第二节点集群。因此,第二节点集群可以包括第一节点以及一个或更多个第二节点。
40.模块度的最大化问题的解可以使得将节点集合122中的每个节点分配到节点集群集合124中的一个且仅一个节点集群。为了增加模块度,节点集群集合124中的一个或更多个节点集群可以包括从节点集合122的多个节点的分配。注意,在求解模块度的最大化问题时,不属于节点集合122的节点可以不接收不同的节点集群分配。确切来说,在求解模块度的最大化问题的同时,不属于节点集合122的节点的节点集群可以保持静态。
41.在一些实施方式中,优化问题可能难以求解。然而,其他优化问题可以使用硬件来求解。例如,可以使用硬件来求解二次无约束二进制优化(qubo)问题。在一些实施方式中,在操作130处,可以将qubo问题的框架中对优化问题的公式表示构建为第一优化问题132。可以使用节点集合122、节点集群集合124和图112来执行构建。在这些和其他实施方式中,作为qubo问题的公式表示的优化问题可以指示优化问题是使用用于在qubo框架中求解优化问题的变量构建的,使得第一优化问题132生成作为近似解的解。
42.以下是在qubo问题的框架中的模块度的最大化问题公式表示的示例,然而,在qubo问题的框架中也可以用公式表示其他优化问题。
43.在一些实施方式中,模块度的最大化问题可以定义为如下:
[0044][0045]
其中,a是表示图112的邻接矩阵,k是向量,其中,ki=∑
jai,j
并且kj=∑
iai,j
,从而ki和kj分别是连接至节点i和节点j的边的值的总和,且如果u=v,则δ(u,v)等于1,否则等于0。
[0046]
在一些实施方式中,qubo问题可以定义如下:
[0047]
其中x∈{0,1}
[0048]
为了创建作为图112的模块度的最大化问题的公式表示的qubo,可以将模块度的最大化问题重新用公式表示为qubo的形式,其中针对节点集群集合124的节点集群仅考虑节点集合122的节点。为了将模块度的最大化问题重新用公式表示为qubo的形式,通过在寻求保持模块度的最大化问题的同时引入附加变量来重新用公式表示模块度的最大化问题的等式。例如,模块度的最大化问题的等式可以简化为两个节点集群,使得图中的每个节点属于或不属于节点集群c。以下等式是以上模块度的最大化问题的简化等式。
[0049][0050]
其中,s是来自指示节点是否属于集群c的1和-1的集合的二进制变量的向量。以上
简化等式可以通过对等式取反来更改为最小化。另外,可以在不改变优化问题的情况下去除系数1/4m以形成以下等式:
[0051][0052]
另外,二进制变量1和-1可以转换为0和1的集合。因此,得出以下等式:
[0053]
其中xi∈{0,1}
[0054]
去除常数并应用一系列操作后,以上等式可以简化如下:
[0055][0056]
以上等式可以是整个图中两个集群的模块度的最大化问题的qubo公式表示。可以操纵以上等式,使得该等式适用于图的节点集合和多个社区,例如节点集合122的节点和特定节点集群、被选择为属于节点集群集合124的节点集群或被选择为属于下文描述的第二节点集群集合152的节点集群。基于考虑多个集群的等式,可以向该等式添加约束以指示节点一次可以仅属于一个节点集群。以下等式表示具有约束的以上等式的公式表示:
[0057][0058]
其中,l指示节点集群集合124的节点集群,s
l
指示集群l是其候选的节点,x
i,l
是包括表示所有节点对集群l的隶属关系的二进制变量的向量x
l
的第i个元素,并且γ是施加约束的惩罚系数。
[0059]
以上等式还可以写成矩阵形式,并且执行进一步的操作,得到呈表示模块度的最大化问题的qubo形式的以下等式:
[0060][0061]
其中,和是对角元素基于的块对角矩阵,基于节点集群的数目,并且x是大小等于节点集群的数目的向量。
[0062]
在一些实施方式中,在操作140处,可以生成第一优化问题132的解。可以通过将第一优化问题132提供给量子处理系统、数字退火系统或被配置成求解qubo问题的一些其他系统来生成解。通过求解第一优化问题132生成的解可以呈表示图112的模块度的向量和值的形式。该向量可以指示节点集合122中的每个节点被分配到节点集群集合124中的哪个节点集群。
[0063]
在一些实施方式中,基于向量,节点到节点集群的分配可以被更新以生成聚类图142。聚类图142可以包括每个节点被分配到哪个节点集群的指示。注意,对于操作流程100的第一次迭代,可以仅将节点集合122中的节点分配到与在操作110中最初分配到每个节点的节点集群不同的节点集群。此外,可以仅将节点集合122的节点分配到节点集群集合124中的节点集群。
[0064]
在操作140处,可以确定是否可以进一步改进基于图112的当前配置的节点到节点集群的分配。在这些和其他实施方式中,响应于确定进一步改进,可以将聚类图142提供给操作120。
[0065]
在这些和其他实施方式中,在操作120中,可以定义附加节点集合122和附加节点集群集合124。附加节点集合122可以包括来自图112的可能不包括在初始节点集合122中的一个或更多个节点。替选地或附加地,附加节点集群集合124可以包括可能不包括在初始节点集群集合124中的一个或更多个节点集群。例如,可以基于与先前迭代中使用的节点不同的节点,使用广度优先搜索来选择附加节点集合122。
[0066]
在一些实施方式中,可以基于响应于节点集合122的节点在节点集群集合124的节点集群之间的重新分配而增加的图112的模块度来确定进一步改进节点到节点集群的分配。在一些实施方式中,可以基于图112的模块度增加可以满足阈值的量来确定进一步改进节点到节点集群的分配。
[0067]
在一些实施方式中,图112的模块度的增加量可以基于通过求解第一优化问题132获得的值。替选地或附加地,可以响应于操作流程100的迭代次数满足阈值或响应于操作流程100的处理时间量满足阈值来确定进一步改进节点到节点集群的分配。替选地或附加地,可以使用诸如迭代、处理时间和图112的模块度的因素的某种组合来确定是否进一步改进节点到节点集群的分配。
[0068]
在一些实施方式中,响应于确定不进一步改进节点到节点集群的分配,可以向操作150提供聚类图142。在操作150处,可以基于提供给操作150的聚类图142来选择第二节点集群集合152。
[0069]
在一些实施方式中,可以随机选择待包括在第二节点集群集合152中的聚类图142的节点集群。替选地或附加地,可以通过滑动窗口策略来选择待包括在第二节点集群集合152中的节点集群,其中选择在节点集群的排序列表中连续布置的第二节点集群集合152的子集。基于随机或伪随机地移动用于选择节点集群的列表内的位置来选择节点集群的子集以进行包括。
[0070]
替选地或附加地,可以基于对基于节点集群的聚类图142的广度优先搜索来选择被选择以包括在第二节点集群集合152中的节点集群。在这些和其他实施方式中,可以从节点集群的列表中选择节点集群以包括在第二节点集群集合152中。连接至基于广度优先搜索选择的节点集群的这些节点集群也可以包括在第二节点集群集合152中。还可以基于对所选节点集群的广度优先搜索将连接至所选节点集群所连接的节点集群的附加节点集群添加到第二节点集群集合152。
[0071]
在操作160处,可以使用第二节点集群集合152和聚类图142来定义和求解第二优化问题。在一些实施方式中,第二优化问题可以是模块度的最大化问题。替选地或附加地,第二优化问题可以是欧几里德距离最小化问题或其他类型的优化问题。在这些和其他实施
方式中,第二优化问题可以是与第一优化问题132相同类型或不同类型的优化问题。
[0072]
在一些实施方式中,为了在第二优化问题是模块度的最大化问题时求解第二优化问题,可以合并第二节点集群集合152中的两个或更多个节点集群以使聚类图142的模块度最大化。该解可以使得将第二节点集群集合152的节点集群之一中的一个或更多个节点重新分配到第二节点集群集合152中的另一节点集群。例如,可以将第一节点集群的节点分配到第二节点集群。这样,第二节点集群可以包括第一节点集群和第二节点集群中的所有节点。因此,第一节点集群可能不再包括节点并且可能被剔除。该解可以使得多个节点集群与多个其他节点集群组合。因此,模块度的最大化问题的解可能会产生更少的节点集群。注意,在求解模块度的最大化问题的同时,可以不对不属于第二节点集群集合152的节点集群进行合并。确切来说,在求解模块度的最大化问题的同时,不属于第二节点集群集合152的节点集群可以保持静态。
[0073]
在一些实施方式中,可以通过在qubo问题的框架中构建第二优化问题的公式表示来求解第二优化问题。可以使用第二节点集群集合152和聚类图142来执行构建。
[0074]
在一些实施方式中,可以通过将第二优化问题提供给量子处理系统、数字退火系统或被配置成求解qubo问题的一些其他系统来生成第二优化问题的解。通过求解第二优化问题生成的解可以是表示聚类图142的模块度的向量和值的形式。该向量可以指示聚类图142的剩余节点集群和/或聚类图142的待合并的节点集群。在一些实施方式中,基于该向量,节点到节点集群的分配可以被更新以生成第二聚类图162。
[0075]
在一些实施方式中,可以将第二聚类图162提供给操作150。在这些和其他实施方式中,在操作150中,可以如先前讨论的那样定义附加的第二节点集群集合152并且可以执行操作160来定义附加的第二聚类图162。
[0076]
在一些实施方式中,可以响应于对进一步合并第二聚类图162的节点集群的确定,将第二聚类图162提供给操作150。在这些和其他实施方式中,可以基于第二聚类图162的模块度在操作160之后增加可以满足阈值的量,确定进一步合并第二聚类图162的节点集群。
[0077]
在一些实施方式中,第二聚类图162的模块度的增加量可以基于通过求解第二优化问题而获得的值。替选地或附加地,可以响应于操作流程100的迭代次数满足阈值或者响应于操作流程100的处理时间量满足阈值,确定进一步合并节点群集。替选地或附加地,可以使用诸如迭代、处理时间和第二聚类图162的模块度的因素的某种组合来确定是否进一步合并节点集群。
[0078]
在一些实施方式中,可以将第二聚类图162提供给操作120。在这些和其他实施方式中,在操作120中,可以如先前所讨论的那样定义附加节点集合122和附加节点集群集合124,并且可以执行操作130和操作140。在再次执行操作150和操作160之前,可以执行操作120、操作130和操作140的进一步迭代。在这些和其他实施方式中,可以如上所述再次迭代操作150和操作160。
[0079]
在一些实施方式中,操作流程100可以继续,直到在操作160处确定将不执行对节点到节点集群的分配或节点集群的合并的进一步改进。在这些和其他实施方式中,可以响应于针对包括操作150和操作160的操作流程100的第一次迭代、作为第二优化问题的解的一部分而输出的模块度值满足阈值,确定不执行对节点到节点集群的分配或节点集群的合并的进一步改进。
[0080]
例如,在将聚类图142提供给操作150之后的操作流程100的第一次迭代期间,该解指示模块度没有增加,则操作流程100可以结束。替选地或附加地,可以响应于操作流程100的迭代次数满足阈值或者响应于操作流程100的处理时间量满足阈值来确定完成操作流程100。替选地或附加地,可以使用诸如迭代、处理时间和聚类图142和/或第二聚类图162的模块度的因素的某种组合来确定何时完成操作流程100。
[0081]
在一些实施方式中,当操作流程100结束时产生的聚类图142或第二聚类图162可以指示网络102的节点的最终分组。在这些和其他实施方式中,在聚类图142或第二聚类图162中被分组在一起的节点可以被指示为由操作流程100分组在一起。因此,操作流程100可以确定网络102的节点的社区。
[0082]
在不脱离本公开内容的范围的情况下,可以对操作流程100进行修改、添加或省略。例如,在一些实施方式中,操作流程100可以包括附加操作或更少的操作。
[0083]
图3示出了在对数据进行集群时可以使用的示例方法的流程图。可以根据本公开内容中描述的至少一个实施方式来布置方法300。在一些实施方式中,方法300的一个或更多个操作可以由诸如图5的系统500的设备或系统或者诸如关于图1描述的这些系统的另一设备、设备的组合、系统或多个系统来执行。例如,可以在图1的操作110期间执行方法300的一个或更多个操作。在这些和其他实施方式中,可以基于对存储在一个或更多个非暂态计算机可读介质上的指令的执行来执行方法300。尽管被示出为离散块,但是可以根据期望的实现方式将各个块划分为另外的块,组合成较少的块或者去除各个块。
[0084]
方法可以在框302处开始,在框302处可以获得图。该图可以包括多个节点。在这些和其他实施方式中,每个节点可以通过至少一个边连接到至少一个其他节点。该图可以是网络的表示。在一些实施方式中,可以为图中的每个节点分配节点集群。这样,节点集群的数目可以等于图中的节点的数目。
[0085]
在框304处,可以选择节点集合和节点集群集合。在一些实施方式中,节点集合中的节点的数目可以少于图中的节点的数目。可以随机地选择被选择以用于包括在节点集合中的节点,可以基于给定图中的随机或以其他方式定义的节点的广度优先搜索来选择、或者可以使用某种其他算法来选择被选择以用于包括在节点集合中的节点。节点集群集合中的节点集群可以包括节点集合中的每个节点的节点集群。替选地或附加地,可以基于响应于相邻节点集群中的节点集合中的节点的分组的模块度增加来选择节点集群集合中的节点集群。
[0086]
在框306处,可以基于节点集群集合来求解节点集合的第一优化问题。第一优化问题可以是用公式表示为二次无约束二进制优化问题的模块度的最大化问题。替选地或附加地,第一优化问题可以是用公式表示为二次无约束二进制优化问题的另一优化问题。
[0087]
当第一优化问题是模块度的最大化问题时,可以基于节点集合、节点集群集合和图来定义第一优化问题。在一些实施方式中,可以通过将节点集合中的一个或更多个节点重新分配到节点集群集合中的不同的节点集群同时保持不属于节点集合的节点的已分配的节点集群来求解第一优化问题。
[0088]
在框308处,可以确定是否可以继续改进对节点集群的节点分配。响应于确定继续重新定义节点到节点集群的分配,方法300可以进行至框304。在这些和其他实施方式中,可以定义另一节点集合和另一节点集群集合。另一节点集合可以包括初始节点集合中的一个
或更多个节点,或者可以不包括初始节点集合中的节点。节点集群可以包括基于在框306中求解第一优化问题而分配给其的节点。
[0089]
在一些实施方式中,确定继续重新定义节点到节点集群的分配可以基于在基于第一优化问题的解将节点重新分配到不同的节点集群之后图的模块度的变化。例如,响应于图的模块度的变化满足阈值,可以确定继续重新定义节点到节点集群的分配。
[0090]
响应于不继续重新定义节点到节点集群的分配,方法300可以进行至框310。在框310处,可以针对第二节点集群集合选择节点集群。可以随机地选择被选择以用于包括在第二节点集群集合中的节点集群,可以基于给定随机或以其他方式定义的节点集群的广度优先搜索来选择或者可以使用某种其他算法来选择被选择以用于包括在第二节点集群集合中的节点集群。
[0091]
在框312处,可以求解第二节点集群集合的第二优化问题。第二优化问题可以是用公式表示为二次无约束二进制优化问题的模块度的最大化问题。替选地或附加地,第二优化问题可以是用公式表示为二次无约束二进制优化问题的另一优化问题。在一些实施方式中,第二优化问题可以是与第一优化问题相同或不同类型的优化问题。
[0092]
当第二优化问题是模块度的最大化问题时,可以基于第二节点集群集合和在求解第一优化问题之后定义的图来定义第二优化问题。在一些实施方式中,可以通过将节点集群合并在一起同时保持不属于第二节点集群集合的节点集群来求解第二优化问题。
[0093]
在框314处,可以确定是否可以继续进行节点集群的合并。响应于确定继续合并节点集群,方法300可以进行至框310。在这些和其他实施方式中,可以定义另一第二节点集群集合。该另一第二节点集群集合可以包括第二节点集群集合中的一个或更多个节点集群,或者可以不包括初始第二节点集群集合中的节点。
[0094]
在一些实施方式中,确定继续合并节点集群可以基于在基于第二优化问题的解合并节点集群之后图的模块度的变化。例如,响应于图的模块度的变化满足阈值,可以确定继续合并节点集群。
[0095]
响应于不继续合并节点集群,方法300可以进行至框316。在框316处,可以输出该图的节点集群。在图的节点集群中被分组在一起的节点可以表示节点的分组。因此,节点集群的数目可以表示由图表示的网络中的社区的数目。特定节点集群的节点可以表示作为由特定节点集群表示的社区的一部分的节点。如参照图3所述,在将图的节点分组成节点集群之前,可以不定义社区的数目。确切来说,方法300可以基于如图所定义的网络拓扑来选择社区的数目。替选地或附加地,网络的大小可以不限制方法300的使用。确切来说,可以执行的迭代次数可以基于网络的大小,但是用于求解优化问题的硬件可以不限制可以执行社区发现的网络的大小。
[0096]
应当理解,对于本文公开的这个和其他过程、操作和方法,可以以不同的顺序实现所执行的功能和/或操作。此外,概述的功能和操作仅作为示例提供,并且在不偏离所公开的实施方式的本质的情况下,一些功能和操作可以是可选的、可以被组合成较少的功能和操作或者可以被扩展成另外的功能和操作。
[0097]
图4示出了当对数据进行集群时可以使用的示例方法的流程图。可以根据本公开内容中描述的至少一个实施方式来布置方法400。在一些实施方式中,方法400的一个或更多个操作可以由诸如图5的系统500的设备或系统或者诸如关于图1描述的这些系统的另一
设备、设备的组合、系统或多个系统来执行。例如,可以在图1的操作110期间执行方法400的一个或更多个操作。在这些和其他实施方式中,可以基于对存储在一个或更多个非暂态计算机可读介质上的指令的执行来执行方法400。尽管被示出为离散块,但是可以根据期望的实现方式将各个块划分为另外的块,组合成较少的块或者去除各个块。
[0098]
该方法可以在框402处开始,网络的每个节点可以被分配到不同的节点集群,使得节点的数目等于节点集群的数目。在框404处,可以选择网络的多个节点作为节点集合。
[0099]
在框406处,可以通过将节点集合中的一个或更多个节点重新分配到不同的节点集群同时保持不属于该节点集合的节点的已分配节点集群来求解第一优化问题。
[0100]
在框408处,在求解第一优化问题之后,选择多个节点集群作为节点集群集合。
[0101]
在框410处,可以通过合并节点集群集合中的两个或更多个节点集群同时保持不属于节点集群集合的节点集群来求解第二优化问题。在这些和其他实施方式中,第一优化问题和第二优化问题可以是相同类型的优化问题。在框412处,可以使用节点集群中的节点的分布来识别网络中的一个或更多个子结构。
[0102]
应当理解,对于本文公开的这个和其他过程、操作和方法,可以以不同的顺序实现所执行的功能和/或操作。此外,概述的功能和操作仅作为示例提供,并且在不偏离所公开的实施方式的本质的情况下,一些功能和操作可以是可选的、可以被组合成较少的功能和操作或者可以被扩展成另外的功能和操作。
[0103]
例如,在一些实施方式中,方法400还可以包括使用节点集合和节点集群在第三优化问题的框架中构建第一优化问题的公式表示。在一些实施方式中,第一优化问题是网络的模块度的最大化,并且第三优化问题是二次无约束二进制优化问题。
[0104]
作为另一示例,方法400还可以包括:在求解第二优化问题之前,选择网络的另外多个节点作为另一节点集合,并且通过将另一节点集合中的一个或更多个节点重新分配到不同的节点集群同时保持不属于另一节点集合的节点的已分配的节点集群来重新求解第一优化问题。
[0105]
在这些和其他实施方式中,方法400还可以包括:重复以下步骤:选择网络的另外多个节点作为另一节点集合,并且通过将另一节点集合中的一个或更多个节点重新分配到不同的节点集群来重新求解第一优化问题,直到在后续迭代之间网络的模块度的变化满足阈值。
[0106]
替选地或附加地,方法400还可以包括:在求解第二优化问题之后,选择另外多个节点集群作为另一节点集群集合,并且通过合并另一节点集群集合中的两个或更多个节点集群同时保持不属于另一节点集群集合的节点集群来重新求解第二优化问题。在这些和其他实施方式中,方法400还可以包括:重复以下步骤:选择另外多个节点集群作为另一节点集群集合,并且通过合并另一节点集群集合中的两个或更多个节点集群来重新求解第二优化问题,直到在后续迭代之间网络的模块度的变化满足阈值。
[0107]
作为另一示例,方法400还可以包括:在求解第二优化问题之后,选择网络的另外多个节点作为另一节点集合,并且通过将另一节点集合中的一个或更多个节点重新分配到不同的节点集群同时保持不属于另一节点集合的节点的已分配的节点集群来重新求解第一优化问题。
[0108]
作为另一示例,方法400还可以包括:在求解第一优化问题之前,选择第二多个节
点集群作为第二节点集群集合。在这些和其他实施方式中,可以通过将该节点集合中的一个或更多个节点重新分配到第二节点集群集合中的不同的节点集群同时保持不属于该节点集合的节点的已分配的节点集群来求解第一优化问题。
[0109]
图5是示出根据本公开内容的至少一个实施方式的可以用于数据集群的示例系统500的框图。系统500可以包括都可以通信地耦接的处理器510、存储器512、通信单元516、显示器518和用户接口单元520。在一些实施方式中,系统500可以用于执行本公开内容中描述的一种或更多种方法。
[0110]
例如,系统500可以用于执行图1的操作流程100中的一个或更多个操作。
[0111]
通常,处理器510可以包括任何合适的专用或通用计算机、计算实体或者包括各种计算机硬件或软件模块的处理设备,并且可以被配置成执行存储在任何适用的计算机可读存储介质上的指令。例如,处理器510可以包括微处理器、微控制器、并行处理器(例如图形处理单元(gpu)或张量处理单元(tpu))、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或被配置成解释和/或执行程序指令和/或处理数据的任何其他数字或模拟电路系统。
[0112]
尽管在图5中被示出为单个处理器,但是应当理解,处理器510可以包括分布在任意数目的网络或物理位置上的任意数目的处理器,这些处理器被配置成单独地或共同地执行本文描述的任意数目的操作。在一些实施方式中,处理器510可以解释和/或执行程序指令并且/或者处理存储在存储器512中的数据。在一些实施方式中,处理器510可以执行存储在存储器512中的程序指令。
[0113]
例如,在一些实施方式中,处理器510可以执行存储在存储器512中的与任务执行相关的程序指令,使得系统500可以按照指令指导地执行或指导与其相关联的操作的执行。在这些和其他实施方式中,指令可以用于执行图1的一个或更多个操作、图3的方法300的一个或更多个框或者图4的方法400的一个或更多个框。
[0114]
存储器512可以包括用于携载或具有存储在其上的计算机可执行指令或数据结构的计算机可读存储介质或者一个或更多个计算机可读存储介质。这样的计算机可读存储介质可以是可以由诸如处理器510的通用或专用计算机访问的任何可用介质。
[0115]
作为示例而非限制,这样的计算机可读存储介质可以包括非暂态计算机可读存储介质,该非暂态计算机可读存储介质包括随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、致密盘只读存储器(cd-rom)或其他光盘存储装置、磁盘存储装置或其他磁存储设备、闪速存储器设备(例如,固态存储器设备)、或可以用于携载或存储计算机可执行指令或数据结构形式的特定程序代码并可以由通用计算机或专用计算机访问的任何其他存储介质。以上组合也可以包括在计算机可读存储介质的范围内。
[0116]
计算机可执行指令可以包括例如被配置成使处理器510执行本公开内容中描述的某些操作或一组操作的指令和数据。在这些和其他实施方式中,应将本公开内容中说明的术语“非暂态”解释为仅排除被发现不在联邦巡回法院判决in re nuijten,500f.3d 1346(fed.cir.2007)中的可取得专利的主题范围内的那些类型的暂态介质。以上的组合也可以被包括在计算机可读介质的范围内。
[0117]
通信单元516可以包括被配置成通过网络发送或接收信息的任何部件、设备、系统或其组合。在一些实施方式中,通信单元516可以与在其他位置或相同位置处的其他设备通
信,或者甚至与同一系统内的其他部件通信。例如,通信单元516可以包括调制解调器、网卡(无线或有线)、红外通信设备、无线通信设备(例如天线)和/或芯片组(例如,设备、802.6设备(例如,城域网(man))、wifi设备、wimax设备、蜂窝通信设施等)等。通信单元516可以允许与网络和/或本公开内容中描述的任何其他设备或系统交换数据。
[0118]
显示器518可以被配置为一个或更多个显示器,如lcd、led、盲文终端或其他类型的显示器。显示器518可以被配置成呈现视频、文本字幕、用户界面和由处理器510指示的其他数据。
[0119]
用户接口单元520可以包括允许用户与系统500对接的任何设备。例如,用户接口单元520可以包括鼠标、跟踪板、键盘、按钮、摄像机和/或触摸屏,以及其他设备。用户接口单元520可以接收来自用户的输入并且向处理器510提供输入。在一些实施方式中,用户接口单元520和显示器518可以组合。
[0120]
在不脱离本公开内容的范围的情况下,可以对系统500进行修改、添加或省略。例如,在一些实施方式中,系统500可以包括可能未明确示出或描述的任何数目的其他部件。此外,根据某些实现方式,系统500可以不包括所示出和描述的一个或更多个部件。
[0121]
如上所指示的,如下面更详细地讨论的,本文中描述的实施方式可以包括使用包括各种计算机硬件或软件模块的专用或通用计算机(例如,图5的处理器510)。此外,如上所指示的,可以使用用于携载或具有存储在其上的计算机可执行指令或数据结构的计算机可读介质(例如,图5的存储器512)来实现本文中描述的实施方式。
[0122]
在一些实施方式中,本文描述的不同部件、模块、引擎和服务可以被实现为在计算系统上执行的对象或过程(例如,作为单独的线程)。尽管本文所描述的系统和方法中的一些通常被描述为以(存储在通用硬件上和/或由通用硬件执行的)软件来实现,但特定硬件实现方式或软件和特定硬件实现方式的组合也是可能的和预期的。
[0123]
根据一般实践,附图中所示的各种特征可能未按比例绘制。本公开内容中呈现的图示并不意味着是任何特定装置(例如,设备、系统等)或方法的实际视图,而仅是用于描述本公开内容的各种实施方式的理想化表示。因此,为了清楚起见,各种特征的尺寸可以任意地扩大或缩小。另外,为了清楚起见,一些附图可以被简化。因此,附图可能未描绘给定装置(例如,设备)的所有部件或特定方法的所有操作。
[0124]
本文中使用的术语,特别是在所附权利要求(例如,所附权利要求的正文)中使用的术语通常意指“开放式”的术语(例如,术语“包括”应该被解释为“包括但不限于”,术语“具有”应该被解释为“至少具有”,术语“包含”应该被解释为“包含但不限于”等)。
[0125]
另外,如果意在特定数目的所引入的权利要求叙述,则这样的意图将在权利要求中明确记载,并且在没有这样的叙述的情况下,不存在这样的意图。例如,为了帮助理解,所附权利要求可以包含介绍性短语“至少一个”和“一个或更多个”的使用以引入权利要求叙述。然而,即使当同一权利要求包括介绍性短语“一个或更多个”或“至少一个”以及不定冠词例如“一”或“一种”(例如,“一”和/或“一种”应当解释为意指“至少一个”或“一个或更多个”)时,使用这样的短语也不应当解释为暗示由不定冠词“一”或“一种”引入的权利要求书叙述将包含这样的引入的权利要求叙述的任何特定权利要求限制为包含仅一个这样的叙述的实施方式;对于用于引入权利要求叙述的定冠词的使用也是如此。
[0126]
另外,即使明确记载了特定数目的引入的权利要求叙述,应当理解,这种叙述也应
当被解释为意指至少所记载的数目(例如,没有其他修饰语的不加修饰的叙述“两个叙述”意指至少两个叙述或者两个或更多个叙述)。此外,在使用类似于“a、b和c中的至少一个等”或“a、b和c中的一个或更多个等”的惯用语的情况下,通常这样的构造意在包括仅a、仅b、仅c、a和b一起、a和c一起、b和c一起或者a、b和c一起等。例如,术语“和/或”的使用旨在以这种方式来解释。
[0127]
此外,呈现两个或更多个替选术语的任何分隔词或短语,不论在说明书、权利要求还是附图中,都应当被理解为构思了包括所述术语中的一个、所述术语中的任何一个、或所述术语两者的可能性。例如,短语“a或b”应当被理解为包括“a”或“b”或“a和b”的可能性。
[0128]
另外,术语“第一”、”第二”、“第三”等的使用在本文中不一定用于暗指元素的特定顺序或数目。通常,术语“第一”、“第二”、“第三”等用于作为通用标识符来在不同元素之间进行区分。在没有表明术语“第一”、“第二”、“第三”等暗指特定顺序的情况下,这些术语不应当被理解为暗指特定顺序。此外,在没有表明术语“第一”、“第二”、“第三”等暗指元素的特定数目的情况下,这些术语不应当被理解为暗指元素的特定数目。例如,第一小组件(widget)可以被描述为具有第一面并且第二小组件可以被描述为具有第二面。针对第二小组件使用术语“第二面”可以用于将第二小组件的这样的面与第一小组件的“第一面”区分开,而不暗指第二小组件具有两个面。
[0129]
本文记载的所有示例和条件性语言旨在用于教导目的,以帮助读者理解发明人为促进本领域而贡献的发明和构思,并且应当被解释为不限于这些具体记载的示例和条件。尽管已经详细描述了本公开内容的实施方式,但是应该理解的是,在不偏离本公开内容的精神和范围的情况下,可以对其进行各种变化、替换和变型。