def dfs(search, v): adjs = g.adjacents(search['graph'], v) adjs_iter = it.newIterator(adjs) while (it.hasNext(adjs_iter)): w = it.next(adjs_iter) visited_w = map.get(search['visitedMap'], w) if visited_w == None: map.put(search['visitedMap'], w, {'marked': True, 'edgeTo': v}) dfs(search, w)
def dfs_2(grafo, v, revisados): adjs = g.adjacents(grafo, v) adjs_iter = it.newIterator(adjs) while (it.hasNext(adjs_iter)): w = it.next(adjs_iter) visited_w = map.contains(revisados, w) if visited_w == False: map.put(revisados, w, {'marked': True, 'edgeTo': v}) dfs_2(grafo, w, revisados)
def bfs(search, source): queue = q.newQueue() q.enqueue(queue, source) while not (q.isEmpty(queue)): v = q.dequeue(queue) adj_v = g.adjacents(search['graph'], v) adj_it = it.newIterator(adj_v) while it.hasNext(adj_it): w = it.next(adj_it) visited_w = map.get(search['visitedMap'], w) if visited_w == None: map.put(search['visitedMap'], w, {'marked': True, 'edgeTo': v}) q.enqueue(queue, w)
def bfs(search, source): queue = q.newQueue() q.enqueue(queue, source) while not (q.isEmpty(queue)): v = q.dequeue(queue) visited_v = map.get(search['visitedMap'], v)['value'] adjs = g.adjacents(search['graph'], v) adjs_iter = it.newIterator(adjs) while (it.hasNext(adjs_iter)): w = it.next(adjs_iter) visited_w = map.get(search['visitedMap'], w) if visited_w == None: map.put(search['visitedMap'], w, { 'marked': True, 'edgeTo': v, 'distTo': visited_v['distTo'] + 1 }) q.enqueue(queue, w)
def adjacents(graph, vertex): """ Retorna una lista con todos los vertices adyacentes al vertice vertex """ if (graph['type'] == "ADJ_LIST"): return alt.adjacents(graph, vertex)