Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def compute_flow(g: dict, dist: dict, paths: dict) -> dict:
- node_flow = defaultdict(float)
- edge_flow = {}
- sorted_dist = [k for k, v in sorted(dist.items(), key=lambda item: item[1])]
- while len(sorted_dist) > 0:
- curr_node = sorted_dist.pop()
- node_flow[curr_node] += 1
- parents = [parent for parent in g.keys() if curr_node in g[parent] and
- dist[curr_node] > dist[parent]] #these get the distances
- for parent in parents:
- weight = paths[parent] / paths[curr_node]
- curr_edge = frozenset([curr_node, parent])
- flow_value = node_flow[curr_node] * weight
- edge_flow[curr_edge] = flow_value
- node_flow[parent] += flow_value
- return edge_flow
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement