Algoritmo BMSSP2025
Complejidad: O(m log2/3 n) - ¡Rompe la barrera del sorting!
Pseudocódigo BMSSP
Leyenda de Colores
1El problema con Dijkstra
Dijkstra mantiene un "frontier" que puede tener Θ(n) vértices. Ordenar constantemente estos vértices lleva a Ω(n log n) operaciones.
2FindPivots - Reducción del Frontier
Ejecutamos k pasos de relajación (estilo Bellman-Ford). Los "pivots" son raíces de subárboles con ≥k vértices. Solo hay |U|/k pivots.
3Divide and Conquer
En vez de ordenar todo el frontier, particionamos recursivamente. Cada nivel reduce el problema en factor 2^t.
4La ganancia
El trabajo por vértice se reduce de log(n) a log(n)/log^Ω(1)(n), rompiendo la barrera del sorting.
Comparación con Dijkstra
Dijkstra
BMSSP (Nuevo)
¿Cómo rompe la barrera?
En vez de mantener un orden total de todos los n vértices (que requiere Ω(n log n)), el algoritmo BMSSP solo ordena los pivots - aproximadamente |U|/k vértices por nivel. Al reducir el número de vértices que necesitan ser ordenados en cada nivel por un factor de k = log1/3(n), el trabajo total se reduce a O(m log2/3 n).