Esempio n. 1
0
def find_path(G, s, t):
    def quedan_vecinos(v):
        for u in v.lista_vecinos:
            if u.color == 'W':
                return True
        return False

    for nodo in G:
        nodo.padre = None
        if nodo.color == 'G':
            nodo.color = 'W'

    s.color = 'G'
    stack = Lista()
    stack.append(s)

    while stack:
        u = stack.pop()
        for nodo in u.lista_vecinos:
            if nodo.color == 'W':
                nodo.color = 'G'
                nodo.padre = u
                stack.append(nodo)
                print(quedan_vecinos(nodo))
                if not quedan_vecinos(nodo):
                    nodo.color = 'B'

    return backtrack(t)
Esempio n. 2
0
    def dfs(v):

        caminos = Lista()
        for nodo in G:
            nodo.padre = None

        stack = Lista()
        v.visto = True
        stack.append(v)

        while stack:

            u = stack.pop()

            for w in u.lista_vecinos:
                if not w.visto and conected(w, u):
                    w.visto = True
                    w.padre = u
                    stack.append(w)
            camino = backtrack(u)
            if len(camino) > 1:
                caminos.append(backtrack(u))

        return caminos