En teoría de grafos , la alcanzabilidad se refiere a la capacidad de ir de un vértice a otro dentro de un grafo. Un vérticepuede alcanzar un vértice(yes accesible desde) si existe una secuencia de vértices adyacentes (es decir, un camino ) que comienza cony termina con.
En un grafo no dirigido, la alcanzabilidad entre todos los pares de vértices se puede determinar identificando los componentes conexos del grafo. Cualquier par de vértices en dicho grafo puede alcanzarse entre sí si y solo si pertenecen al mismo componente conexo; por lo tanto, en dicho grafo, la alcanzabilidad es simétrica (alcanzasi y solo sialcanzaLos componentes conexos de un grafo no dirigido pueden identificarse en tiempo lineal. El resto de este artículo se centra en el problema más complejo de determinar la alcanzabilidad por pares en un grafo dirigido (que, por cierto, no tiene por qué ser simétrico).
Definición
Para un grafo dirigido, con conjunto de vérticesy conjunto de bordes, la relación de alcanzabilidad dees el cierre transitivo de, es decir, el conjunto de todos los pares ordenadosde vértices enpara la cual existe una secuencia de vérticesde tal manera que el bordeestá ena pesar de. [ 1 ]
Sies acíclico , entonces su relación de alcanzabilidad es un orden parcial ; cualquier orden parcial puede definirse de esta manera, por ejemplo, como la relación de alcanzabilidad de su reducción transitiva . [ 2 ] Una consecuencia notable de esto es que, dado que los órdenes parciales son antisimétricos, sipuede alcanzar, entonces sabemos queno puede llegarIntuitivamente, si pudiéramos viajar desdeay de vuelta a, entoncescontendría un ciclo , contradiciendo que es acíclico. Sies dirigido pero no acíclico (es decir, contiene al menos un ciclo), entonces su relación de alcanzabilidad corresponderá a un preorden en lugar de un orden parcial. [ 3 ]
Algoritmos
Los algoritmos para determinar la accesibilidad se dividen en dos clases: los que requieren preprocesamiento y los que no.
Si solo tiene que realizar una (o unas pocas) consultas, puede resultar más eficiente prescindir del uso de estructuras de datos más complejas y calcular directamente la alcanzabilidad del par deseado. Esto se puede lograr en tiempo lineal utilizando algoritmos como la búsqueda en amplitud o la búsqueda en profundidad iterativa . [ 4 ]
Si va a realizar muchas consultas, entonces puede utilizarse un método más sofisticado; la elección exacta del método depende de la naturaleza del grafo que se esté analizando. A cambio de tiempo de preprocesamiento y algo de espacio de almacenamiento adicional, podemos crear una estructura de datos que luego puede responder consultas de alcanzabilidad en cualquier par de vértices en tan solotiempo. A continuación se describen tres algoritmos y estructuras de datos diferentes para tres situaciones distintas y cada vez más especializadas.
Algoritmo de Floyd-Warshall
El algoritmo de Floyd-Warshall [ 5 ] se puede utilizar para calcular el cierre transitivo de cualquier grafo dirigido, lo que da lugar a la relación de alcanzabilidad como en la definición anterior.
El algoritmo requieretiempo yespacio en el peor de los casos. Este algoritmo no solo se interesa en la alcanzabilidad, sino que también calcula la distancia del camino más corto entre todos los pares de vértices. Para grafos que contienen ciclos negativos, los caminos más cortos pueden no estar definidos, pero aún se puede observar la alcanzabilidad entre pares.
El algoritmo de Thorup
Para digrafos planares , existe un método mucho más rápido, como lo describió Mikkel Thorup en 2004. [ 6 ] Este método puede responder consultas de alcanzabilidad en un grafo planar entiempo después de pasartiempo de preprocesamiento para crear una estructura de datos detamaño. Este algoritmo también puede proporcionar distancias aproximadas de la ruta más corta, así como información de ruta.
El enfoque general consiste en asociar a cada vértice un conjunto relativamente pequeño de los llamados caminos separadores, de modo que cualquier camino desde un vérticea cualquier otro vérticedebe pasar por al menos uno de los separadores asociados conoA continuación se presenta un resumen de las secciones relacionadas con la accesibilidad.
Dado un gráficoEl algoritmo comienza organizando los vértices en capas a partir de un vértice arbitrario.Las capas se construyen en pasos alternos considerando primero todos los vértices alcanzables desde el paso anterior (comenzando con solo) y luego todos los vértices que llegan al paso anterior hasta que todos los vértices se hayan asignado a una capa. Por la construcción de las capas, cada vértice aparece como máximo en dos capas, y cada camino dirigido , o dipath, enestá contenido dentro de dos capas adyacentesy. Dejarser la última capa creada, es decir, el valor más bajo parade tal manera que.
El gráfico se reexpresa entonces como una serie de digrafos.donde caday dóndees la contracción de todos los niveles anterioresen un solo vértice. Porque cada dipath aparece en como máximo dos capas consecutivas, y porque cadaestá formada por dos capas consecutivas, cada dipath enaparece en su totalidad en al menos uno(y no más de 2 gráficos consecutivos de este tipo)
Para cadaSe identifican tres separadores que, al ser eliminados, dividen el gráfico en tres componentes que contienen como máximolos vértices del original. Comoestá construido a partir de dos capas de dipaths opuestos, cada separador puede constar de hasta 2 dipaths, para un total de hasta 6 dipaths en todos los separadores.Sea este conjunto de dipaths. La prueba de que tales separadores siempre se pueden encontrar está relacionada con el Teorema del Separador Planar de Lipton y Tarjan, y estos separadores se pueden localizar en tiempo lineal.
Para cada, la naturaleza dirigida deproporciona una indexación natural de sus vértices desde el inicio hasta el final del camino. Para cada vérticeen, localizamos el primer vértice enaccesible pory el último vértice enque llega a. Es decir, estamos analizando cuán temprano enpodemos obtener dey hasta qué punto podemos permanecer eny aún así volver aEsta información se almacena con cada. Entonces, para cualquier par de vérticesy,puede alcanzara través desise conecta aantes queconecta desde.
Cada vértice está etiquetado como arriba para cada paso de la recursión que construye . Como esta recursión tiene profundidad logarítmica, un total de Se almacena información adicional por vértice. A partir de este punto, una consulta de tiempo logarítmico para la alcanzabilidad es tan simple como examinar cada par de etiquetas para encontrar una común y adecuada.El artículo original luego trabaja para reducir el tiempo de consulta a.
Al resumir el análisis de este método, primero considere que el enfoque de capas particiona los vértices de manera que cada vértice se considera únicamente veces. La fase separadora del algoritmo divide el grafo en componentes que son como máximoel tamaño del grafo original, lo que resulta en una profundidad de recursión logarítmica. En cada nivel de la recursión, solo se necesita trabajo lineal para identificar los separadores, así como las posibles conexiones entre vértices. El resultado general estiempo de preprocesamiento con solo Información adicional almacenada para cada vértice.
El algoritmo de Kameda


Un método aún más rápido para el preprocesamiento, debido a T. Kameda en 1975, [ 7 ] se puede utilizar si el grafo es planar , acíclico y también exhibe las siguientes propiedades adicionales: todos los vértices de grado de entrada 0 y todos los vértices de grado de salida 0 aparecen en la misma cara (a menudo se supone que es la cara exterior), y es posible particionar el límite de esa cara en dos partes de manera que todos los vértices de grado de entrada 0 aparezcan en una parte, y todos los vértices de grado de salida 0 aparezcan en la otra (es decir, los dos tipos de vértices no se alternan).
Siexhibe estas propiedades, entonces podemos preprocesar el gráfico en solo tiempo y tienda solamentebits adicionales por vértice, respondiendo a consultas de alcanzabilidad para cualquier par de vértices entiempo con una simple comparación.
El preprocesamiento realiza los siguientes pasos. Añadimos un nuevo vértice.que tiene una arista a cada vértice de grado 0, y otro nuevo vérticecon aristas desde cada vértice de grado 0. Tenga en cuenta que las propiedades deEsto nos permite hacerlo manteniendo la planaridad, es decir, no habrá cruces de aristas después de estas adiciones. Para cada vértice almacenamos la lista de adyacencias (aristas salientes) en orden de la planaridad del grafo (por ejemplo, en sentido horario con respecto a la incrustación del grafo). Luego inicializamos un contador.y comenzar un recorrido en profundidad desdeDurante este recorrido, la lista de adyacencia de cada vértice se visita de izquierda a derecha según sea necesario. A medida que los vértices se extraen de la pila del recorrido, se les etiqueta con el valor, yLuego se decrementa. Tenga en cuenta quesiempre está etiquetado con el valorysiempre está etiquetado conA continuación, se repite el recorrido en profundidad, pero esta vez se visita la lista de adyacencia de cada vértice de derecha a izquierda.
Cuando se complete,yy sus aristas incidentes, se eliminan. Cada vértice restante almacena una etiqueta bidimensional con valores deaDados dos vérticesyy sus etiquetasy, decimos quesi y solo si,y existe al menos un componenteolo cual es estrictamente menor queo, respectivamente.
El resultado principal de este método establece entonces quees accesible desdesi y solo si, que se calcula fácilmente entiempo.
Problemas relacionados
Un problema relacionado es resolver consultas de alcanzabilidad con algún númerode fallos de vértice. Por ejemplo: "¿Puede el vérticeaún alcanzar el vérticeaunque los vértices¿Han fallado y ya no se pueden usar? Un problema similar podría considerar fallas en las aristas en lugar de fallas en los vértices, o una combinación de ambos. La técnica de búsqueda en amplitud funciona igual de bien en este tipo de consultas, pero construir un oráculo eficiente es más complejo. [ 8 ] [ 9 ]
Otro problema relacionado con las consultas de accesibilidad radica en el recálculo rápido de los cambios en las relaciones de accesibilidad cuando se modifica alguna parte del grafo. Por ejemplo, esto es relevante para la recolección de basura , que necesita equilibrar la recuperación de memoria (para que pueda reasignarse) con las consideraciones de rendimiento de la aplicación en ejecución.
Véase también
Referencias
- ↑ Skiena, Steven S. (2011), "15.5 Cierre transitivo y reducción", The Algorithm Design Manual (2.ª ed.), Springer, pp. 495–497 , ISBN 9781848000698.
- ↑ Cohn, Paul Moritz (2003), Álgebra básica: grupos, anillos y cuerpos , Springer, pág. 17, ISBN 9781852335878.
- ↑ Schmidt, Gunther (2010), Matemáticas relacionales , Enciclopedia de matemáticas y sus aplicaciones, vol. 132, Cambridge University Press, pág. 77, ISBN 9780521762687.
- ↑ Gersting, Judith L. (2006), Estructuras matemáticas para la informática (6.ª ed.), Macmillan, pág. 519, ISBN 9780716768647.
- ↑ Cormen, Thomas H. ; Leiserson, Charles E. ; Rivest, Ronald L. ; Stein, Clifford (2001), "Cierre transitivo de un grafo dirigido", Introducción a los algoritmos (2.ª ed.), MIT Press y McGraw-Hill, pp. 632–634 , ISBN 0-262-03293-7.
- ↑ Thorup, Mikkel (2004), "Oráculos compactos para la alcanzabilidad y distancias aproximadas en digrafos planares", Journal of the ACM , 51 (6): 993–1024 , doi : 10.1145/1039488.1039493 , MR 2145261 , S2CID 18864647 .
- ↑ Kameda, T (1975), "Sobre la representación vectorial de la alcanzabilidad en grafos dirigidos planares", Information Processing Letters , 3 (3): 75– 77, doi : 10.1016/0020-0190(75)90019-8.
- ^ Demetrescu, Camil; Thorup, Mikkel ; Chowdhury, Rezaul Alam; Ramachandran, Vijaya (2008), "Oráculos para distancias que evitan un nodo o enlace fallido", SIAM Journal on Computing , 37 (5): 1299– 1318, CiteSeerX 10.1.1.329.5435 , doi : 10.1137/S0097539705429847 , MR 2386269 .
- ↑ Halftermeyer, Pierre, Conectividad en redes y esquemas de etiquetado compacto para la planificación de emergencias , Universidad de Burdeos.
- Conectividad de gráficos