#print("node_count is: ",node_count) #print("edges is: ",edges) #put all the G's node in the queue queue = list(node_sets.keys()) print("queue is: ", queue) #pick r, initinalize r_key = 0 r = queue[0] queue.remove(r) #print("r is: ",r) start_time = time.process_time() weight = [] while queue: nei = g.neighbors(r) for i in nei: edge_weight = g.attributes_of(r, i)['weight'] if i in queue: weight.append((edge_weight, r, i)) weight = list(filter(lambda weight: weight[2] in queue, weight)) weight.sort() tmp = weight[0][2] queue.remove(tmp) tree_edges.append((r, tmp, weight[0][0])) r = tmp print(tree_edges) end_time = time.process_time() print("Ran in: {:.5f} secs".format(end_time - start_time))
for line in f: try: v1, v2, w = line.split() g.add_edge(v1, v2, {'weight': int(w)}) except: pass node_dist = initialize_disjiont_set(g.get_nodes()) print(g.get_nodes()) print(node_dist) # O(n) first_node = list(g.get_nodes())[0] #O(1) node_sets = set([first_node]) #O(1) tree_edges = [] print(g.neighbors(first_node)) for node in g.neighbors(first_node): # O(n) if node_dist[node][0] == -1 or g.attributes_of( first_node, node).get('weight') < node_dist[node][0]: node_dist[node] = (g.attributes_of(first_node, node)["weight"], first_node) for i in range(len(g.get_nodes()) - 1): # O(n) min_node = None for node in g.get_nodes(): #O(n) if node not in node_sets and node_dist[node][0] != -1 and ( min_node == None or node_dist[node][0] < node_dist[min_node][0]): min_node = node node_sets.add(min_node) tree_edges.append( (node_dist[min_node][1], min_node, node_dist[min_node][0])) for node in g.neighbors(min_node): # O(n) if node_dist[node][0] == -1 or g.attributes_of(