Как удалить края при удалении вершин в igraph - PullRequest
1 голос
/ 29 октября 2019

Я работаю над неориентированным графом из файла ребер, пытаюсь удалить вершины высокой степени, используя 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
...