4. Descripción detallada de algoritmos - Oscarmendez825/PROJECT-3-CE1103-SERVER GitHub Wiki

Algoritmos especializados

Dijkstra:

Este es un algoritmo exclusivo del grafo, usado para calcular las menos costosas rutas para llegar desde determinado nodo hasta todos los demás. El algoritmo suma los pesos desde el nodo designado como origen, y luego de revisar todas sus adyacencias y marcarlo para no visitarlo de nuevo, se mueve por esos otros nodos para llegar a nodos más lejanos, comparando las sumas de los pesos de cierta ruta con los de una nueva ruta hallada y desechando el valor mayor, para así conseguir la ruta más corta desde el origen hasta todos los demás nodos.

Protocolos de Servidor Rest API:

@GetMapping:

Se usa para recuperar información del servidor de forma segura, sin alterar el estado del servidor.

@PostMapping:

Se usa para enviar información al servidor, esto con el fin de alterar, de una u otra forma, el estado del servidor.

@RequestBody:

Recoge información enviada al servidor y la asigna al objeto o función al que corresponde.

Algoritmos propios locales:

Consulta de rutas:

Un usuario tiene la posibilidad de, desde la página web, ingresar ciertos parámetros de búsqueda, de acuerdo a sus planes, para encontrar información respecto a sus viajes de interés. Estos parámetros, tales como ubicación actual y destino, son utilizados sobre el grafo, para buscar en él las rutas que más le convengan al usuario, utilizando entre otros, el ya mencionado Dijkstra.

Compra de tiquetes:

El usuario podrá comprar tiquetes para viajar en tren a través de la página. para ello, aportará los datos necesarios para ubicar, con Dijkstra, la ruta por la que viajará; de acuerdo a las propiedades de esta ruta, se le ofrecerá al usuario un ticket, cuyo precio dependerá de los nodos por los que pase la ruta y la suma de pesos de las aristas que atraviese. El usuario marcará una cantidad de tickets, y se le aplicará cierto porcentaje de descuento por cada ticket adicional. Una vez hecha la compra, los datos de la compra serán guardados en un archivo Json destinado a funcionar como historial de compras.

##Cálculo del precio: Este proceso define el precio del ticket de una ruta. Ubicando en primer lugar la versión más corta de dicha ruta con Dijkstra, cuyos pesos dependen de puntos de referencia en cada cantón o distrito. Cada cantón equivale a 25 colones adicionales al precio. Una vez calculado el precio del ticket, se debe tomar en cuenta la cantidad de tickets, ya que debe aplicarse un descuento de 2% de descuento por cada ticket adicional que se compre, hasta un máximo de 90% de descuento. Hecho esto, el algoritmo devuelve el precio final de la compra.