I am very new to graph tool and graphs in general and hence this naive question.
I have created a 2D square lattice graph as such:
L=4
g = gt.lattice([L,L])
idx = g.vertex_index.copy()
x = g.new_vertex_property("double")
y = g.new_vertex_property("double")
x.a = idx.a % L
y.a = idx.a // L
pos = group_vector_property([x,y])
graph_draw(g,pos,vertex_text=g.vertex_index)
And then I add a property called ‘act_stat’ to each vertex:
(act_stat can be 0 or 1):
act_stat = g.new_vertex_property("int")
act_stat.a = np.random.randint(2,size=L**2)
graph_draw(g,pos,vertex_text=act_stat)
How do I randomly find a vertex which has an ‘act_stat = 0’, and find all the vertices with ‘act_stat=0’ connected to it either directly or through a line of ‘act_stat=1’ vertices.
I do not want to delete the ‘act_stat=1’ vertices using filtering because the goal is to find the path of minimum distances between the randomly chosen ‘act_stat=0’ and all other ‘act_stat=0’ vertices connected to it either directly or through a line of ‘act_stat=1’ vertices.
Any tips on which functions to use will also be greatly appreciated.
From what I understand, I need to use Djikstra’s search algorithm to find the shortest paths between a randomly choses source ‘act_stat=0’ vertex and all other ‘act_stat=0’ vertices connected to it directly or via ‘act_stat=1’.
But how do I find all the ‘act_stat=0’ vertices connected to the source ‘act_stat=0’ vertex? Should I first run some kind of depth-first search to find a list of all ‘act_stat=0’ vertices and then for each vertex in that list, run a Djikstra search to find the path of minimum distance to that vertex?