Algoritmos de Grafos

Guía completa de 23+ algoritmos esenciales de grafos con análisis de complejidad, casos de uso y visualizaciones interactivas.

Probar Plataforma Interactiva

Recorrido de Grafos

Búsqueda en Anchura (BFS)

Explora el grafo nivel por nivel, visitando todos los vecinos antes de profundizar. Utiliza una cola para mantener el orden de exploración.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Camino más corto en grafos no ponderados, recorrido por niveles, encontrar componentes conectados

Búsqueda en Profundidad (DFS)

Explora lo más profundo posible en cada rama antes de retroceder. Utiliza una pila (o recursión) para rastrear el camino de exploración.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Ordenamiento topológico, detección de ciclos, búsqueda de caminos, resolución de laberintos

Ordenamiento Topológico

Ordenamiento lineal de vértices en un grafo acíclico dirigido (DAG) donde cada vértice aparece antes que todos los vértices a los que apunta.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Programación de tareas, resolución de dependencias, sistemas de construcción, prerrequisitos de cursos

Camino Euleriano

Encuentra un camino que visita cada arista exactamente una vez en un grafo no dirigido. Existe cuando el grafo tiene exactamente 0 o 2 vértices de grado impar.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Planificación de rutas, resolución de rompecabezas, diseño de circuitos, secuenciación de ADN

Algoritmos de Camino Más Corto

Algoritmo de Dijkstra

Encuentra los caminos más cortos desde un vértice fuente a todos los demás vértices en un grafo ponderado con pesos de arista no negativos.

Complejidad Temporal: O((V + E) log V)
Complejidad Espacial: O(V)
Casos de Uso: Navegación GPS, enrutamiento de redes, redes sociales

Algoritmo de Bellman-Ford

Encuentra los caminos más cortos desde un vértice fuente y detecta ciclos de peso negativo. Funciona con pesos de arista negativos.

Complejidad Temporal: O(VE)
Complejidad Espacial: O(V)
Casos de Uso: Detección de arbitraje de divisas, protocolos de red

Algoritmo de Floyd-Warshall

Encuentra los caminos más cortos entre todos los pares de vértices usando programación dinámica con vértices intermedios.

Complejidad Temporal: O(V³)
Complejidad Espacial: O(V²)
Casos de Uso: Caminos más cortos entre todos los pares, clausura transitiva

Árbol de Expansión Mínima

Algoritmo de Prim

Construye el árbol de expansión mínima creciendo desde un solo vértice, siempre agregando la arista de peso mínimo que conecta a un nuevo vértice.

Complejidad Temporal: O((V + E) log V)
Complejidad Espacial: O(V)
Casos de Uso: Diseño de redes, algoritmos de clustering

Algoritmo de Kruskal

Construye el árbol de expansión mínima ordenando todas las aristas y usando Union-Find para evitar ciclos mientras agrega aristas de peso mínimo.

Complejidad Temporal: O(E log E)
Complejidad Espacial: O(V)
Casos de Uso: Diseño de redes, diseño de circuitos, clustering

Algoritmo de Borůvka

Construye el árbol de expansión mínima usando un enfoque paralelo basado en componentes, adecuado para entornos de computación distribuida.

Complejidad Temporal: O(E log V)
Complejidad Espacial: O(V)
Casos de Uso: Computación paralela de MST, algoritmos distribuidos

Conectividad de Grafos

Algoritmo SCC de Tarjan

Encuentra componentes fuertemente conectados en grafos dirigidos usando DFS con valores low-link y una pila.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Análisis de dependencias, análisis de redes sociales

Algoritmo SCC de Kosaraju

Encuentra componentes fuertemente conectados usando dos pasadas DFS: una en el grafo original y otra en el grafo transpuesto.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Rastreo web, resolución de dependencias

Puntos de Articulación

Encuentra vértices cuya eliminación aumentaría el número de componentes conectados en un grafo no dirigido.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Confiabilidad de redes, análisis de infraestructura crítica

Búsqueda de Puentes

Encuentra aristas cuya eliminación aumentaría el número de componentes conectados en un grafo no dirigido.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Confiabilidad de redes, análisis de rutas críticas

Verificación Bipartita

Determina si un grafo puede colorearse con exactamente dos colores de manera que ningún vértice adyacente comparta el mismo color.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Problemas de emparejamiento, programación, asignación de recursos

Algoritmos Especiales

Detección de Ciclos

Detecta la presencia de ciclos en grafos dirigidos y no dirigidos usando varias técnicas como DFS y Union-Find.

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Detección de interbloqueos, análisis de dependencias

Camino Hamiltoniano

Encuentra un camino que visita cada vértice exactamente una vez usando técnicas de retroceso y programación dinámica.

Complejidad Temporal: O(2ⁿ × n²)
Complejidad Espacial: O(2ⁿ × n)
Casos de Uso: Planificación de tours, problemas de optimización

Problema del Vendedor Viajero

Encuentra la ruta más corta posible que visita cada ciudad exactamente una vez y regresa al punto de partida.

Complejidad Temporal: O(n² × 2ⁿ)
Complejidad Espacial: O(n × 2ⁿ)
Casos de Uso: Optimización de rutas, logística, perforación de placas de circuito

Coloración de Grafos

Asigna colores a los vértices de manera que ningún vértice adyacente comparta el mismo color, usando el número mínimo de colores.

Complejidad Temporal: O(V × 2ⱽ)
Complejidad Espacial: O(2ⱽ)
Casos de Uso: Programación, asignación de registros, asignación de frecuencias

Clique Maximal

Encuentra el subgrafo completo más grande donde cada par de vértices está conectado por una arista.

Complejidad Temporal: O(3ⁿ/³)
Complejidad Espacial: O(V)
Casos de Uso: Análisis de redes sociales, bioinformática, minería de datos

Verificación de Cordalidad

Determina si un grafo es cordal (cada ciclo de longitud 4 o más tiene una cuerda - una arista que conecta dos vértices no adyacentes en el ciclo).

Complejidad Temporal: O(V + E)
Complejidad Espacial: O(V)
Casos de Uso: Reconocimiento de grafos perfectos, problemas de optimización

Flujo de Redes

Flujo Máximo

Encuentra el flujo máximo desde una fuente hasta un sumidero en una red de flujo usando algoritmos como Ford-Fulkerson con caminos aumentantes.

Complejidad Temporal: O(V²E)
Complejidad Espacial: O(V²)
Casos de Uso: Planificación de capacidad de red, asignación de recursos, emparejamiento bipartito

Corte Mínimo

Encuentra el corte de capacidad mínima que separa la fuente del sumidero, estrechamente relacionado con el flujo máximo por el teorema max-flow min-cut.

Complejidad Temporal: O(V²E)
Complejidad Espacial: O(V²)
Casos de Uso: Confiabilidad de redes, segmentación de imágenes, clustering

¿Listo para Explorar Estos Algoritmos?

Experimenta visualizaciones interactivas y ejecución paso a paso de todos estos algoritmos.

Lanzar Plataforma Interactiva