Articulo de referencia

Accesibilidad

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értice s {\displaystyle s} puede alcanzar un vértice t {\dis...

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értices{\displaystyle s}puede alcanzar un vérticet{\displaystyle t}(yt{\displaystyle t}es accesible desdes{\displaystyle s}) si existe una secuencia de vértices adyacentes (es decir, un camino ) que comienza cons{\displaystyle s}y termina cont{\displaystyle t}.

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 (s{\displaystyle s}alcanzat{\displaystyle t}si y solo sit{\displaystyle t}alcanzas{\displaystyle s}Los 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 dirigidoGRAMO=(V,mi){\displaystyle G=(V,E)}, con conjunto de vérticesV{\displaystyle V}y conjunto de bordesmi{\displaystyle E}, la relación de alcanzabilidad deGRAMO{\displaystyle G}es el cierre transitivo demi{\displaystyle E}, es decir, el conjunto de todos los pares ordenados(s,t){\displaystyle (s,t)}de vértices enV{\displaystyle V}para la cual existe una secuencia de vérticesv0=s,v1,v2,...,vk=t{\displaystyle v_{0}=s,v_{1},v_{2},...,v_{k}=t}de tal manera que el borde(vi1,vi){\displaystyle (v_{i-1},v_{i})}está enmi{\displaystyle E}a pesar de1ik{\displaystyle 1\leq i\leq k}. [ 1 ]

SiGRAMO{\displaystyle G}es 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, sis{\displaystyle s}puede alcanzart{\displaystyle t}, entonces sabemos quet{\displaystyle t}no puede llegars{\displaystyle s}Intuitivamente, si pudiéramos viajar desdes{\displaystyle s}at{\displaystyle t}y de vuelta as{\displaystyle s}, entoncesGRAMO{\displaystyle G}contendría un ciclo , contradiciendo que es acíclico. SiGRAMO{\displaystyle G}es 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 soloO(1){\displaystyle O(1)}tiempo. 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 requiereO(|V|3){\displaystyle O(|V|^{3})}tiempo yO(|V|2){\displaystyle O(|V|^{2})}espacio 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 enO(1){\displaystyle O(1)}tiempo después de pasarO(norteregistronorte){\displaystyle O(n\log {n})}tiempo de preprocesamiento para crear una estructura de datos deO(norteregistronorte){\displaystyle O(n\log {n})}tamañ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érticev{\displaystyle v}a cualquier otro vérticew{\displaystyle w}debe pasar por al menos uno de los separadores asociados conv{\displaystyle v}ow{\displaystyle w}A continuación se presenta un resumen de las secciones relacionadas con la accesibilidad.

Dado un gráficoGRAMO{\displaystyle G}El algoritmo comienza organizando los vértices en capas a partir de un vértice arbitrario.v0{\displaystyle v_{0}}Las capas se construyen en pasos alternos considerando primero todos los vértices alcanzables desde el paso anterior (comenzando con solov0{\displaystyle v_{0}}) 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, enGRAMO{\displaystyle G}está contenido dentro de dos capas adyacentesLi{\displaystyle L_{i}}yLi+1{\displaystyle L_{i+1}}. Dejark{\displaystyle k}ser la última capa creada, es decir, el valor más bajo parak{\displaystyle k}de tal manera quei=0kLi=V{\displaystyle \bigcup _{i=0}^{k}L_{i}=V}.

El gráfico se reexpresa entonces como una serie de digrafos.GRAMO0,GRAMO1,,GRAMOk1{\displaystyle G_{0},G_{1},\ldots ,G_{k-1}}donde cadaGRAMOi=riLiLi+1{\displaystyle G_{i}=r_{i}\cup L_{i}\cup L_{i+1}}y dónderi{\displaystyle r_{i}}es la contracción de todos los niveles anterioresL0Li1{\displaystyle L_{0}\ldots L_{i-1}}en un solo vértice. Porque cada dipath aparece en como máximo dos capas consecutivas, y porque cadaGRAMOi{\displaystyle G_{i}}está formada por dos capas consecutivas, cada dipath enGRAMO{\displaystyle G}aparece en su totalidad en al menos unoGRAMOi{\displaystyle G_{i}}(y no más de 2 gráficos consecutivos de este tipo)

Para cadaGRAMOi{\displaystyle G_{i}}Se identifican tres separadores que, al ser eliminados, dividen el gráfico en tres componentes que contienen como máximo1/2{\displaystyle 1/2}los vértices del original. ComoGRAMOi{\displaystyle G_{i}}está 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.S{\displaystyle S}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 cadaQS{\displaystyle Q\in S}, la naturaleza dirigida deQ{\displaystyle Q}proporciona una indexación natural de sus vértices desde el inicio hasta el final del camino. Para cada vérticev{\displaystyle v}enGRAMOi{\displaystyle G_{i}}, localizamos el primer vértice enQ{\displaystyle Q}accesible porv{\displaystyle v}y el último vértice enQ{\displaystyle Q}que llega av{\displaystyle v}. Es decir, estamos analizando cuán temprano enQ{\displaystyle Q}podemos obtener dev{\displaystyle v}y hasta qué punto podemos permanecer enQ{\displaystyle Q}y aún así volver av{\displaystyle v}Esta información se almacena con cadav{\displaystyle v}. Entonces, para cualquier par de vértices{\displaystyle u}yw{\displaystyle w},{\displaystyle u}puede alcanzarw{\displaystyle w}a través deQ{\displaystyle Q}si{\displaystyle u}se conecta aQ{\displaystyle Q}antes quew{\displaystyle w}conecta desdeQ{\displaystyle Q}.

Cada vértice está etiquetado como arriba para cada paso de la recursión que construye GRAMO0,GRAMOk{\displaystyle G_{0}\ldots ,G_{k}}. Como esta recursión tiene profundidad logarítmica, un total de O(registronorte){\displaystyle O(\log {n})}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.Q{\displaystyle Q}El artículo original luego trabaja para reducir el tiempo de consulta aO(1){\displaystyle O(1)}.

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 únicamenteO(1){\displaystyle O(1)} veces. La fase separadora del algoritmo divide el grafo en componentes que son como máximo1/2{\displaystyle 1/2}el 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 esO(norteregistronorte){\displaystyle O(n\log n)}tiempo de preprocesamiento con solo O(registronorte){\displaystyle O(\log {n})}Información adicional almacenada para cada vértice.

El algoritmo de Kameda

Un digrafo adecuado para el método de Kameda cons{\displaystyle s}yt{\displaystyle t}agregado
El mismo gráfico que el anterior después de que se haya ejecutado el algoritmo de Kameda, mostrando las etiquetas DFS para cada vértice.

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).

SiGRAMO{\displaystyle G}exhibe estas propiedades, entonces podemos preprocesar el gráfico en solo O(norte){\displaystyle O(n)}tiempo y tienda solamenteO(registronorte){\displaystyle O(\log {n})}bits adicionales por vértice, respondiendo a consultas de alcanzabilidad para cualquier par de vértices enO(1){\displaystyle O(1)}tiempo con una simple comparación.

El preprocesamiento realiza los siguientes pasos. Añadimos un nuevo vértice.s{\displaystyle s}que tiene una arista a cada vértice de grado 0, y otro nuevo vérticet{\displaystyle t}con aristas desde cada vértice de grado 0. Tenga en cuenta que las propiedades deGRAMO{\displaystyle G}Esto 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.i=norte+1{\displaystyle i=n+1}y comenzar un recorrido en profundidad desdes{\displaystyle s}Durante 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 valori{\displaystyle i}, yi{\displaystyle i}Luego se decrementa. Tenga en cuenta quet{\displaystyle t}siempre está etiquetado con el valornorte+1{\displaystyle n+1}ys{\displaystyle s}siempre está etiquetado con0{\displaystyle 0}A 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,s{\displaystyle s}yt{\displaystyle t}y sus aristas incidentes, se eliminan. Cada vértice restante almacena una etiqueta bidimensional con valores de1{\displaystyle 1}anorte{\displaystyle n}Dados dos vértices{\displaystyle u}yv{\displaystyle v}y sus etiquetasL()=(a1,a2){\displaystyle L(u)=(a_{1},a_{2})}yL(v)=(b1,b2){\displaystyle L(v)=(b_{1},b_{2})}, decimos queL()<L(v){\displaystyle L(u)<L(v)}si y solo sia1b1{\displaystyle a_{1}\leq b_{1}},a2b2{\displaystyle a_{2}\leq b_{2}}y existe al menos un componentea1{\displaystyle a_{1}}oa2{\displaystyle a_{2}}lo cual es estrictamente menor queb1{\displaystyle b_{1}}ob2{\displaystyle b_{2}}, respectivamente.

El resultado principal de este método establece entonces quev{\displaystyle v}es accesible desde{\displaystyle u}si y solo siL()<L(v){\displaystyle L(u)<L(v)}, que se calcula fácilmente enO(1){\displaystyle O(1)}tiempo.

Un problema relacionado es resolver consultas de alcanzabilidad con algún númerok{\displaystyle k}de fallos de vértice. Por ejemplo: "¿Puede el vértice{\displaystyle u}aún alcanzar el vérticev{\displaystyle v}aunque los vérticess1,s2,...,sk{\displaystyle s_{1},s_{2},...,s_{k}}¿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

  1. Skiena, Steven S. (2011), "15.5 Cierre transitivo y reducción", The Algorithm Design Manual (2.ª  ed.), Springer, pp. 495–497 , ISBN  9781848000698.
  2. Cohn, Paul Moritz (2003), Álgebra básica: grupos, anillos y cuerpos , Springer, pág. 17, ISBN  9781852335878.
  3. Schmidt, Gunther (2010), Matemáticas relacionales , Enciclopedia de matemáticas y sus aplicaciones, vol. 132, Cambridge University Press, pág. 77, ISBN   9780521762687.
  4. Gersting, Judith L. (2006), Estructuras matemáticas para la informática (6.ª ed.), Macmillan, pág. 519, ISBN   9780716768647.
  5. 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.
  6. 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  .
  7. 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.
  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  .
  9. Halftermeyer, Pierre, Conectividad en redes y esquemas de etiquetado compacto para la planificación de emergencias , Universidad de Burdeos.