$$ T(n)=A*T(n/B)+f(n) $$
$$ A=2, B = 2, f(n) = n $$
$$ \text{Al recurrir al teorema maestro tenemos:}\\ \text{A = 2 subproblemas por cada nivel de recursión}\\ \text{B = 2 partes iguales en las cuales dividimos al subproblema en cada nivel.}\\ \text{f(n) = n dado juntamos esas partes iguales realizando comparaciones en O(1) }\\ \text{y posteriormente agregamos los elementos restantes al arreglo a devolver}\\ \text{(con }n \text{ la cantidad de elementos en el subproblema actual).}\\
\text{Vamos a comenzar probando con el caso número dos de teorema, donde igualamos:}\\
f(n) = \Theta\left(n^{\log_B A}\right)\\
\text{Tras reemplazar con las variables de nuestro problema tenemos que:}\\
n = \Theta\left(n^{\log_2 2}\right)\\
n = \Theta\left(n^{1}\right)\\
n = \Theta\left(n\right)\\
\text{Finalmente observamos que se cumple satisfactoriamente que }f(n) = n\\ \text{ sea acotada tanto superior como inferiormente por } n\\ \text{ y por lo tanto se tiene que:}\\ T(n) = \Theta\left(n^{\log_B A} * log *n\right)\\ T(n) = \Theta\left(n^{\log_2 2} * log *n\right)\\ T(n) = \Theta\left(n * log *n\right) $$
evaluar_factibilidad(puentes_propuestos):
merge_sort(puentes_propuestos, N asc)
devolver _evaluar_factibilidad(propuestas_ordenadas, 0, len(propuestas_ordenadas) - 1)
_evaluar_factibilidad(puentes_propuestos, ini, fin):
Si me queda una sola propuesta la devuelvo junto con cero cruces
solucion_izq, cruzados_izq = _evaluar_factibilidad(puentes_propuestos, primera_mitad)
solucion_der, cruzados_der = _evaluar_factibilidad(puentes_propuestos, segunda_mitad)
devolver merge_puentes(solucion_izq, solucion_der, cruzados_izq + cruzados_der)
merge_puentes(solucion_izq, solucion_der, cruzados):
i = j = 0
resultado = []
Mientras i < len(izq) y j < len(der):
propuesta_izq = izq[i]
propuesta_der = der[j]
Si la propuesta izquierda termina en un barrio anterior a la derecha:
res.resultado(propuesta_izq)
i += 1
Caso contrario:
res.resultado(propuesta_der)
cruzados += cantidad_restante_en_solucion_izq
j += 1
Agrego los restantes de solucion_izq si los hay
Agrego los restantes de solucion_der si los hay
devolver resultado, cruzados