Exemplo n.º 1
0
def addReviewEdge_directed(catalog, row):
    """
    Adiciona un enlace para almacenar una revisión
    """
    if row['AIR_TIME'] != "":
        g.addEdge(catalog['directed_Graph'], row['SOURCE'], row['DEST'],
                  float(row['AIR_TIME']))
Exemplo n.º 2
0
    def test_bfs(self):
        graph = g.newGraph(7, self.comparenames)

        g.insertVertex(graph, 'Bogota')
        g.insertVertex(graph, 'Yopal')
        g.insertVertex(graph, 'Cali')
        g.insertVertex(graph, 'Medellin')
        g.insertVertex(graph, 'Pasto')
        g.insertVertex(graph, 'Barranquilla')
        g.insertVertex(graph, 'Manizales')

        g.addEdge(graph, 'Bogota', 'Yopal')
        g.addEdge(graph, 'Yopal', 'Barranquilla')
        g.addEdge(graph, 'Barranquilla', 'Medellin')
        g.addEdge(graph, 'Bogota', 'Cali')
        g.addEdge(graph, 'Cali', 'Medellin')

        search = bfs.newBFS(graph, 'Bogota')
        response = ''
        path = bfs.pathTo(search, 'Medellin')
        pathsize = 0
        if path:
            iteraPath = it.newIterator(path)
            while it.hasNext(iteraPath):
                Vertex = it.next(iteraPath)
                response += Vertex + '\n'
                pathsize += 1
            print(response)
        self.assertEqual(pathsize, 3)

        path2 = bfs.pathTo(search, 'Pasto')
        self.assertIsNone(path2)
Exemplo n.º 3
0
def addEdge(catalog, row):
    '''
    Función que añade los ejes al grafo de viajes
    '''
    if row['duration'] != "":
        g.addEdge(catalog['tripsGraph'], row['src'], row['dst'],
                  float(row['duration']))
Exemplo n.º 4
0
def addFlightEdge (catalog, row):
    """
    Adiciona un enlace para conectar dos vuelos
    """
    if row['AIR_TIME'] != "" :
        air_time = float(row['AIR_TIME'])
    else:
        air_time = 0
    g.addEdge (catalog['flightGraph'], row['SOURCE'], row['DEST'], air_time)
Exemplo n.º 5
0
    def test_numEdges(self):
        graph = g.newGraph(7,self.comparenames)

        g.insertVertex (graph, 'Bogota')
        g.insertVertex (graph, 'Yopal')
        g.insertVertex (graph, 'Cali')

        g.addEdge (graph, 'Bogota', 'Yopal')
        g.addEdge (graph, 'Bogota', 'Cali')

        n=g.numEdges(graph)
        lst = g.edges (graph)
        self.assertEqual (lt.size (lst), n)
Exemplo n.º 6
0
    def reverse(self, graph):
        """
         Retornar el reverso del grafo graph
        """
        greverse = g.newGraph(12, self.comparenames, directed=True)

        lstvert = g.vertices(graph)
        itervert = it.newIterator(lstvert)
        while it.hasNext(itervert):
            vert = it.next(itervert)
            g.insertVertex(greverse, vert)

        itervert = it.newIterator(lstvert)
        while it.hasNext(itervert):
            vert = it.next(itervert)
            lstadj = g.adjacents(graph, vert)
            iteradj = it.newIterator(lstadj)
            while it.hasNext(iteradj):
                adj = it.next(iteradj)
                g.addEdge(greverse, adj, vert)
        return greverse
