def filter_Graph(G,filter_set):
    """
    This allows us to apply a set of filters encoded as closures/first-order functions that take a graph as input and return a graph as output.
    """
    graph = G.copy()
    for f in filter_set:
        graph = f(graph)
    return graph