我需要某種計算,其值由下面的inneficient僞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)。
我試着想在某種廣度上先搜索,但我不能。
編輯:更多信息
- 圖不是靜態的。我經常添加和刪除邊緣,所以我不能只計算一次。我必須不斷更新「下一個鄰居列表」。
- 我將圖存儲爲一個鄰接矩陣。
圖表如何存儲? – Patrick
鄰接矩陣。 –
頂點數是否不變? – Szabolcs