You are on page 1of 3

ANÁLISIS DE COMPLEJIDAD, PROYECTO 3

1A- Camino de costo mínimo (menor distancia)


Se usará el algoritmo de Dijkstra imlpementado usando un Binary heap orientado mínimo.
En el peor de los casos cada vértice del grafo estará conectado con todos los demás, es
decir V-1 conexiones tendría cada vértice, llamemos a este número como N. Hallar y
actualizar el peso de un vértice adyacente en binary heap es LogV por lo que la
complejidad para actualizar el peso de todos los vértices adyacentes a un vértice origen es
N*LogV. En total si actualizan los V vértices la complejidad resultante es O(VN*LogV).
Para hallar las estaciones más cercanas primero sectorizamos las estaciones en 100
sectores, en promedio la complejidad de buscar la más cercana es 0(S/50) buscando en los
dos sectores correspondientes, esto en Big-O en total es O(S + VN*LogV).

2A- Camino más corto (menos vértices)


Se usa el algoritmo DFS para armar el grafo dirigido que nos da la dirección más corta
entre el vértice inicial y todos los demás, esto es proporcional al número de vértices más
el número de arcos. Luego se encuentra la ruta lo que toma tiempo proporcional a la
distancia total de la ruta. Si A es la cantidad de arcos, V la de vértices y L la distancia de la
ruta encontrada, la complejidad es: O( A + V + L).

3B- N estaciones más congestionadas


 Double N. Número de estaciones
En la carga de datos se crea un Binary Heap Max-Oriented de estaciones por congestión.
Luego se pide el máximo las N veces que se necesitan, con complejidad O(NLogS) siendo S
el número de estaciones. Se debería insertar las N estaciones sacadas para que el método
se pueda usar más de una vez. Esto tiene complejidad de O(NlogS) en el peor caso, por lo
que la complejidad total sigue siendo O(NlogS) en Big-O.

4B- Grafo de rutas mínimas que conectan N estaciones


 Double N. Número de estaciones.
Para esto se encuentra el árbol de rutas mínimas para cada estación, usando Dijkstra, en
total deberían ser N arboles hallados para que todas las estaciones se conecten entre sí.
La complejidad total es el tiempo en encontrar un árbol por el número de veces que se
busca, más la cantidad de rutas encontradas (C) por la longitud promedio L de cada ruta:
O O(V(N^2)*LogV+CL) .

5C- Crear grafo de viajes de bicicletas y persistirlo con JSON


Se recorrerá la lista de viajes y en cada iteración se actualiza la información del vértice
correspondiente si este existe, en caso contrario se crea el vértice con la información
nueva. La complejidad de esto es proporcional al número de viajes hechos. O(N)
El esquema JSON para persistir el grafo tiene el siguiente formato:
[
{“id”: <id Station 1>
“Vértices con origen en esta estación”: [
{“Id destino”: <Id estación destino vértice 1>,
“Duración”: <Promedio duración vértice 1> },

{“Id destino”: <Id estación destino vértice 2>,


“Duración”: <Promedio duración vértice 2> },
.
.
.
]
},
{ “id”: <id Station 2>
“Vértices con origen en esta estación”: [
{“Id destino”: <Id estación destino vértice 1>,
“Duración”: <Promedio duración vértice 1> },

{“Id destino”: <Id estación destino vértice 2>,


“Duración”: <Promedio duración vértice 2> },
.
.
.
]
},
.
.
.
{ “id”: <id Station N>
“Vértices con origen en esta estación”: [
{“Id destino”: <Id estación destino vértice 1>,
“Duración”: <Promedio duración vértice 1> },

{“Id destino”: <Id estación destino vértice 2>,


“Duración”: <Promedio duración vértice 2> },
.
.
.
]
}
]
6C-

7C-

You might also like