stringtranslate.com

Componente fuertemente conectado

Gráfico con componentes fuertemente conectados marcados

En la teoría matemática de grafos dirigidos , se dice que un grafo está fuertemente conectado si cada vértice es alcanzable desde todos los demás vértices. Los componentes fuertemente conectados de un grafo dirigido forman una partición en subgrafos que a su vez están fuertemente conectados. Es posible probar la fuerte conectividad de un grafo, o encontrar sus componentes fuertemente conectados, en tiempo lineal (es decir, Θ( V  +  E  )).

Definiciones

Un grafo dirigido se denomina fuertemente conexo si existe un camino en cada dirección entre cada par de vértices del grafo. Es decir, existe un camino desde el primer vértice del par hasta el segundo, y existe otro camino desde el segundo vértice hasta el primero. En un grafo dirigido G que puede no estar fuertemente conexo, se dice que un par de vértices u y v están fuertemente conexos entre sí si existe un camino en cada dirección entre ellos.

La relación binaria de estar fuertemente conectado es una relación de equivalencia , y los subgrafos inducidos de sus clases de equivalencia se denominan componentes fuertemente conectados . De manera equivalente, un componente fuertemente conectado de un grafo dirigido G es un subgrafo que está fuertemente conectado, y es máximo con esta propiedad: no se pueden incluir aristas o vértices adicionales de G en el subgrafo sin romper su propiedad de estar fuertemente conectado. La colección de componentes fuertemente conectados forma una partición del conjunto de vértices de G . Un componente fuertemente conectado C se denomina trivial cuando C consiste en un solo vértice que no está conectado consigo mismo con una arista, y no trivial en caso contrario. [1]

El grafo acíclico dirigido amarillo es la condensación del grafo dirigido azul. Se forma contrayendo cada componente fuertemente conectado del grafo azul en un único vértice amarillo.

Si cada componente fuertemente conexo se contrae a un solo vértice, el grafo resultante es un grafo acíclico dirigido , la condensación de G. Un grafo dirigido es acíclico si y solo si no tiene subgrafos fuertemente conexos con más de un vértice, porque un ciclo dirigido está fuertemente conexo y cada componente fuertemente conexo no trivial contiene al menos un ciclo dirigido.

Algoritmos

Algoritmos de tiempo lineal basados ​​en DFS

Varios algoritmos basados ​​en la búsqueda en profundidad calculan componentes fuertemente conectados en tiempo lineal.

Aunque el algoritmo de Kosaraju es conceptualmente simple, el de Tarjan y el algoritmo basado en rutas requieren solo una búsqueda en profundidad en lugar de dos.

Algoritmos basados ​​en accesibilidad

Los algoritmos de tiempo lineal anteriores se basan en la búsqueda en profundidad, que generalmente se considera difícil de paralelizar. Fleischer et al. [7] en 2000 propusieron un enfoque de divide y vencerás basado en consultas de alcanzabilidad , y dichos algoritmos generalmente se denominan algoritmos SCC basados ​​en alcanzabilidad. La idea de este enfoque es elegir un vértice pivote aleatorio y aplicar consultas de alcanzabilidad hacia adelante y hacia atrás desde este vértice. Las dos consultas dividen el conjunto de vértices en 4 subconjuntos: vértices alcanzados por ambas, una o ninguna de las búsquedas. Se puede demostrar que un componente fuertemente conectado tiene que estar contenido en uno de los subconjuntos. El subconjunto de vértices alcanzado por ambas búsquedas forma un componente fuertemente conectado, y luego el algoritmo recurre sobre los otros 3 subconjuntos.

Se muestra que el tiempo de ejecución secuencial esperado de este algoritmo es O( n  log  n ), un factor de O(log  n ) más que los algoritmos clásicos. El paralelismo proviene de: (1) las consultas de alcanzabilidad se pueden paralelizar más fácilmente (por ejemplo, mediante una búsqueda en amplitud (BFS), y puede ser rápido si el diámetro del grafo es pequeño); y (2) la independencia entre las subtareas en el proceso de divide y vencerás. Este algoritmo funciona bien en grafos del mundo real, [3] pero no tiene garantía teórica sobre el paralelismo (considere si un grafo no tiene aristas, el algoritmo requiere O( n ) niveles de recursiones).

Blelloch et al. [8] en 2016 demuestra que si las consultas de accesibilidad se aplican en un orden aleatorio, el límite de costo de O( n  log  n ) aún se mantiene. Además, las consultas se pueden agrupar de manera que se dupliquen los prefijos (es decir, 1, 2, 4, 8 consultas) y ejecutar simultáneamente en una ronda. El alcance general de este algoritmo es de log 2 n consultas de accesibilidad, que es probablemente el paralelismo óptimo que se puede lograr utilizando el enfoque basado en la accesibilidad.

Generación de gráficos aleatorios fuertemente conectados

Peter M. Maurer describe un algoritmo para generar grafos fuertemente conectados al azar, [9] basado en una modificación de un algoritmo para el aumento de la conectividad fuerte , el problema de agregar la menor cantidad posible de aristas para hacer un grafo fuertemente conectado. Cuando se utiliza junto con los modelos de Gilbert o Erdős-Rényi con reetiquetado de nodos, el algoritmo es capaz de generar cualquier grafo fuertemente conectado en n nodos, sin restricción en los tipos de estructuras que se pueden generar.

