如何使用java查找图形的中心(顶点,与每个其他顶点连接,但边缘指向图形的中心)

时间:2012-11-22 03:57:04

标签: java algorithm graph

如何使用java查找图形的中心(顶点,与每个其他顶点连接,但边缘指向图形的中心)。它非常适用于facebook这样的网站应用程序。

1 个答案:

答案 0 :(得分:4)

假设您有一个顶点集合V的图形:

V = { v1, v2, v3, ... , vn }

现在考虑所有顶点连接到v2并且不存在其他边的极端情况,即作为元组(from,to)给出的边E集是:

E = ( (v1, v2), (v3, v2), ... , (vn, v2) }

在这种极端情况下,v2显然是您定义的图形的中心。

连接矩阵A如下所示:

A = {
   from
to  v1, v2, v3, ..  vn
v1   0   0   0  ..   0    
v2   1   0   1  ..   1
v3   0   0   0  ..   0    
   :               :
vn   0   0   0  ..   0 }

这里v2通过在其连接矩阵A行的每个位置(除了pos v2,即其自身)中有一个来清楚地标识为图的中心。

当E中还有其他边缘时,这甚至可以识别图形的中心。注意,可能有多个中心......

可以找到一个不太严格定义的图形中心作为连接矩阵中其行中最多一个条目的顶点。

当你有一个集合E时,你可以避免构造矩阵A,并且只计算每个顶点在边元组的位置出现多少次。具有最大计数的顶点是图表中丢失定义的中心,或者具有n-1计数的顶点是您严格定义的中心。