Example #1
0
 def nodosExistentesEncontrados(self, campos):
     nodosExistentes = {}
     for j in range(len(self.grafoNodos)):
         if (num(campos[0]) == self.grafoNodos[j].nodoIndice):
             nodosExistentes[0] = self.grafoNodos[j]
         elif (num(campos[1]) == self.grafoNodos[j].nodoIndice):
             nodosExistentes[1] = self.grafoNodos[j]
     return nodosExistentes
Example #2
0
 def nodosExistentesEncontrados(self, campos):
     nodosExistentes = {}
     for j in range(len(self.grafoNodos)):
         if (num(campos[0]) == self.grafoNodos[j].nodoPosicionX
                 and num(campos[1]) == self.grafoNodos[j].nodoPosicionY):
             nodosExistentes[0] = self.grafoNodos[j]
         elif (num(campos[3]) == self.grafoNodos[j].nodoPosicionX
               and num(campos[4]) == self.grafoNodos[j].nodoPosicionY):
             nodosExistentes[1] = self.grafoNodos[j]
     return nodosExistentes
Example #3
0
    def generarBigrafo(self):
        self.grafoNodos = {}
        self.grafoGrado = 0

        fichero = open('redsecreta.txt')
        indice = 1
        for l in fichero:
            campos = l.split(' ')
            peso = num(campos[2])
            if indice == 1:
                self.grafoNodos[indice - 1] = nodo(campos[0])
                self.grafoNodos[indice] = nodo(campos[1])
                self.grafoNodos[indice].agregarNodoAdyacente(
                    self.grafoNodos[indice - 1].nodoIndice, 0)
                self.grafoNodos[indice - 1].agregarNodoAdyacente(
                    self.grafoNodos[indice].nodoIndice, peso)
                indice += 1
            else:
                nodosExistentes = self.nodosExistentesEncontrados(campos)
                if len(nodosExistentes) == 0:
                    self.grafoNodos[indice] = nodo(campos[0])
                    self.grafoNodos[indice + 1] = nodo(campos[1])
                    self.grafoNodos[indice].agregarNodoAdyacente(
                        self.grafoNodos[indice + 1].nodoIndice, peso)
                    self.grafoNodos[indice + 1].agregarNodoAdyacente(
                        self.grafoNodos[indice].nodoIndice, 0)
                    indice += 2
                else:
                    if len(nodosExistentes) == 1:
                        if nodosExistentes[0].nodoIndice == num(
                                campos[0]):  #aca a veces anda y a veces no :/
                            self.grafoNodos[indice] = nodo(campos[1])
                            self.grafoNodos[indice].agregarNodoAdyacente(
                                nodosExistentes[0].nodoIndice, 0)
                            nodosExistentes[0].agregarNodoAdyacente(
                                self.grafoNodos[indice].nodoIndice, peso)
                            indice += 1
                        if nodosExistentes[0].nodoIndice == num(campos[1]):
                            self.grafoNodos[indice] = nodo(campos[0])
                            self.grafoNodos[indice].agregarNodoAdyacente(
                                nodosExistentes[0].nodoIndice, peso)
                            nodosExistentes[0].agregarNodoAdyacente(
                                self.grafoNodos[indice].nodoIndice, 0)
                            indice += 1
                    if len(nodosExistentes) == 2:
                        nodosExistentes[0].agregarNodoAdyacente(
                            nodosExistentes[1].nodoIndice, peso)
                        nodosExistentes[1].agregarNodoAdyacente(
                            nodosExistentes[0].nodoIndice, 0)

        self.grafoGrado = indice
        print self.grafoGrado
Example #4
0
 def tomarNodosPorConsola(self):
     nodosPosicionesIngresadas = []
     print "indique posicionX del nodo del Espia 1"
     nodoPosicionXEspia1 = input()
     print "indique posicionY del nodo del Espia 1"
     nodoPosicionYEspia1 = input()
     print "indique posicionX del nodo del Espia 2"
     nodoPosicionXEspia2 = input()
     print "indique posicionY del nodo del Espia 2"
     nodoPosicionYEspia2 = input()
     print "indique posicionX del nodo del Aeropuerto"
     nodoPosicionXAeropuerto = input()
     print "indique posicionY del nodo del Aeropuerto"
     nodoPosicionYAeropuerto = input()
     for i in range(self.grafoGrado):
         if self.grafoNodos[i].nodoPosicionX == num(
                 nodoPosicionXEspia1
         ) and self.grafoNodos[i].nodoPosicionY == num(nodoPosicionYEspia1):
             #nodoEspia1 = self.grafoNodos[i]
             nodosPosicionesIngresadas.append(self.grafoNodos[i])
     for i in range(self.grafoGrado):
         if self.grafoNodos[i].nodoPosicionX == num(
                 nodoPosicionXEspia2
         ) and self.grafoNodos[i].nodoPosicionY == num(nodoPosicionYEspia2):
             #nodoEspia1 = self.grafoNodos[i]
             nodosPosicionesIngresadas.append(self.grafoNodos[i])
     for i in range(self.grafoGrado):
         if self.grafoNodos[i].nodoPosicionX == num(
                 nodoPosicionXAeropuerto) and self.grafoNodos[
                     i].nodoPosicionY == num(nodoPosicionYAeropuerto):
             #nodoEspia1 = self.grafoNodos[i]
             nodosPosicionesIngresadas.append(self.grafoNodos[i])
     return nodosPosicionesIngresadas  #nodoEspia1
