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')
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)