I am using a generator to do a full search on a graph, the real data set is fairly large, here is a portion of the code i wrote on a small data set:
class dfs:def __init__(self):self.start_nodes = [1,2] # not used, see below explanationself.end_nodes = [5,7] # not used, see below explanation_graph={1 : [4,5,6,2],2 : [1,3,5],4 : [1,5],3 : [5,2],5 : [3,1,4,6,2,7],6 : [1,5],7 : [5],}def __iter__(self):return self.find_path(self._graph, 2, 7)def find_path(self, graph, start, end, path=[]):path = path + [start]if start == end:yield pathif not graph.has_key(start):returnfor node in graph[start]:if node not in path:for new_path in self.find_path(graph, node, end, path):if new_path:yield new_pathd = dfs()
print list(d)
when run this outputs all the paths from '2' to '7' as expected:
[[2, 1, 4, 5, 7], [2, 1, 5, 7], [2, 1, 6, 5, 7], [2, 3, 5, 7], [2, 5, 7]]
What I would like to do is modify this generator so that it does the same thing except i get the paths back for a set number of start and end points, ie self.start_nodes and self.end_nodes.
Since my generator is a recursive function it makes it difficult to loop on the different start and end points, been scratching my head over this any ideas?