#graph.add_edges( 5, 14, 11) #graph.add_edges( 6, 15, 9, 1, 12, 7, 3) #graph.add_edges( 7, 6, 3, 10, 8, 13, 12) #graph.add_edges( 8, 2, 10, 7, 13) #graph.add_edges( 9, 4, 15, 6, 1) #graph.add_edges(10, 3, 7, 8, 2) #graph.add_edges(11, 5, 14, 12, 13) #graph.add_edges(12, 1, 6, 7, 13, 11, 14) #graph.add_edges(13, 11, 12, 7, 8) #graph.add_edges(14, 5, 11, 12, 1) #graph.add_edges(15, 4, 9, 6, 3) if __name__ == '__main__': total = 40 graph = Graph(nodes=range(1, 16)) graph.add_edges( 1, ) graph.add_edges( 2, ) graph.add_edges( 3, ) graph.add_edges( 4, ) graph.add_edges( 5, ) graph.add_edges( 6, ) graph.add_edges( 7, ) graph.add_edges( 8, ) graph.add_edges( 9, ) graph.add_edges(10, ) graph.add_edges(11, ) graph.add_edges(12, ) graph.add_edges(13, ) graph.add_edges(14, ) graph.add_edges(15, )
stack.append((edge, iter(graph.get_edges(edge)))) visitor.send((Event.TreeEdge, node, edge)) visitor.send((Event.DiscoverVertex, edge)) elif color[edge] == Color.Gray: visitor.send((Event.BackEdge, node, edge)) except StopIteration: node, _ = stack.pop() color[node] = Color.Black visitor.send((Event.FinishVertex, node)) if __name__ == "__main__": from common import Graph def print_visitor(graph): while True: message = yield print Event.get_name(message[0]), if Event.is_vertex_event(message[0]): print "\t[{}]".format(message[1]) else: print "\t[{}]->[{}]".format(message[1], message[2]) graph = Graph(['a', 'b', 'c', 'd', 'e', 'f']) graph.add_edges('a', 'b', 'c') graph.add_edges('b', 'c', 'e') graph.add_edges('c', 'd', 'f') graph.add_edges('d', 'e') graph.add_edges('e', 'f') visitor = print_visitor(graph) visitor.next() graph_dfs_visit(graph, 'a', visitor)