Graph 图:按公共边分组/聚类的算法

Graph 图:按公共边分组/聚类的算法,graph,grouping,cluster-analysis,nodes,edges,Graph,Grouping,Cluster Analysis,Nodes,Edges,首先,如果我的英语有点差,我很抱歉(它不是我的母语)。我会尽力让别人明白我的意思 我正在为我的硕士论文做一个可视化项目,我提出了一个算法问题。可视化由一个图形组成,该图形通过我所称的关键字(边)表示我所称的人工制品(图形的节点)之间的连接。这些人工制品可以是各种各样的东西。例如,它们可以表示照片,而边缘将表示照片之间的标记。为了便于说明,想象照片A通过标签1连接到照片B。这意味着照片A和照片B都有标签1 现在,我有一个叫做扩展的操作,它是这样工作的: 用户双击一个节点(在我的示例中是一张照片),

首先,如果我的英语有点差,我很抱歉(它不是我的母语)。我会尽力让别人明白我的意思

我正在为我的硕士论文做一个可视化项目,我提出了一个算法问题。可视化由一个图形组成,该图形通过我所称的关键字(边)表示我所称的人工制品(图形的节点)之间的连接。这些人工制品可以是各种各样的东西。例如,它们可以表示照片,而边缘将表示照片之间的标记。为了便于说明,想象照片A通过标签1连接到照片B。这意味着照片A和照片B都有标签1

现在,我有一个叫做扩展的操作,它是这样工作的:

用户双击一个节点(在我的示例中是一张照片),程序就会在数据库中查询到该节点的每个新连接。在上面的示例中,如果用户双击照片B,扩展将生成照片C和照片D,分别带有标记2和3。问题是,这可能会生成大量数据,这给我留下了分组节点的解决方案。理想情况是使用尽可能多的常用关键字(边)进行分组。例如,假设照片C和D都有标签5,那么会有一组C和D的边为5。但如果照片D和E都有标签5和6,则组D和E带有边5和6,然后照片C带有边5(边可以重复)。举例说明:

                             5,6
A----B -> expand B -> A----B-----DE
   1                    1  |
                           |5
                           |
                           C
我的问题是如何完成这个算法。在数据库中,我有以下表格:

关键字 (关键字\u id,其他\u属性)

人工制品 (人工制品标识,其他属性)

关键字_人工制品 (关键字\u id,人工制品\u id)

关键字\u人工制品\u人工制品 (关键字_id、人工制品_id1、人工制品_id2)

解决这个问题的最佳方法是什么?一个可以用相当数量的数据来完成的

我正在用java开发这个程序,使用预使用库