Aprendizaje Interactivo de Teoría de Grafos
Aprendizaje Interactivo de Teoría de Grafos
Guest User
Using app without sign in
Buscador de vértices de corte
Halla los vértices cuya eliminación desconecta el grafo
Selecciona un algoritmo y genera pasos para comenzar la visualización
Un punto de articulación (o vértice de corte) es un vértice cuya eliminación desconecta el grafo o aumenta su número de componentes conexas. Hallar los puntos de articulación identifica los puntos únicos de fallo de una red.
El método basado en DFS de Tarjan visita cada vértice una vez, rastreando su tiempo de descubrimiento y su valor low-link, el vértice descubierto más temprano alcanzable desde su subárbol por aristas de retorno. Un vértice no raíz v es punto de articulación cuando algún subárbol hijo no puede alcanzar por encima de v, es decir low[hijo] >= disc[v]. La raíz de la DFS es punto de articulación cuando tiene dos o más hijos DFS. Todo el análisis se ejecuta en O(V + E).
Los puntos de articulación exponen enrutadores críticos en redes de comunicación, cruces clave en sistemas viales, servidores vulnerables en infraestructura distribuida e intermediarios influyentes en redes sociales. La ingeniería de fiabilidad los usa para priorizar la redundancia. También aparecen en rondas de entrevista más difíciles junto con los puentes.
Un solo DFS y dos números por vértice. El tiempo de descubrimiento dice cuándo se vio el vértice por primera vez; el low-link dice cuál es el vértice más temprano al que puede llegar su subárbol a través de una arista de retroceso.
dfs(u, padre):
desc[u] = low[u] = ++tiempo
hijos = 0
para cada vecino v de u:
si v == padre: continuar
si v ya visitado:
low[u] = min(low[u], desc[v]) // retroceso
si no:
hijos++
dfs(v, u)
low[u] = min(low[u], low[v])
si padre != NINGUNO y low[v] >= desc[u]:
marcar u como punto de articulación
si padre == NINGUNO y hijos > 1:
marcar u como punto de articulación // regla raízLa condición low[v] >= desc[u] dice que el subárbol con raíz en el hijo v no tiene ninguna arista de retroceso que trepe por encima de u. Así que toda ruta de salida de ese subárbol pasa por u, y borrar u lo deja aislado. La raíz es un caso aparte porque no tiene padre del que quedar desconectada: la raíz es punto de articulación exactamente cuando tiene dos o más hijos en el DFS, ya que esos subárboles solo pueden alcanzarse entre sí a través de ella.
Ejecuta el DFS desde A sobre un grafo formado por un triángulo con una cola de dos vértices, tomando los vecinos por orden alfabético.
Grafo de ejemplo: Aristas no dirigidas A-B, B-C y C-A que forman un triángulo, más C-D y D-E colgando de él.
Los puntos de articulación son C y D. El triángulo A-B-C no aporta ninguno entre A y B porque todo vértice de un ciclo tiene una ruta alternativa, mientras que en la cola C-D-E todo vértice interno es crítico. Ese contraste es la intuición clave: los puntos de articulación viven en las cadenas, no dentro de los ciclos.
Tiempo: O(V + E) · Espacio: O(V)
Esto es una única búsqueda en profundidad con trabajo extra constante por arista, así que cuesta lo mismo que el propio recorrido. Cada vértice se visita una vez y cada arista se examina dos veces, una desde cada extremo. El estado adicional son dos enteros por vértice, el tiempo de descubrimiento y el low-link, más la pila de recursión, todo O(V). La alternativa ingenua, quitar cada vértice por turno y comprobar la conectividad, cuesta O(V por (V + E)), así que el método del low-link convierte una comprobación cuadrática en una lineal en una sola pasada. En un grafo con 10.000 vértices y 30.000 aristas la diferencia es de unos cuatro órdenes de magnitud.
Puntos de articulación, puentes y componentes biconexas salen todos del mismo DFS. Cuál necesitas depende de si lo frágil es un vértice o una arista.
| Alternativa | Prefiérela cuando | Coste |
|---|---|---|
| Búsqueda de puentes | Lo crítico es un enlace y no un nodo. El mismo DFS, con la prueba estricta low[v] > desc[u]. | O(V + E) |
| Componentes biconexas | Quieres los bloques máximos que sobreviven a la eliminación de cualquier vértice, no solo los vértices de corte. | O(V + E) |
| Comprobación de 2-conectividad por vértices | Solo necesitas un sí o un no sobre si algún fallo único puede desconectar el grafo. | O(V + E) |
| SCC de Tarjan | El grafo es dirigido. Los puntos de articulación solo están definidos para grafos no dirigidos. | O(V + E) |
Leer el artículo completo: Applications of Graph Theory in the Real World
Algoritmos relacionados: Búsqueda de Puentes, Búsqueda en Profundidad, Algoritmo de Tarjan (CFC)