Sei sulla pagina 1di 5

Búsqueda de parqueaderos

Cristian Guillermo Serrano Acevedo Jean Carlos Portilla Mora Pedro Alfonso Jiménez Buenahora
2170127 2171452 2170082
Universidad Industrial de Santander Universidad Industrial de Santander Universidad Industrial de Santander
Bucaramanga, Santander Bucaramanga, Santander Bucaramanga, Santander
Email: crisiangserrano@gmail.com Email: jeancarlosportilla@hotmail.com Email: pedrobuenahora@hotmail.com

Resumen—Observando las necesidades de un usuario prome- grafo como G = (V, A). Cada arista está identificada por un
dio que posee un medio de transporte propio, se desarrolla este par único de vértices del conjunto V . Una arista que va del
proyecto, el cual tiene como objetivo optimizar la manera en que vértice u al vértice v se denota por medio de la expresión
los usuarios encuentran un parqueadero, gracias a la aplicación
del algoritmo de Dijkstra, que se evidencia en el desarrollo a = (u, v). Cada arista puede tener una etiqueta asignada que
del presente documento. Los principales factores que pueden denota el costo de ir de u a v, y viceversa.
afectar a un usuario que está buscando un sitio adecuado donde
estacionarse son la distancia de conducción, poco conocimiento II-A. Teorı́a de grafos: A continuación se presentan algu-
sobre las rutas óptimas hacia los parqueaderos, y la ubicación nos de los conceptos básicos relacionados a la teorı́a de
de estos.
grafos:
Este documento desarrolla un ejemplo situado en el sector
de cabecera, con el cual observaremos si es viable o no la Grado de un vértice. El grado de un vértice v, escrito
implementación del algoritmo de Dijkstra dentro del problema. como grado(v), denota el número de aristas que contienen
a v. Si grado(v) = 0 entonces v es un nodo aislado.
I. PLANTEAMIENTO DEL PROBLEMA Bucle. Un bucle es una arista que conecta a un vértice
consigo mismo, a = (u, u).
Uno de los mayores logros del ser humano ha sido la Camino cerrado. El camino P es cerrado si el primer y
creación de vehı́culos motorizados para transportarse al lugar último vértice son iguales, es decir v0 = vn.
que él quiera o deba destinarse. Sin embargo. como cualquier Camino simple. El camino es simple si todos sus vértices
usuario de un vehı́culo particular, o de servicio público, no son distintos, con excepción del primero y del último, que
es fiable dejarlo en las calles, exponiendo al sujeto a distintos pueden ser iguales. Es decir, P es simple si v0, v1,..., vn-1
riesgos como generar un embotellamiento, recibir algún daño, son distintos.
que sea hurtada alguna de sus partes, o simplemente sea Circuito. Un circuito es un camino cerrado simple de
remolcado a través una grúa por alguna infracción de tránsito longitud 3 o mayor. Un circuito de longitud k se llama
suponiendo costos extras para el usuario. Por eso son tan k-circuito.
importantes los establecimientos de aparcamiento en una Grafo conexo. Un grafo es conexo si existe un camino
ciudad ya que le brindan el servicio de seguridad al vehı́culo simple entres dos de sus nodos cualesquiera.
del usuario, por un precio estipulado por el tiempo en el que Grafo árbol. Un grafo G es de tipo árbol, si G es un
será custodiado el vehı́culo dentro del establecimiento. Sin grafo conexo sin circuitos.
embargo, ocasionalmente encontrar un puesto donde dejar Grafo completo. Se dice que un grafo es completo si
el vehı́culo, supone un problema para el usuario, teniendo cada vértice v de G es adyacente a todos los demás
que recorrer largas distancias para encontrar un puesto vértices de G. Un grafo completo de n vértices tendrá
libre, suponiendo más gasto de combustible, riesgos para n(n - 1)/2 aristas.
vehı́culo, y, a la larga, molestar al usuario. De esta manera
implementando el algoritmo de Dijkstra queremos brindarles II-B. Grafo Dirigido
a los conductores una herramienta fácil para encontrar el
servicio de parqueadero más cercano a su destino ahorrando Un grafo dirigido G, también llamado dı́grafo, se caracteriza
ciertos recursos. porque cada arista a tiene una 7 dirección asignada y se
expresa como a = u → v.

