def DepthFirstSearch(graph, source):
    """
    Genera un recorrido DFS sobre el grafo graph
    Args:
        graph:  El grafo a recorrer
        source: Vertice de inicio del recorrido.
    Returns:
        Una estructura para determinar los vertices
        conectados a source
    Raises:
        Exception
    """
    try:
        search = {
                  'source': source,
                  'visited': None,
                  }

        search['visited'] = map.newMap(numelements=g.numVertex(graph),
                                       maptype='PROBING',
                                       comparefunction=graph['comparefunction']
                                       )

        map.put(search['visited'], source, {'marked': True, 'edgeTo': None})
        dfsVertex(search, graph, source)
        return search
    except Exception as exp:
        error.reraise(exp, 'dfs:DFS')
Exemple #2
0
def numVertex(graph):
    """
    Retorna el numero de vertices en el  grafo graph
    Args:
        graph: El grafo sobre el que se ejecuta la operacion
    Returns:
        El numero de vertices
    Raises:
        Exception
    """
    if (graph['type'] == "ADJ_LIST"):
        return alt.numVertex(graph)