Exemplo n.º 7
0
    def test_connectedcomponents(self):

        graph = g.newGraph(7, self.comparenames)

        g.insertVertex(graph, 'Laura')
        g.insertVertex(graph, 'Eduardo')
        g.insertVertex(graph, 'Andres')
        g.insertVertex(graph, 'Camila')
        g.insertVertex(graph, 'Antonio')
        g.insertVertex(graph, 'Luis')
        g.insertVertex(graph, 'Lina')

        g.addEdge(graph, 'Laura', 'Luis')
        g.addEdge(graph, 'Eduardo', 'Laura')
        g.addEdge(graph, 'Antonio', 'Laura')
        g.addEdge(graph, 'Camila', 'Lina')

        cc = dfs.countCC(graph)
        self.assertEqual(cc, 3)
Exemplo n.º 8
0
    def test_addEdges(self):
        graph = g.newGraph(7, self.comparenames)

        g.insertVertex(graph, 'Bogota')
        g.insertVertex(graph, 'Yopal')
        g.insertVertex(graph, 'Cali')
        g.insertVertex(graph, 'Medellin')
        g.insertVertex(graph, 'Pasto')
        g.insertVertex(graph, 'Barranquilla')
        g.insertVertex(graph, 'Manizales')

        g.addEdge(graph, 'Bogota', 'Yopal')
        g.addEdge(graph, 'Bogota', 'Medellin')
        g.addEdge(graph, 'Bogota', 'Pasto')
        g.addEdge(graph, 'Bogota', 'Cali')
        g.addEdge(graph, 'Yopal', 'Medellin')
        g.addEdge(graph, 'Medellin', 'Pasto')
        g.addEdge(graph, 'Cali', 'Pasto')
        g.addEdge(graph, 'Cali', 'Barranquilla')
        g.addEdge(graph, 'Barranquilla', 'Manizales')
        g.addEdge(graph, 'Pasto', 'Manizales')

        self.assertEqual(g.numEdges(graph), 10)
        self.assertEqual(g.numVertex(graph), 7)

        lst = g.vertices(graph)
        self.assertEqual(lt.size(lst), 7)

        lst = g.edges(graph)
        self.assertEqual(lt.size(lst), 10)

        degree = g.degree(graph, 'Bogota')
        self.assertEqual(degree, 4)

        edge = g.getEdge(graph, 'Bogota', 'Medellin')

        lst = g.adjacents(graph, 'Bogota')
        self.assertEqual(lt.size(lst), 4)
Exemplo n.º 9
0
def addLibraryEdge  (catalog, row):
    """
    Adiciona un enlace entre bibliotecas
    """
    g.addEdge (catalog['librariesGraph'], row['SOURCE'], row['DEST'], float(row['ARRIVAL_DELAY']))
    g.addEdge (catalog['delayGraph'], row['SOURCE'], row['DEST'])
Exemplo n.º 10
0
    def newGraph(self):
        graph = g.newGraph(7, self.comparenames)

        g.insertVertex(graph, 'Bogota')
        g.insertVertex(graph, 'Yopal')
        g.insertVertex(graph, 'Cali')
        g.insertVertex(graph, 'Medellin')
        g.insertVertex(graph, 'Pasto')
        g.insertVertex(graph, 'Barranquilla')
        g.insertVertex(graph, 'Manizales')

        g.addEdge(graph, 'Bogota', 'Yopal')
        g.addEdge(graph, 'Bogota', 'Medellin')
        g.addEdge(graph, 'Bogota', 'Pasto')
        g.addEdge(graph, 'Bogota', 'Cali')
        g.addEdge(graph, 'Yopal', 'Medellin')
        g.addEdge(graph, 'Medellin', 'Pasto')
        g.addEdge(graph, 'Cali', 'Pasto')
        g.addEdge(graph, 'Cali', 'Barranquilla')
        g.addEdge(graph, 'Barranquilla', 'Manizales')
        g.addEdge(graph, 'Pasto', 'Manizales')

        return graph
Exemplo n.º 11
0
def addDirectedEdge (catalog, row):
    """
    Adiciona un enlace para almacenar una revisión
    """
    g.addEdge (catalog['GraphDirected'], row['src'], row['dst'], float(row['duration']))