II. MARCO TEORICO II-C. Grafo no dirigido


DEFINICIÓN: Un grafo no dirigido G = (V , A) consta de un conjunto
finito de vértices V y de un conjunto de aristas A.
Un grafo G consta de dos conjuntos: V y A. Donde V Se diferencia de un grafo en que cada arista en A es un
está formado por elementos llamados vértices, mientras que par no ordenado de vértices. Si (u, v) entonces (u, v) = (v, u).
A está formado por aristas. Por lo que podemos denotar a un
III. ESTADO DEL ARTE En el modelo anteriormente mostrado podemos observar
los parqueaderos situados en el sector de Cabecera, además
El algoritmo de Dijkstra ha sido usado previamente en de las calles auxiliares, todos estos representados por un
GPS para el cálculo de vı́as rápidas, en conjunto con el grafo, el cual puede ser clasificado como un grafo conexo,
algoritmo de Floyd-Warshall, para encontrar la vı́a más rápida dirigido y con pesos, el cual no es plano. Cada parqueadero
y con menor tráfico y distancia posible, minimizando tiempo, está representado por un vértice(nodo) el cual posee el
riesgos y gastos. Un ejemplo en donde se aplica Dijkstra es nombre del parqueadero y el coste para llegar al mismo.
la red de transporte privado UBER, en donde los usuarios, Cada nodo está conectado por unas aristas las cuales en
mediante aplicación móvil, pueden pedir un taxi privado con sus pesas contienen la distancia necesaria (coste) de ir
determinadas caracterı́sticas. Una vez el usuario termine de de un nodo a otro, (ya sea ”auxiliar”, o ”parqueadero”
ingresar los parámetros necesarios, la aplicación buscará el ), dicha distancia fue medida de manera exacta usando
taxi que cumpla dichas caracterı́sticas que se encuentre más la herramienta denominada GoogleM aps de Google , c en
cerca de la posición del usuario. Nuestro objetivo es aplicar la cual se tomaron los datos de manera individual y minuciosa.
esta idea a parqueaderos, el cual está basado en un grafo
dirigido, cuyos nodos principales son los parqueaderos de la
zona muestreada previamente (Cabecera), y hacemos uso de V. ALGORITMO APLICADO AL PROBLEMA
una lista de nodos que denominamos ”auxiliares” para hacer
una representación más acorde a la realidad. El trayecto más corto se calcula con el algoritmo Dijkstra.
El algoritmo se basa en un modelado algo complejo pero fácil
de entender, se coloca a cada usuario en la raı́z de un árbol
y se calcula el trayecto más corto a cada destino en función
del costo acumulado requerido para alcanzar dicho destino,
es decir que en nuestro caso el parqueadero más conveniente
para el usuario. El algoritmo de Dijkstra estarı́a aplicado
e implementado junto con diversas ”directivas” como son:
el saber si un parqueadero tiene plazas libres, o el tiempo
necesario para llegar al destino; además el usuario puede
determinar el criterio fundamental de búsqueda dependiendo
de lo que necesite (cercanı́a a él, cercanı́a a su destino,
rapidez de llegada, una plaza vacı́a, etc.).

Imagen 1. Mapa de Cabecera.


VI. METODOLOGIA DEL PROYECTO

IV. MODELO MATEM ÁTICO Este proyecto fue diseñado y ejecutado en un computador
portátil con las siguientes caracterı́sticas:
Procesador: Intel Core I7 5500U.
Memoria: 8 GB DDR4.
Disco HDD: 500 GB.
Tarjeta Grafica: N vidia GT 840M (2 GB).

VI-A. PROTOTIPO
Inicialmente y para efectos practicos se hace uso de un
prototipo, en el cual representamos un grafo fuertemente
conexo para resolver la problemática. El prototipo fue
realizado en el lenguaje de programación Phyton y
se seleccionó solo la lista de nodos que incluye a los
parqueaderos, siguiendo el siguiente procedimiento.

