def generate_noisy_eulerian_circuit_data(options): """ This is a noisy version of the eularian circuit problem. """ while True: num_nodes = options["num_entities"] g = nx.random_regular_graph(2, num_nodes) try: path = list(nxalg.eulerian_circuit(g)) except: continue break edges = g.edges() # generate another misleading cycle num_confusing = options["num_confusing"] if num_confusing > 0: g_confusing = nx.random_regular_graph(2, num_confusing) for e in g_confusing.edges(): edges.append((e[0] + num_nodes, e[1] + num_nodes)) random.shuffle(edges) # randomize index idx = _generate_random_node_index(num_nodes + num_confusing) new_edges = _relabel_nodes_in_edges(edges, idx) new_path = _relabel_nodes_in_edges(path, idx) for edge in new_edges: print "%s connected-to %s" % (edge[0], edge[1]) print "%s connected-to %s" % (edge[1], edge[0]) first_edge = new_path[0] node_list = [str(edge[0]) for edge in new_path] print "eval eulerian-circuit %s %s\t%s" % (first_edge[0], first_edge[1], ",".join(node_list))
def generate_eulerian_circuit_data(options): while True: num_nodes = options["num_entities"] g = nx.random_regular_graph(2, num_nodes) try: path = list(nxalg.eulerian_circuit(g)) except: continue # print path break for edge in g.edges(): print "%s connected-to %s" % (edge[0], edge[1]) print "%s connected-to %s" % (edge[1], edge[0]) first_edge = path[0] node_list = [str(edge[0]) for edge in path] print "eval eulerian-circuit %s %s\t%s" % (first_edge[0], first_edge[1], ",".join(node_list))