Exemplo n.º 12
0
    def test_degrees(self):
        graph = g.newGraph(7, self.comparenames, directed=True)

        g.insertVertex(graph, 'Bogota')
        g.insertVertex(graph, 'Yopal')
        g.insertVertex(graph, 'Cali')
        g.insertVertex(graph, 'Medellin')
        g.insertVertex(graph, 'Pasto')
        g.insertVertex(graph, 'Barranquilla')
        g.insertVertex(graph, 'Manizales')

        g.addEdge(graph, 'Bogota', 'Yopal')
        g.addEdge(graph, 'Bogota', 'Medellin')
        g.addEdge(graph, 'Bogota', 'Pasto')
        g.addEdge(graph, 'Bogota', 'Cali')
        g.addEdge(graph, 'Cali', 'Bogota')
        g.addEdge(graph, 'Yopal', 'Medellin')
        g.addEdge(graph, 'Medellin', 'Pasto')
        g.addEdge(graph, 'Pasto', 'Bogota')
        g.addEdge(graph, 'Cali', 'Pasto')
        g.addEdge(graph, 'Cali', 'Barranquilla')
        g.addEdge(graph, 'Barranquilla', 'Manizales')
        g.addEdge(graph, 'Pasto', 'Manizales')

        self.assertEqual(g.numEdges(graph), 12)
        self.assertEqual(g.numVertex(graph), 7)

        degree = g.indegree(graph, 'Bogota')
        self.assertEqual(degree, 2)

        degree = g.indegree(graph, 'Barranquilla')
        self.assertEqual(degree, 1)

        degree = g.outdegree(graph, 'Barranquilla')
        self.assertEqual(degree, 1)

        degree = g.outdegree(graph, 'Bogota')
        self.assertEqual(degree, 4)

        degree = g.outdegree(graph, 'Manizales')
        self.assertEqual(degree, 0)
Exemplo n.º 13
0
    def test_dijkstra(self):
        graph = g.newGraph(7, self.comparenames, directed=True)

        g.insertVertex(graph, 'Bogota')
        g.insertVertex(graph, 'Yopal')
        g.insertVertex(graph, 'Cali')
        g.insertVertex(graph, 'Medellin')
        g.insertVertex(graph, 'Pasto')
        g.insertVertex(graph, 'Barranquilla')
        g.insertVertex(graph, 'Manizales')

        g.addEdge(graph, 'Bogota', 'Yopal', 4)
        g.addEdge(graph, 'Bogota', 'Medellin', 6)
        g.addEdge(graph, 'Bogota', 'Pasto', 10)
        g.addEdge(graph, 'Bogota', 'Cali', 8)
        g.addEdge(graph, 'Cali', 'Bogota', 7)
        g.addEdge(graph, 'Yopal', 'Medellin', 9)
        g.addEdge(graph, 'Medellin', 'Pasto', 5)
        g.addEdge(graph, 'Pasto', 'Bogota', 10)
        g.addEdge(graph, 'Cali', 'Pasto', 3)
        g.addEdge(graph, 'Cali', 'Barranquilla', 10)
        g.addEdge(graph, 'Barranquilla', 'Manizales', 9)
        g.addEdge(graph, 'Pasto', 'Manizales', 6)

        search1 = dijkstra.newDijkstra(graph, 'Bogota')
        has1 = dijkstra.hasPathTo(search1, 'Manizales')
        self.assertEqual(has1, True)
        path1 = dijkstra.pathTo(search1, 'Manizales')
        self.assertEqual(lt.size(path1), 2)

        search2 = dijkstra.newDijkstra(graph, 'Manizales')
        has2 = dijkstra.hasPathTo(search2, 'Yopal')
        self.assertEqual(has2, False)
Exemplo n.º 14
0
def addstationEdge(catalog, row):
    """
    Adiciona un enlace entre bibliotecas
    """
    g.addEdge(catalog['grafo'], row['src'], row['dst'], float(row['duration']))
