我需要计算其值由以下无效的伪 python 代码给出的东西:
def foo(a,b):
tmp = 0
for i in graph.nodes():
for j in graph.nodes():
tmp += c
if (i and j are neighbors):
tmp += a - c
elif (i and j are next-neighbors):
tmp += b - c
return tmp
换句话说,给定所有节点对,foo = a * (E = 边数) + b * (EE = 不是邻居但有共同邻居的对的数量) + c * ( N(N-1 )/2 - EE - E)。
我试图考虑某种广度优先搜索,但我做不到。
编辑:更多信息
- 该图不是静态的。我不断添加和删除边缘,所以我不能只计算一次。我必须不断更新“下一个邻居列表”。
- 我将图形存储为邻接矩阵。