Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.76 KB | None | 0 0
  1. def compute_flow(g: dict, dist: dict, paths: dict) -> dict:
  2.     node_flow = defaultdict(float)
  3.     edge_flow = {}
  4.     sorted_dist = [k for k, v in sorted(dist.items(), key=lambda item: item[1])]
  5.     while len(sorted_dist) > 0:
  6.         curr_node = sorted_dist.pop()
  7.         node_flow[curr_node] += 1
  8.         parents = [parent for parent in g.keys() if curr_node in g[parent] and
  9.                    dist[curr_node] > dist[parent]] #these get the distances
  10.         for parent in parents:
  11.             weight = paths[parent] / paths[curr_node]
  12.             curr_edge = frozenset([curr_node, parent])
  13.             flow_value = node_flow[curr_node] * weight
  14.             edge_flow[curr_edge] = flow_value
  15.             node_flow[parent] += flow_value
  16.     return edge_flow
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement