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