【发布时间】:2012-11-22 03:57:03
【问题描述】:
如何使用 java.util 找到图的中心(顶点,与其他所有顶点相连,但边指向图的中心)。它对于类似 facebook 的网站非常有用。
【问题讨论】:
-
图的中心是一组具有最小偏心率的顶点。你是怎么定义的?
如何使用 java.util 找到图的中心(顶点,与其他所有顶点相连,但边指向图的中心)。它对于类似 facebook 的网站非常有用。
【问题讨论】:
假设您有一个带有一组 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 中还有其他边时,这也会识别图形的中心。请注意,可能有多个中心...
可以找到图的一个不太严格定义的中心,作为连接矩阵中其行中条目最多的顶点。
你可以避免构造矩阵 A,当你有集合 E 并且只计算每个顶点在边缘元组的 to 位置出现的次数。具有最大计数的顶点是图中未定义的中心,或者计数为 n - 1 的顶点是您严格定义的中心。
【讨论】: