Exemplo n.º 1
0
 def __init__(self, nombre, capacidad):
     self.nombre = nombre
     self.lista_vecinos = Lista()
     self.distancia = None
     self.padre = None
     self.visto = False
     self.calculado = False
     self.capacidad = capacidad
     self.color = 'W'
Exemplo n.º 2
0
 def lista_vecinos(self):
     """
     Retorna una lista de objetos tipo Puerto con los puertos adyacentes a self
     :return: Lista
     """
     lista_vecinos = Lista()
     for lista in self.vecinos.values:
         for vecino in lista:
             if vecino not in lista_vecinos:
                 lista_vecinos.append(vecino)
     return lista_vecinos
Exemplo n.º 3
0
def backtrack(v):
    """
    Algortimo recursivo para encontrar el camino desde v hasta 0
    :param v: Objeto del tipo Nodo (o Puerto)
    :return: Objeto del tipo list, que es el camino ivertido mas corto desde el vertive v hasta el vertice 0
    """
    camino = Lista()
    camino.append(v)

    if v.padre:
        camino += backtrack(v.padre)
    return camino
Exemplo n.º 4
0
    class Nodo:
        def __init__(self, nombre, capacidad):
            self.nombre = nombre
            self.lista_vecinos = Lista()
            self.distancia = None
            self.padre = None
            self.visto = False
            self.calculado = False
            self.capacidad = capacidad
            self.color = 'W'

        def agregar_vecino(self, *nodos):
            for nodo in nodos:
                self.lista_vecinos.append(nodo)

        def __repr__(self):
            return '{0}'.format(self.nombre)
Exemplo n.º 5
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)
Exemplo n.º 6
0
    def obtener_conexiones(self):
        lista_conexiones = Lista()
        for m in self.puertos:

            for (u, vecino) in self.puertos[m].vecinos.items:
                if len(vecino) >= 3:
                    for v in vecino:
                        lista_conexiones.append(Tupla(m, v, 'RAND'))
                elif len(vecino) == 2:
                    for v in vecino:
                        lista_conexiones.append(Tupla(m, v, 'ALT'))
                elif len(vecino) == 1:
                    for v in vecino:
                        lista_conexiones.append(Tupla(m, v, ''))
        return lista_conexiones
Exemplo n.º 7
0
def doble_sentido(G):
    for nodo in G:
        nodo.visto = False

    lista = Lista()

    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

    for i in range(len(G)):
        if not G[i].visto:
            lista += dfs(G[i])

    return lista
Exemplo n.º 8
0
		print("************************** Cierre de sistema **************************\n")
		global validacion
		validacion = False
		print("\nEl sistema se cierra, Adios :3\n")
	#------------------------------------------------ opcion invalidad
	else:
		print("************************ Bienvenido usuario ***********************************\n")
		print("Opcion no validad\n")
	os.system("pause")
	os.system("cls")

"""" *************************************************************************************************  """

"""" *********************************Menu principal del sistems *************************************  """

validacion = True
lista_usuarios = Lista()

while validacion==True:
	os.system("cls")
	print("************************ Bienvenido usuario ***********************************\n")
	print("1. Crear usuario")
	print("2. Ingresar usuario")
	print("3. Salir del programa\n")
	print("Selecciona una opcion: ")
	opcion = input().strip()
	menu_principal(opcion)

"""" *************************************************************************************************  """
	
Exemplo n.º 9
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