Я работаю над неориентированным графом из файла ребер, пытаюсь удалить вершины высокой степени, используя g.delete_vertices(107)
, но я думаю, что это работает не правильно, например, весь граф имеет 4039 узлов и 88234 ребер, степеньvertex(107)
равно 1045, а vertex(1684)
равно 792, поэтому, когда я удаляю узлы (107 и 1684) по одному, соединенные с ними ребра также должны быть удалены, тогда число ребер должно быть уменьшено до 88234-1045=87189
и 87189-791=86398
, но я получил странное число 87189 и 87127, я не знаю, что произошло.
{'UserID': '107', 'degree': 1045},
{'UserID': '1684', 'degree': 792},
{'UserID': '1912', 'degree': 755},
import graph:
edges = []
#f= open('facebook_data', "r")
with open('facebook_data.csv','rt',encoding='utf-8') as f:
for row in csv.reader(f.read().splitlines()):
u, v = [i for i in row]
edges.append((u, v))
#print(edges)
from igraph import Graph as IGraph
g = IGraph.TupleList(edges, directed=False, vertex_name_attr='UserID', edge_attrs=None, weights=False)
print( 'number of nodes: '+ str(len(g.vs())))
print( 'number of edges: '+ str(len(g.es())))
for p in g.vs:
print (p["UserID"],p.degree())
names = g.vs["UserID"]
g.delete_vertices(107)
len(g.es()) #calculate the number of edges