示例#1
0
    # TODO compute the edges of a minimum spanning tree
    write_tree_edges_to_file(tree_edges, filename + '.mst')


if __name__ == '__main__':
    #读取信息

    g = Graph()
    with open("5000 input") as f:
        for line in f:
            try:
                v1, v2, w = line.split()
                g.add_edge(v1, v2, {'weight': int(w)})
            except:
                pass
    node_sets = initialize_disjoint_set(g.get_nodes())
    node_count = len(node_sets)
    #edges = [(g.attributes_of(v, u)['weight'], v, u) for u, v in g.get_edges()]
    #edges.sort()
    tree_edges = []

    #查看读取信息
    #print("node_sets is: ",node_sets)
    #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
示例#2
0

if __name__ == '__main__':
    #读取信息
    #时间换空间 保存当前最优解

    start_time = time.process_time()
    g = Graph()
    with open("5 input") as f:
        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