Exemplo n.º 15
0
def addFlightEdge(catalog, row):
    """
    Adiciona un enlace para conectar dos vuelos
    """
    g.addEdge(catalog['flightGraph'], row['SOURCE'], row['DEST'],
              row['DISTANCE'])
Exemplo n.º 16
0

if __name__ == "__main__":
    graph = g.newGraph(7, comparenames, True)

    g.insertVertex(graph, 'Bogota')
    g.insertVertex(graph, 'Yopal')
    g.insertVertex(graph, 'Cali')
    g.insertVertex(graph, 'Medellin')
    g.insertVertex(graph, 'Pasto')
    g.insertVertex(graph, 'Barranquilla')
    g.insertVertex(graph, 'Manizales')
    g.insertVertex(graph, 'Cucuta')
    g.insertVertex(graph, 'Bucaramanga')

    g.addEdge(graph, 'Bogota', 'Yopal', 1.0)
    g.addEdge(graph, 'Bogota', 'Medellin', 1.0)
    g.addEdge(graph, 'Bogota', 'Pasto', 1.0)
    g.addEdge(graph, 'Bogota', 'Cali', 1.0)
    g.addEdge(graph, 'Yopal', 'Medellin', 1.0)
    g.addEdge(graph, 'Medellin', 'Pasto', 1.0)
    g.addEdge(graph, 'Cali', 'Pasto', 11.0)
    g.addEdge(graph, 'Cali', 'Barranquilla', 1.0)
    g.addEdge(graph, 'Barranquilla', 'Manizales', 1.0)
    g.addEdge(graph, 'Pasto', 'Manizales', 14.0)
    g.addEdge(graph, 'Cucuta', 'Bucaramanga', 1.0)
    g.addEdge(graph, 'Bucaramanga', 'Cucuta', 1.0)

    print("Caso de dos ciudades sin escala \n")
    t = camino_menos_pesado(graph, 'Bogota', 'Medellin')
Exemplo n.º 17
0
    def test_topological(self):

        graph = g.newGraph(10, self.comparenames, directed=True)
        pre = q.newQueue()
        post = q.newQueue()
        reversepost = s.newStack()
        marked = m.newMap(10, comparefunction=self.comparenames)

        g.insertVertex(graph, 'Calculo1')
        g.insertVertex(graph, 'Calculo2')
        g.insertVertex(graph, 'Diseno1')
        g.insertVertex(graph, 'Diseno2')
        g.insertVertex(graph, 'Electiva')
        g.insertVertex(graph, 'Fisica1')
        g.insertVertex(graph, 'Ingles')
        g.insertVertex(graph, 'IP1')
        g.insertVertex(graph, 'IP2')
        g.insertVertex(graph, 'ProyectoFinal')

        g.addEdge(graph, 'Calculo1', 'Calculo2')
        g.addEdge(graph, 'Calculo2', 'IP2')
        g.addEdge(graph, 'Calculo2', 'Fisica1')
        g.addEdge(graph, 'Diseno1', 'Diseno2')
        g.addEdge(graph, 'Diseno2', 'ProyectoFinal')
        g.addEdge(graph, 'Electiva', 'ProyectoFinal')
        g.addEdge(graph, 'Fisica1', 'Diseno2')
        g.addEdge(graph, 'Ingles', 'ProyectoFinal')
        g.addEdge(graph, 'IP1', 'Diseno1')
        g.addEdge(graph, 'IP1', 'IP2')

        self.assertEqual(g.numEdges(graph), 10)
        self.assertEqual(g.numVertex(graph), 10)

        #DFO

        lstvert = g.vertices(graph)
        vertiterator = it.newIterator(lstvert)
        while it.hasNext(vertiterator):
            vert = it.next(vertiterator)
            if not (m.contains(marked, vert)):
                self.dfs(graph, vert, marked, pre, post, reversepost)
        self.printTopological(reversepost)