Aplicaciones

Los algoritmos para encontrar componentes fuertemente conectados se pueden utilizar para resolver problemas de 2-satisfacibilidad (sistemas de variables booleanas con restricciones en los valores de pares de variables): como Aspvall, Plass y Tarjan (1979) demostraron, una instancia de 2-satisfacibilidad es insatisfacible si y solo si hay una variable v tal que v y su negación están ambas contenidas en el mismo componente fuertemente conectado del gráfico de implicación de la instancia. [10]

Los componentes fuertemente conectados también se utilizan para calcular la descomposición de Dulmage-Mendelsohn , una clasificación de los bordes de un gráfico bipartito , según puedan o no ser parte de una correspondencia perfecta en el gráfico. [11]

Resultados relacionados

Un gráfico dirigido está fuertemente conectado si y solo si tiene una descomposición en orejas , una partición de los bordes en una secuencia de caminos y ciclos dirigidos de manera que el primer subgráfico de la secuencia es un ciclo y cada subgráfico subsiguiente es un ciclo que comparte un vértice con subgráficos anteriores o un camino que comparte sus dos puntos finales con subgráficos anteriores.

Según el teorema de Robbins , un grafo no dirigido puede estar orientado de tal manera que se vuelva fuertemente conexo, si y solo si es conexo por dos aristas . Una forma de demostrar este resultado es encontrar una descomposición en orejas del grafo no dirigido subyacente y luego orientar cada oreja de manera consistente. [12]

Véase también

Referencias

  1. ^ Nuutila, Esko; Soisalon-Soininen, Eljas (1994), "Sobre cómo encontrar los componentes fuertemente conectados en un gráfico dirigido", Information Processing Letters , 49 (1): 9–14, doi :10.1016/0020-0190(94)90047-7
  2. ^ Thomas H. Cormen , Charles E. Leiserson , Ronald L. Rivest y Clifford Stein . Introducción a los algoritmos , segunda edición. MIT Press y McGraw-Hill, 2001. ISBN 0-262-03293-7 . Sección 22.5, págs. 552–557. 
  3. ^ ab Hong, Sungpack; Rodia, Nicole C.; Olukotun, Kunle (2013), "Sobre la detección rápida en paralelo de componentes fuertemente conectados (SCC) en gráficos de mundo pequeño" (PDF) , Actas de la Conferencia internacional sobre computación de alto rendimiento, redes, almacenamiento y análisis - SC '13 , págs. 1–11, doi :10.1145/2503210.2503246, ISBN 9781450323789, Número de identificación del sujeto  2156324
  4. ^ Sharir, Micha (1981), "Un algoritmo de conectividad fuerte y sus aplicaciones en el análisis del flujo de datos", Computers & Mathematics with Applications , 7 : 67–72, doi : 10.1016/0898-1221(81)90008-0
  5. ^ Tarjan, RE (1972), "Algoritmos de búsqueda en profundidad y de grafos lineales", SIAM Journal on Computing , 1 (2): 146–160, doi :10.1137/0201010, S2CID  16467262
  6. ^ Dijkstra, Edsger (1976), Una disciplina de programación , Nueva Jersey: Prentice Hall, cap. 25.
  7. ^ Fleischer, Lisa K.; Hendrickson, Bruce; Pınar, Ali (2000), "Sobre la identificación de componentes fuertemente conectados en paralelo" (PDF) , Procesamiento paralelo y distribuido , Lecture Notes in Computer Science, vol. 1800, págs. 505–511, doi :10.1007/3-540-45591-4_68, ISBN 978-3-540-67442-9
  8. ^ Blelloch, Guy E.; Gu, Yan; Shun, Julian; Sun, Yihan (2016), "Paralelismo en algoritmos incrementales aleatorios" (PDF) , Actas del 28.º Simposio ACM sobre paralelismo en algoritmos y arquitecturas - SPAA '16 , págs. 467–478, doi : 10.1145/2935764.2935766 , hdl : 1721.1/146176 , ISBN 9781450342100.
  9. ^ Maurer, PM (febrero de 2018), Generación de gráficos aleatorios fuertemente conectados (PDF) , Int'l Conf. Modeling, Sim. and Vis. Methods MSV'17, CSREA Press, ISBN 978-1-60132-465-8, consultado el 27 de diciembre de 2019
  10. ^ Aspvall, Bengt; Plass, Michael F.; Tarjan, Robert E. (1979), "Un algoritmo de tiempo lineal para probar la verdad de ciertas fórmulas booleanas cuantificadas", Information Processing Letters , 8 (3): 121–123, doi :10.1016/0020-0190(79)90002-4.
  11. ^ Dulmage, AL y Mendelsohn, NS (1958), "Recubrimientos de gráficos bipartitos", Can. J. Math. , 10 : 517–534, doi : 10.4153/cjm-1958-052-0 , S2CID  123363425.
  12. ^ Robbins, HE (1939), "Un teorema sobre grafos, con una aplicación a un problema de control de tráfico", American Mathematical Monthly , 46 (5): 281–283, doi :10.2307/2303897, JSTOR  2303897.

Enlaces externos