performance/benchmarks/bm_mdp.py
def topoSort(roots, getParents):
    """Return a topological sorting of nodes in a graph.

    roots - list of root nodes to search from
    getParents - function which returns the parents of a given node
    """

    results = []
    visited = set()

    # Use iterative version to avoid stack limits for large datasets
    stack = [(node, 0) for node in roots]
    while stack:
        current, state = stack.pop()
        if state == 0:
            # before recursing
            if current not in visited:
                visited.add(current)
                stack.append((current, 1))
                stack.extend((parent, 0) for parent in getParents(current))
        else:
            # after recursing
            assert(current in visited)
            results.append(current)
    return results
def topoSort(roots, getParents):
    """Return a topological sorting of nodes in a graph.

    roots - list of root nodes to search from
    getParents - function which returns the parents of a given node
    """

    results = []
    visited = set()

    # Use iterative version to avoid stack limits for large datasets
    stack = [(node, 0) for node in roots]
    while stack:
        current, state = stack.pop()
        if state == 0:
            # before recursing
            if current not in visited:
                visited.add(current)
                stack.append((current, 1))
                stack.extend((parent, 0) for parent in getParents(current))
        else:
            # after recursing
            assert(current in visited)
            results.append(current)
    return results
def topoSort ( roots , getParents ) : results = [ ] visited = set ( ) # Use iterative version to avoid stack limits for large datasets stack = [ ( node , 0 ) for node in roots ] while stack : current , state = stack . pop ( ) if state == 0 : # before recursing if current not in visited : visited . add ( current ) stack . append ( ( current , 1 ) ) stack . extend ( ( parent , 0 ) for parent in getParents ( current ) ) else : # after recursing assert ( current in visited ) results . append ( current ) return results
Return a topological sorting of nodes in a graph.

    roots - list of root nodes to search from
    getParents - function which returns the parents of a given node
Return a topological sorting of nodes in a graph .