擅长:python、mysql、java
<p>我相信你用的方法很慢。最好还原一下-<br/>
-用零初始化AA(Adamic Adar)矩阵<br/>
-对于每个节点k,它的度为k_deg<br/>
-计算<code>d = log(1.0/k_deg)</code>(为什么log10-它重要吗?)<br/>
-将d加到所有AA<sub>ij</sub>,其中i,j-k<sub>th</sub>行中的所有1对
邻接矩阵<br/>
<strong>编辑:</strong><br/>
-对于稀疏图,将k<sub>th</sub>行中所有1的位置提取到列表中,以达到O(V*(V+E))复杂度,而不是O(V^3)</p>
<pre><code>AA = np.zeros((N,N))
for k = 0 to N - 1 do
AdjList = []
for j = 0 to N - 1 do
if A[k, j] = 1 then
AdjList.Add(j)
k_deg = AdjList.Length
d = log(1/k_deg)
for j = 0 to AdjList.Length - 2 do
for i = j+1 to AdjList.Length - 1 do
AA[AdjList[i],AdjList[j]] = AA[AdjList[i],AdjList[j]] + d
//half of matrix filled, it is symmetric for undirected graph
</code></pre>