Example #1
0
def dijkstra_adja_list(adj_list, k):
    initialize_single_source(adj_list, k)
    Q = Heap(adj_list)
    Q.build_min_heap(adj_list.get_vertices())
    while Q.count > 0:
        u = Q.delete_min()
        u_vertex = adj_list.get_vertex(u)
        u_nbhd_list = u_vertex.get_connections()
        for v in u_nbhd_list:
            v_idx = v.get_id()
            relax(u, v_idx, adj_list)
        Q.sort_heap()
    return adj_list
def prim_adja_list(adj_list, k):
    initialize_single_source(adj_list, k)
    Q = Heap(adj_list)
    Q.build_min_heap(adj_list.get_vertices())
    while Q.count > 0:
        u = Q.delete_min()
        u_vertex = adj_list.get_vertex(u)
        u_nbhd_list = u_vertex.get_connections()
        for v_vertex in u_nbhd_list:
            v = v_vertex.get_id()
            list_tmp = u_vertex.connected_to
            dist = list_tmp.get(v_vertex)
            if v in Q and dist < v_vertex.get_dist_to_prev():
                v_vertex.set_prev(u)
                v_vertex.set_dist_to_prev(dist)
                v_vertex.set_dist_to_orgn(dist)
        Q.sort_heap()
    return adj_list