天天看點

python局部随機遊走LRW

最近在做鍊路預測,參考了一些資料寫了一個局部随機遊走,遊走步數為節點總數的100倍。初學者,程式寫的很爛,有待提高。。。
           
def LRW(vnow,vtar):#源節點,目标節點
    d = {}
    d[vnow] = 1            
    for step in range(steps):#随機遊走步數為節點的100倍
        neighbors = G.neighbors(vnow)#擷取某個節點的鄰居,networkx建立的圖
        vnow = neighbors[random.randint(0,len(neighbors)-1)]#随機選擇鄰居節點
        if d.has_key(vnow):#用字典記錄每個節點到達的次數
            d[vnow] += 1
        else :
            d[vnow] = 0
            d[vnow] += 1
    value = d[vtar]/float(steps)#每個節點統計的步數除以總步數,等于到達機率
    return value