Exemplo n.º 18
0
    def test_dijkstra(self):
        graph = g.newGraph(7, self.comparenames, directed=True)

        g.insertVertex(graph, 'Bogota')
        g.insertVertex(graph, 'Yopal')
        g.insertVertex(graph, 'Cali')
        g.insertVertex(graph, 'Medellin')
        g.insertVertex(graph, 'Pasto')
        g.insertVertex(graph, 'Barranquilla')
        g.insertVertex(graph, 'Manizales')

        g.addEdge(graph, 'Bogota', 'Yopal', 2.5)
        g.addEdge(graph, 'Bogota', 'Medellin', 0.1)
        g.addEdge(graph, 'Bogota', 'Pasto', 16)
        g.addEdge(graph, 'Bogota', 'Cali', 3.2)
        g.addEdge(graph, 'Cali', 'Bogota', 4.8)
        g.addEdge(graph, 'Yopal', 'Medellin', 9.1)
        g.addEdge(graph, 'Medellin', 'Pasto', 7.1)
        g.addEdge(graph, 'Pasto', 'Bogota', 9.3)
        g.addEdge(graph, 'Cali', 'Pasto', 4.7)
        g.addEdge(graph, 'Cali', 'Barranquilla', 1.2)
        g.addEdge(graph, 'Barranquilla', 'Pasto', 0.0)

        dis = dk.newDijkstra(graph, 'Bogota')
        path1 = dk.pathTo(dis, 'Pasto')
        path2 = dk.pathTo(dis, 'Medellin')
        path3 = dk.pathTo(dis, 'Manizales')

        totalDist1 = 0
        while not stk.isEmpty(path1):
            step = stk.pop(path1)
            totalDist1 += step['weight']
        totalDist2 = 0
        while not stk.isEmpty(path2):
            step = stk.pop(path2)
            totalDist2 += step['weight']

        self.assertEqual(totalDist1, 4.4)
        self.assertEqual(totalDist2, 0.1)
        self.assertIsNone(path3)
Exemplo n.º 19
0
 def loadgraph(self, graph):
     """
     Crea el grafo con la informacion de prueba
     """
     g.insertVertex(graph, 'Pedro')
     g.insertVertex(graph, 'Maria')
     g.insertVertex(graph, 'Carol')
     g.insertVertex(graph, 'Laura')
     g.insertVertex(graph, 'Felipe')
     g.insertVertex(graph, 'Jose')
     g.insertVertex(graph, 'Martin')
     g.insertVertex(graph, 'Camila')
     g.insertVertex(graph, 'Gloria')
     g.insertVertex(graph, 'Luz')
     g.insertVertex(graph, 'Tere')
     g.insertVertex(graph, 'Susana')
     g.addEdge(graph, 'Pedro', 'Jose')
     g.addEdge(graph, 'Jose', 'Felipe')
     g.addEdge(graph, 'Felipe', 'Laura')
     g.addEdge(graph, 'Laura', 'Carol')
     g.addEdge(graph, 'Carol', 'Maria')
     g.addEdge(graph, 'Maria', 'Pedro')
     g.addEdge(graph, 'Camila', 'Jose')
     g.addEdge(graph, 'Camila', 'Martin')
     g.addEdge(graph, 'Martin', 'Gloria')
     g.addEdge(graph, 'Gloria', 'Camila')
     g.addEdge(graph, 'Gloria', 'Luz')
     g.addEdge(graph, 'Luz', 'Tere')
     g.addEdge(graph, 'Tere', 'Susana')
     g.addEdge(graph, 'Susana', 'Luz')
Exemplo n.º 20
0
def addReviewEdge(catalog, row):
    """
    Adiciona un enlace para almacenar una revisión
    """
    g.addEdge(catalog['reviewGraph'], row['book_id'], row['user_id'],
              row['rating'])
