次の非効率的な疑似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)。
ある種の幅優先探索を考えようとしましたが、できませんでした。
編集:詳細
- グラフは静的ではありません。私は常にエッジを追加および削除しているので、これを一度だけ計算することはできません。私は常に「次の隣人のリスト」を更新しなければなりません。
- グラフを隣接行列として保存します。