示例#1
0
    #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))
示例#2
0
        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(