Exemplo n.º 21
0
def addLibraryEdge  (catalog, row):
    """
    Adiciona un enlace entre bibliotecas
    """
    g.addEdge (catalog['librariesGraph'], row['ID_src'], row['ID_dst'], float(row['dist']))
Exemplo n.º 22
0
def addFlightEdge_user(catalog, vertice1, vertice2, valor):
    g.addEdge(catalog['flightGraph'], vertice1, vertice2, valor)
Exemplo n.º 23
0
    def test_adjacents(self):
        graph = g.newGraph(7, self.comparenames, directed=True)

        g.insertVertex(graph, 'Bogota')
        g.insertVertex(graph, 'Yopal')
        g.insertVertex(graph, 'Cali')
        g.insertVertex(graph, 'Medellin')
        g.insertVertex(graph, 'Pasto')
        g.insertVertex(graph, 'Barranquilla')
        g.insertVertex(graph, 'Manizales')

        g.addEdge(graph, 'Bogota', 'Yopal')
        g.addEdge(graph, 'Bogota', 'Medellin')
        g.addEdge(graph, 'Bogota', 'Pasto')
        g.addEdge(graph, 'Bogota', 'Cali')
        g.addEdge(graph, 'Cali', 'Bogota')
        g.addEdge(graph, 'Yopal', 'Medellin')
        g.addEdge(graph, 'Medellin', 'Pasto')
        g.addEdge(graph, 'Pasto', 'Bogota')
        g.addEdge(graph, 'Cali', 'Pasto')
        g.addEdge(graph, 'Cali', 'Barranquilla')
        g.addEdge(graph, 'Barranquilla', 'Manizales')
        g.addEdge(graph, 'Pasto', 'Manizales')

        self.assertEqual(g.numEdges(graph), 12)
        self.assertEqual(g.numVertex(graph), 7)

        lst = g.adjacents(graph, 'Bogota')
        self.assertEqual(lt.size(lst), 4)

        self.assertTrue(lt.isPresent(lst, 'Cali', self.comparelst))
        self.assertTrue(lt.isPresent(lst, 'Yopal', self.comparelst))
        self.assertTrue(lt.isPresent(lst, 'Pasto', self.comparelst))
        self.assertTrue(lt.isPresent(lst, 'Medellin', self.comparelst))
        self.assertFalse(lt.isPresent(lst, 'Barranquilla', self.comparelst))

        lst = g.adjacents(graph, 'Manizales')
        self.assertEqual(lt.size(lst), 0)
Exemplo n.º 24
0
def addEdge(catalog, row):
    """
    Adiciona un enlace para almacenar una revisión
    """
    g.addEdge(catalog['Graph'], row['SOURCE'], row['DEST'],
              row['ARRIVAL_DELAY'])
Exemplo n.º 25
0
    def test_adjacents(self):
        graph = g.newGraph(7,self.comparenames)

        g.insertVertex (graph, 'Bogota')
        g.insertVertex (graph, 'Yopal')
        g.insertVertex (graph, 'Cali')
        g.insertVertex (graph, 'Medellin')
        g.insertVertex (graph, 'Pasto')
        g.insertVertex (graph, 'Barranquilla')
        g.insertVertex (graph, 'Manizales')

        g.addEdge (graph, 'Bogota', 'Yopal')
        g.addEdge (graph, 'Bogota', 'Medellin')
        g.addEdge (graph, 'Bogota', 'Pasto')
        g.addEdge (graph, 'Bogota', 'Cali')
        g.addEdge (graph, 'Yopal', 'Medellin')
        g.addEdge (graph, 'Medellin', 'Pasto')
        g.addEdge (graph, 'Cali', 'Pasto')
        g.addEdge (graph, 'Cali', 'Barranquilla')
        g.addEdge (graph, 'Barranquilla','Manizales')
        g.addEdge (graph, 'Pasto','Manizales')

        lst=g.adjacents(graph,'Bogota')
        self.assertEqual(lt.size(lst),4)