Hi all,
I found something weird in deleting vertices and edges of a graph. Say I simply create a graph like:
g = Graph(directed=False)
g.add_vertex(7)
g.add_edge(g.vertex(0), g.vertex(1))
g.add_edge(g.vertex(1), g.vertex(2))
g.add_edge(g.vertex(2), g.vertex(3))
g.add_edge(g.vertex(3), g.vertex(4))
g.add_edge(g.vertex(2), g.vertex(5))
g.add_edge(g.vertex(5), g.vertex(6))
del_list = [g.vertex(1), g.vertex(3)]
for v in reversed(sorted(del_list)):
print 'deleting vertex', int(v)
## for ve in v.out_edges():
## print 'deleting edges', ve.source(), ve.target()
## g.remove_edge(ve)
g.remove_vertex(v, fast=True)
The above code will delete vertex 3 first, then vertex 1 as expected. However, in order to keep correct topology, we should delete some related edges first, like the three commented lines (start with "##").
But if you uncomment the three lines, weird thing happens: the program will delete vertex 1 first, then vertex 3.