我想定义一个加权图,其中node id是人名,节点之间的链接是定向的。每个边都有一个表示关系的标签和一个实数的信任值。在
然后,我需要找到一对用户之间的路径来计算这两个用户之间的间接信任。我写了以下代码,但我得到了以下错误:
File "osn_graph.py", line 30, in trust=trust*float(G[list[i]][list[i+1]][trust]) KeyError: 1
#!/usr/bin/python
import networkx as nx
G = nx.DiGraph()
f = open("osndata.txt","rb")
while 1:
line = f.readline()
if not line:
break
src = line.rstrip('\n')
G.add_node(src)
line = f.readline()
dest = line.rstrip('\n')
G.add_node(dest)
line = f.readline()
t = int(line)*0.01
line = f.readline()
r = line.rstrip('\n')
G.add_edge(src, dest, weight=t, relation=r)
f.close()
try:
list = nx.dijkstra_path(G, "akash", "jitendra")
trust = 1
i = 0
for j in range(0, len(list) - 1):
trust = trust * float(G[list[j]][list[j + 1]]['weight'])
i += 1
print trust
except nx.NetworkXNoPath:
print "There is no path between nodes"
目前没有回答
相关问题 更多 >
编程相关推荐