¿Existe un algoritmo para mantener eficientemente la información de conectividad para un DAG en presencia de inserciones / eliminaciones?


17

Dado un gráfico acíclico dirigido, , ¿es posible soportar eficientemente las siguientes operaciones?G(V,E)

  • : determina si hay una ruta en G del nodo a al nodo bisConnected(G,a,b)Gab
  • : Agrega una arista de a a b en el gráfico Glink(G,a,b)abG
  • : elimina el borde de a a b en Gunlink(G,a,b)abG
  • : Agrega un vértice a Gadd(G,a)
  • : elimina un vértice de Gremove(G,a)

Algunas notas

  • Si nosotros no permitidos , parece que sería fácil para mantener la información de conexión, utilizando una estructura de tipo de datos inconexos-set.unlink
  • Obviamente, podría implementarse utilizando la búsqueda de profundidad o amplitud, utilizando la ingenua representación del gráfico basada en punteros. Pero esto es ineficiente.isConnectere

Espero un tiempo logarítmico o constante amortizado para las tres operaciones. es posible?



1
¿Podría explicar cómo resolver el caso más simple (sin desvincular) utilizando una estructura de datos de tipo conjunto disjunto?
jbapple

@ Tsuyoshi: los enlaces sobre esa pregunta parecen interesantes, los estoy mirando ahora.
Justin Kilpatrick

(1) Está buscando un algoritmo de gráfico dinámico para alcanzar directamente con la restricción de que el gráfico es un DAG. Si no me equivoco, la accesibilidad dinámica dirigida es mucho más difícil que la contraparte no dirigida, pero aquí la propiedad DAG podría ayudar. (2) ¿ removeTambién elimina los bordes incidentes? Si es así, requerir que esa operación sea tiempo O (log n) podría ser demasiado esperar ...
Tsuyoshi Ito

Respuestas:


19

El problema que ha descrito es el alcance de DAG totalmente dinámico (también denominado cierre transitivo completamente dinámico en DAG). Se llama totalmente dinámico, ya que las personas también estudian las versiones donde solo son posibles las eliminaciones (luego se llama accesibilidad decreciente), y donde solo son posibles las inserciones (llamadas accesibilidad incremental).

Hay algunas compensaciones entre el tiempo de actualización y el tiempo de consulta. Sea el número de aristas yn el número de vértices. Para los DAG, Demetrescu e Italiano (FOCS'00) proporcionaron una estructura de datos aleatoria que admite actualizaciones (inserciones de borde o eliminaciones) en tiempo O ( n 1.58 ) y consultas de accesibilidad en tiempo O ( n 0.58 ) (también se admiten inserciones / eliminaciones de nodo , en O (1) tiempo); Sankowski (FOCS'04) amplió este resultado para trabajar con gráficos dirigidos en general. También para DAG, Roditty (SODA'03) demostró que puede mantener la matriz de cierre transitivo en el tiempo total O ( m n + I · n 2 + D ), dondemetronortenorte1,58norte0,58metronorte+yo·norte2+re es el número de inserciones, D el número de eliminaciones y, por supuesto, el tiempo de consulta es O ( 1 ).yore1

Para los gráficos generales dirigidos, se conocen los siguientes tiempos (actualización, consulta): (O ( ), O (1)) (Demetrescu e Italiano FOCS'00 (amortizado), Sankowski FOCS'04 (peor de los casos)), ( O ( m norte2 ),O(metronorte )) (Roditty, Zwick FOCS'02), (O (m+nlogn), O (n)) (Roditty, Zwick STOC'04), (O (n 1.58 ), O (n 0.58 )) y (O (n 1.495 ), O (n 1.495 )) por Sankowski (FOCS'04).O(nortemetro+norteIniciar sesiónnortenortenorte1,58norte0,58norte1.495norte1.495

Obtener un tiempo de consulta pollogarítmica, sin aumentar demasiado el tiempo de actualización, es un gran problema abierto, incluso para los DAG.


1
Gracias por su respuesta. Aunque tengo que decir que estoy decepcionado de lo pobres que son esos límites. :(
Justin Kilpatrick

1
Una pregunta relacionada: ¿podría señalarme alguna referencia sobre los problemas más simples, el alcance incremental y el alcance decreciente para los DAG?
Justin Kilpatrick

Esto no parece mucho mejor que el enfoque ingenuo de dfs (O(1),O(n^2))o (O(m),O(n+m)).
Thomas Ahle

4

Creo que los mejores resultados hasta ahora se discuten en "Mantenimiento de matrices dinámicas para el cierre transitivo completamente dinámico" . Ese documento discute un algoritmo aleatorio con tiempo de consulta y un tiempo de actualización O ( n 1.58 ) .O(norte0,58)O(norte1,58)

(Esto solo cubre la primera versión de su pregunta, con linky unlinkpero sin addy remove).


Sin embargo, los límites se basan en el algoritmo de Strassen, por lo que la constante es enorme.
Thomas Ahle
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.