In [76]:
from networkit import *
In [87]:
G = readGraph("input/karate.graph", Format.METIS)
In [88]:
# All dynamic algorithms (starting with "Dyn") have a run(), an update()
# and an updateBatch() method. We start by calling run() on the initial graph
dynBC = centrality.DynBetweenness(G)
dynBC.run()
dynBC.ranking()[:10]
Out[88]:
In [89]:
# returns a new random edge for G
def newEdge(G):
u = G.randomNode()
v = G.randomNode()
while G.hasEdge(u, v):
u = G.randomNode()
v = G.randomNode()
return u, v
In [90]:
u, v = newEdge(G)
print("Adding edge ", u, v)
# we add the edge to the graph
G.addEdge(u, v)
# we create an event and update the BC scores
ev = dynamic.GraphEvent(dynamic.GraphEvent.EDGE_ADDITION, u, v, 1.0)
dynBC.update(ev)
In [91]:
dynBC.ranking()[:10]
Out[91]:
In [92]:
# we now create a batch of edges
k = 5
batch = []
for i in range(k):
u, v = newEdge(G)
batch.append(dynamic.GraphEvent(dynamic.GraphEvent.EDGE_ADDITION, u, v, 1.0))
In [93]:
# we update the graph with the batch of edge insertions
for ev in batch:
G.addEdge(ev.u, ev.v)
# we update the betweenness scores
dynBC.updateBatch(batch)
In [94]:
dynBC.ranking()[:10]
Out[94]:
In [ ]: