Пример #1
0
def requerimiento_4(analyzer,station,resistance):

    try:
        resistance=resistance*60
        recorrido= bfs.BreadhtFisrtSearch(analyzer['connections'],station)
        size= gr.numVertices(analyzer['connections'])
        vertexxx= gr.vertices(analyzer['connections'])
        dicc= {}
        for i in range(1,size):
            ids= lt.getElement(vertexxx,i)
            vertice= m.get(analyzer['coordinates_destiny'],ids)['value']['name']
            if bfs.hasPathTo(recorrido,ids):
                path= bfs.pathTo(recorrido,ids)
                sizep= st.size(path)
                if sizep != 1 :
                    init= st.pop(path)
                    summ= 0
                    dicc[vertice]= []
                    while sizep >= 2:
                        vertex2= st.pop(path)
                        if vertex2 is None :
                            break
                        arco= gr.getEdge(analyzer['connections'],init,vertex2)
                        summ+= arco['weight']
                        init= vertex2
                        if summ > resistance :
                            dicc[str(vertice)]= None
                        else: 
                            dicc[str(vertice)].append(poner_bonita_la_ruta(analyzer,arco))
        return dicc
    except Exception as exp:
        error.reraise(exp, 'model;Req_4')
Пример #2
0
def hasJumpsPathTo(analyzer, vertexb):
    """
    Retorna si existe una ruta de saltos mínima entre el punto de
    conexión inicial y un punto de conexión destino
    """
    paths = analyzer['minimumjumpspaths']
    return bfs.hasPathTo(paths, vertexb)
Пример #3
0
def requerimiento_6(citibike, latitudI, longitudI, latitudF, longitudF):
    lista = []
    DistanciaI = NearestStation(citibike, latitudI, longitudI)
    DistanciaF = NearestStation(citibike, latitudF, longitudF)
    stationI = minimoDicc(DistanciaI)
    stationF = minimoDicc(DistanciaF)
    camino = bfs.BreadhtFisrtSearch(citibike['graph'], stationI)
    caminofinal = bfs.hasPathTo(camino, stationF)
    if caminofinal == True:
        ultimo = bfs.pathTo(camino, stationF)
        iterador = it.newIterator(ultimo)
        while it.hasNext(iterador):
            fila = it.next(iterador)
            lista.append(fila)
    else:
        print("No hay camino entre las dos estaciones")
    tiempo = 0
    for i in range(0, len(lista) - 1):
        arco = gr.getEdge(citibike['graph'], lista[i],
                          lista[i + 1])["weight"]["duracion"]
        tiempo += arco
    print("La estación incial más cercana es: " + stationI)
    print("La estación final más cercana es: " + stationF)
    print("La duración del viaje es de: " + str(tiempo))
    print("La ruta es: " + str(lista))
Пример #4
0
def Repeticiones(citibike, rangoI, rangoF):
    stationI = citibike['StationI']
    stationF = citibike['StationF']
    edadI = mp.keySet(stationI)
    edadF = mp.keySet(stationF)
    infoI = recorridos(edadI, stationI, rangoI, rangoF)
    infoF = recorridos(edadF, stationF, rangoI, rangoF)
    sI = maximoDicc(infoI)
    sF = maximoDicc(infoF)
    print(
        "La estación de la que más personas salen, con ese rango de edad es: "
        + str(sI))
    print(
        "La estación de la que más personas llegan, con ese rango de edad es: "
        + str(sF))
    camino = bfs.BreadhtFisrtSearch(citibike['graph'], sI)
    caminofinal = bfs.hasPathTo(camino, sF)
    print("Su camino es el siguiente: ")
    if caminofinal == True:
        ultimo = bfs.pathTo(camino, sF)
        iterador = it.newIterator(ultimo)
        while it.hasNext(iterador):
            fila = it.next(iterador)
            print(fila)
    else:
        print("No hay camino para ese rango de edades")
Пример #5
0
def path(analyzer, INFOlp1, INFOlp2):

    varBFS = bfs.BreadhtFisrtSearch(analyzer['landingPoints'], INFOlp1)

    if bfs.hasPathTo(
            varBFS, INFOlp2
    ) is True:  # Si existe un path se retorna la distancia entre el LP destino y origen, junto con el path entre estos dos.
        path = bfs.pathTo(varBFS, INFOlp2)
        return path
Пример #6
0
def req7(ip1, ip2, analyzer):
    """Encuentra si existe un path entre ip1 e ip2

    Args:
        analyzer
        ip1: Primera dirección de IP
        ip2: Segunda dirección de IP
    """
    responseip1 = IP.get(ip1,
                         api_key='free')  # Se obtiene la información de ip1
    responseip2 = IP.get(ip2,
                         api_key='free')  # Se obtiene la información de ip2

    latitudeIP1 = responseip1.latitude  # Se obtiene la latitud de ip1
    longitudeIP1 = responseip1.longitude  # Se obtiene la longitud de ip1
    latitudeIP2 = responseip2.latitude  # Se obtiene la latitud de ip2
    longitudeIP2 = responseip2.longitude  # Se obtiene la longitud de ip2

    masCercano_1 = lpMasCercano(analyzer, latitudeIP1, longitudeIP1)[1]

    lp1 = lt.getElement(
        mp.get(analyzer['infoLandingPoints'], masCercano_1)['value']['lista'],
        1)

    masCercano_2 = lpMasCercano(analyzer, latitudeIP2, longitudeIP2)[1]
    lp2 = lt.getElement(
        mp.get(analyzer['infoLandingPoints'], masCercano_2)['value']['lista'],
        1)

    varBFS = bfs.BreadhtFisrtSearch(analyzer['landingPoints'], lp1)

    if bfs.hasPathTo(
            varBFS, lp2
    ) is True:  # Si existe un path se retorna la distancia entre el LP destino y origen, junto con el path entre estos dos.
        distancia = rutaReq7(varBFS, lp2)
        path = bfs.pathTo(varBFS, lp2)
        return (distancia['distTo'], path)

    else:
        return False  # En caso de que no encuentre un path la función retorna False.
def test_dfs(graph):
    search = bfs.BreadhtFisrtSearch(graph, 'Yopal')
    assert bfs.hasPathTo(search, 'Manizales') is True
    path = bfs.pathTo(search, 'Manizales')
    assert stk.size(path) == 4