Example #5
0
 def __init__(self, indice):
     self.nodoIndice = num(indice)
     self.nodoVisitado = -1
     self.nodosAdyacentes = {}
Example #6
0
    def __init__(self):
        self.grafoNodos = {}
        self.grafoGrado = 0
        xaux = 0
        yaux = 0
        fichero = open('mapaCiudad')
        indice = 1
        for l in fichero:
            campos = l.split(' ')
            if indice == 1:
                self.grafoNodos[indice - 1] = nodo(campos[0], campos[1],
                                                   indice)
                self.grafoNodos[indice] = nodo(campos[3], campos[4],
                                               indice + 1)
                #print("")
                peso = calcularDistancia(
                    self.grafoNodos[indice].nodoPosicionX,
                    self.grafoNodos[indice].nodoPosicionY,
                    self.grafoNodos[indice - 1].nodoPosicionX,
                    self.grafoNodos[indice - 1].nodoPosicionY)
                self.grafoNodos[indice].agregarNodoAdyacente(
                    self.grafoNodos[indice - 1].nodoIndice, peso)
                self.grafoNodos[indice - 1].agregarNodoAdyacente(
                    self.grafoNodos[indice].nodoIndice, peso)
                indice += 1
            else:
                nodosExistentes = self.nodosExistentesEncontrados(campos)
                if len(nodosExistentes) == 0:
                    self.grafoNodos[indice] = nodo(campos[0], campos[1],
                                                   indice + 1)
                    self.grafoNodos[indice + 1] = nodo(campos[3], campos[4],
                                                       indice + 2)
                    peso = calcularDistancia(
                        self.grafoNodos[indice].nodoPosicionX,
                        self.grafoNodos[indice].nodoPosicionY,
                        self.grafoNodos[indice - 1].nodoPosicionX,
                        self.grafoNodos[indice - 1].nodoPosicionY)
                    self.grafoNodos[indice].agregarNodoAdyacente(
                        self.grafoNodos[indice + 1].nodoIndice, peso)
                    self.grafoNodos[indice + 1].agregarNodoAdyacente(
                        self.grafoNodos[indice].nodoIndice, peso)
                    indice += 2
                else:
                    if len(nodosExistentes) == 1:
                        if nodosExistentes[0].nodoPosicionX == num(
                                campos[0]
                        ) and nodosExistentes[0].nodoPosicionY == num(
                                campos[1]):  #aca a veces anda y a veces no :/
                            self.grafoNodos[indice] = nodo(
                                campos[3], campos[4], indice + 1)
                            peso = calcularDistancia(
                                self.grafoNodos[indice].nodoPosicionX,
                                self.grafoNodos[indice].nodoPosicionY,
                                nodosExistentes[0].nodoPosicionX,
                                nodosExistentes[0].nodoPosicionY)
                            self.grafoNodos[indice].agregarNodoAdyacente(
                                nodosExistentes[0].nodoIndice, peso)
                            nodosExistentes[0].agregarNodoAdyacente(
                                self.grafoNodos[indice].nodoIndice, peso)
                            indice += 1
                        if nodosExistentes[0].nodoPosicionX == num(
                                campos[3]
                        ) and nodosExistentes[0].nodoPosicionY == num(
                                campos[4]):
                            self.grafoNodos[indice] = nodo(
                                campos[0], campos[1], indice + 1)
                            peso = calcularDistancia(
                                self.grafoNodos[indice].nodoPosicionX,
                                self.grafoNodos[indice].nodoPosicionY,
                                nodosExistentes[0].nodoPosicionX,
                                nodosExistentes[0].nodoPosicionY)
                            self.grafoNodos[indice].agregarNodoAdyacente(
                                nodosExistentes[0].nodoIndice, peso)
                            nodosExistentes[0].agregarNodoAdyacente(
                                self.grafoNodos[indice].nodoIndice, peso)
                            indice += 1
                    if len(nodosExistentes) == 2:
                        peso = calcularDistancia(
                            nodosExistentes[1].nodoPosicionX,
                            nodosExistentes[1].nodoPosicionY,
                            nodosExistentes[0].nodoPosicionX,
                            nodosExistentes[0].nodoPosicionY)
                        nodosExistentes[0].agregarNodoAdyacente(
                            nodosExistentes[1].nodoIndice, peso)
                        nodosExistentes[1].agregarNodoAdyacente(
                            nodosExistentes[0].nodoIndice, peso)

        self.grafoGrado = indice
        print self.grafoGrado
Example #7
0
 def __init__(self, valorX, valorY, indice):
     self.nodoPosicionX = num(valorX)
     self.nodoPosicionY = num(valorY)
     self.nodoIndice = num(indice)
     self.nodoVisitado = -1
     self.nodosAdyacentes = {}