1. Se importó la librerı́a de grafos llamada N etworkX


que nos servirá para la implementación del algoritmo de
Dijkstra en el momento en el que le pidamos la ruta más
corta, además va a ser de vital importancia para la creación
de distintos grafos, en nuestro caso el sector de Cabecera
para mostrarlo de una manera gráfica.
Imagen 2. Grafo del Proyecto.
desarrollo del proyecto.

VI-B. PROYECTO
2. Después procedemos a crear nuestro grafo G sus respecti- 1. Inicialmente, hacemos uso de las librerı́as anteriormente
vos vértices que son nuestros parqueaderos ( ”San Pio”,”Pepe mencionadas, ası́ como de la lista de nodos que contienen
Ganga”,”Iguazu”,”Cafeteria”,”Motos”,”Parquearse” ). los parqueaderos. Adicional a esto incluiremos una lista con
Ahora, prosiguiendo con el código del prototipo, se van a los nodos ”auxiliares” los cuales son resultado del análisis
crear las aristas del grafo (en este ejemplo Cabecera) quienes exhaustivo de las calles y direcciones ubicadas en la Imagen
nos indicaran los caminos de recorrido de un vértice a otro, 1. El cual después de ser analizado, obtenemos alrededor de
si nos fijamos bien cada arista posee su propio peso, y este 33 nodos auxiliares.
va a ser la distancia de un vértice al destino y nos servirá
como guı́a para aplicar el algoritmo de Dijkstra al hallar el 2. Desarrollando el proyecto, decidimos tomar como base
camino más corto. el proceso que realizamos en el prototipo. Con base en dicho
orden de ideas, nuestro siguiente paso es imprimir el grafo
que es resultado de los datos introducidos en los nodos y las
aristas, para esto recurrimos a las funciones implementadas
en NetworkX, mas especı́ficamente la función (draw), en la
cual obtenemos como resultado de una impresión ”random”
el siguiente grafo:

Imagen 3. Nodos y aristas del prototipo.


3. Después por medio de estas funciones implementadas en
el algoritmo de Dijkstra en sus librerı́as importadas, vamos
a imprimir el grafo resultante con sus vértices etiquetados y
sus aristas con sus respectivos pesos, con lo cual obtenemos
el grafo fuertemente conexo que usaremos para verificar de
manera practica el funcionamiento del algoritmo de Dijkstra.

Imagen 6. Grafo en impresión random .


Con este grafo notamos que se dificulta el análisis directo
que podamos hacer de todas las componentes, por lo cual
Imagen 4. Código usado Para imprimir el grafo. como resultado de una indagación en internet, encontramos
que es más sencillo imprimir el grafo de manera circular
como lo está en la Imagen 2, con este modo de distribución
se facilita el análisis y comprensión de todas las componentes
del grafo, ası́ que de la manera que está representado en la
Imagen 2, fue finalmente implementado el grafo.

3. Es necesario implementar algunos métodos para obtener


Imagen 5. Prueba del Prototipo.
un menú de opciones, la primera de las opciones y las más
Después de haber hecho varias pruebas, y verificar que simple en su implementación tiene la función de imprimir
el algoritmo se comporte de manera deseada, mostrando todos los nodos del grafo como etiquetas, esto puede ser
du correcto funcionamiento, procedemos con la parte del de ayuda a la hora de tener que introducir alguna dirección
dentro del programa. El segundo método es aquel en el que VII. CONCLUSIONES
se implementa Djkstra por primera vez, el cual está enfocado
en calcular la distancia desde cruce origen hasta alguno de los 1. El algoritmo de Dijkstra dentro del problema ayuda a la
parqueaderos disponibles. El tercer método utiliza la misma rápida localización de parqueaderos y rutas necesarias
lógica del segundo método, con la diferencia de que este utiliza para llegar a estos.
como punto de origen un parqueadero en lugar de un cruce.
El cuarto método hace uso de una variante de Dijkstra, que 2. La búsqueda de parqueaderos sirve para aquellos
calcula el peso de todas las aristas que utiliza el algoritmo usuarios que no encuentran un sitio conocido en donde
de Djkstra convencional, de esta manera podemos calcular el puedan parquearse, entonces se encontrara los diferentes
peso desde un punto de origen hasta todos los parqueaderos, parqueaderos y cual estará más cercano, partiendo del
los compara e imprime al usuario el que tenga menor peso, es punto en donde se encuentra el usuario.
decir, el parqueadero que se encuentra a menor distancia del
punto de origen especificado. 3. Este proyecto nos impulsó el trabajo en equipo, además
el conocimiento de las distintas aplicaciones que pueden
manejar los distintos tipos de grafos, ası́ como los
diferentes algoritmos que existen para la resolución de
problemas que puedan implicar grafos.

