def METHOD_NAME(graph):
    """Attempts to remove any implicit dependencies from the
    dependant graph.
    For example, if C depends on B which depends on A (A->B->C), the A->C
    dependency should not be stored as it is already covered by storing that
    A->B and B->C.
    Notes
    -----
    The graph must be directed and acyclic.
    Parameters
    ----------
    graph: dict(str, list(str))
        The graph to reduce. Each key in the dictionary represents a node in the graph, and each
        string in the value list represents a node which depends on the node defined by the key.
    """
    closed_list = []
    closure = {}
    for node_key in graph:
        closure[node_key] = []
    for node_key in graph:
        _visit_protocol(graph, node_key, closed_list, closure)