最近在做链路预测,参考了一些资料写了一个局部随机游走,游走步数为节点总数的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