4. Los grafos son estructuras de datos complejos pero muy


organizado que nos servirán para la identificación de
puntos especı́ficos y sus distintas conexiones, por tanto,
el uso de grafos dentro de nuestro problema facilita el
manejo sobre los nodos y las conexiones que hay entre
estos, haciendo que la implementación del algoritmo.

5. Los artı́culos cientı́ficos son un método muy eficaz


para presentar un proyecto y sus metas a los usuarios,
Imagen 7. Menú de Opciones. sin mencionar que de esta manera, el proyecto puede
avanzar de forma que los usuarios pueden ver el
4. Cuando el usuario recién empieza a interactuar con
progreso de este y facilita la reunión de información
el menú de opciones, este le mostrará todas las opciones
para los desarrolladores.
posibles incluyendo la opción para salir.
Cuando el usuario recién empieza a interactuar con el menú
6. Se aprendió el proceso de cómo realizar un artı́culo de
de opciones, este le mostrará todas las opciones posibles
investigación para un proyecto con sus debidos pasos y
incluyendo la opción para salir. El menú nos muestra como
el tiempo en el que este debe tomarse para un resultado
primera opción ver las rutas, lo cual es muy intuitivo. Como
exitoso, siendo ası́ que la implementación futura de
segunda opción el usuario puede escoger en cuál de las tres
este proyecto pueda llegar a las manos de los usuarios
condiciones se encuentra, si desea calcular la ruta más corta
que la necesiten.
desde su posición hasta un parqueadero de su preferencia,
otra opción en la cual se encuentra en un parqueadero y desea
7. En esta ciudad se puede avanzar con el proyecto ya que
movilizarse a otro, y como última opción, puede decirle al
solo se tomó en cuenta un sector (Cabecera) para poder
programa en qué dirección cercana se encuentra para hallar
añadir otros sectores para el prototipo (por ejemplo:
el parqueadero más próximo.
Centro, Norte, Sur, La carrera 27, Real de Minas, y
toda el área metropolitana).

8. Otras aplicaciones realizan este método, pero este


proyecto supero las expectativas y para próximas
ocasiones, puede tener un modelo más ”estético” para
el usuario, que incluya opciones como una interfaz y
un sistema de rastreo, facilitando al usuario utilizar esta
aplicación y suplir eficazmente las necesidades de este.

9. El algoritmo de Dijkstra satisface las necesidades de


Imagen 8. Interacción con el programa. nuestro problema, por tanto una implementación de este
dentro de un grafo mucho más complejo que implique
toda la zona metropolitana de Bucaramanga es viable.
R EFERENCIAS
[1] https://ieeexplore.ieee.org/document/8265662/ Autores: Risald, Antonio
E. Mirino, Suyoto.
[2] https://ieeexplore.ieee.org/document/8342904/ Autores: Menglong Wu,
Bo Wu, Hao Song.
[3] https://ieeexplore.ieee.org/document/8243712/ Autores: Haijing Wang,
Fangfang Zhang, Peng Cui.
[4] http://metodos.fam.cie.uva.es/∼latex/curso-2015/apuntes3.pdf Autor:
Luis M. Molina

Potrebbero piacerti anche