Я пытаюсь реализовать обобщенную эвристическую скидку на степень. Код приведен ниже.не могу получить с этим
получаю этот результат.
33696
180811
Traceback (последний последний вызов):
Файл "GeneralizedDegreeDiscount_test.py", строка 33, в
sumt[w]=sumt[w]+t[w]
KeyError: 1
import networkx as nx
G=nx.read_edgelist('email- Enron.txt',create_using=nx.Graph(),nodetype=int)
print G.number_of_nodes()
print G.number_of_edges()
k=10
p=0.01
S=[]
d=dict()
gdd=dict()
t=dict()
sumt=dict()
for v in G:
d[v]=G.degree(v)
gdd[v]=d[v]
t[v]=0
for i in range(k):
u, gddv = max(gdd.iteritems(), key=lambda (k, v): v)
gdd.pop(u)
S.append(u)
nb=[]
for v in G[u]:
nb.append(v)
t[v]=t[v]+1
for w in G[v]:
nb.append(w)
#print nb
for v in nb:
sumt[w]=0
for w in G[v]:
#sumt[w] = 0
if w not in S:
sumt[w]=sumt[w]+t[w]
gdd[v] = d[v] - 2 * t[v] - (d[v] - t[v]) * t[v] * p + (1 / 2) * t[v] * (t[v] - 1) * p - sumt[w] * p
if gdd[v] < 0:
gdd[v] = 0
print 'final', S
В результате должен получить список с размером k.