def share_edge(s1, s2): """Determine whether two slices share a physical edge.""" # This is only correct if we have a guarantee that the topologies are sane, # and only give us real internal edges. s1_ls = set(map_edges(edges_of_topo(s1.l_topo), s1.node_map, s1.port_map)) s2_ls = set(map_edges(edges_of_topo(s2.l_topo), s2.node_map, s2.port_map)) return not s1_ls.isdisjoint(s2_ls)
def edge_in(edge, slic, memo=None): """Determine whether a slice uses a given physical edge""" if memo is not None: if slic not in memo: memo[slic] = set(map_edges(edges_of_topo(slic.l_topo), slic.node_map, slic.port_map)) return edge in memo[slic] else: return edge in set(map_edges(edges_of_topo(slic.l_topo), slic.node_map, slic.port_map))